2017.03.24

Lean Touch によるARアプリ内の3Dモデルをスケール、移動と回転を実装してみた


はじめに


こんにちは。次世代システム研究室のT.D.Qです。
前回は、Unity3Dと無料開発ライセンス付きライブラリ「Vuforia」でAR家具カタログの作り方を書きました。マーカー上に家具(3Dモデル)が表示された後、タッチ入力による各種ジェスチャーを簡単に扱えるとマーカー移動しなくてもゲームオブジェクト(家具の3Dモデル)を移動、回転することができたら便利ですね。ただし、Unity3Dはこの各種ジェスチャー機能をまだ正式にサポートしていないため、プログラム内でいろいろ計算しないといけないです。解決するため、TouchKit、TouchScriptを使う方が多いかと思いますが、今回のブログでLean Touchを使ってARアプリ内で3Dモデルの回転、移動、スケールなどの実装方法を紹介したいと思います。

Lean Touch


lean_touch

Lean TouchはUnity3Dのためのマルチタッチライブラリです。このライブラリを使うことで複雑なジェスチャのインタラクション・計算を簡単に対応できるし、機能単位で各コンポーネント(スクリプト)が作成されるので、使いやすいです。UnityのAsset Storeで有料版と無料版が公開されています。機能がほぼ同じですが、有料版のほうは豊富なサンプルコードが追加されています。

対応しているジェスチャ入力の一部は以下です
・FingerTap
・FingerUp
・FingerDown
・MultiTap
・Swipe
・PressSelect
特に今回使いたい連続的な入力機能
・Translate(移動)
・Rotate(回転)
・Scale(スケール)機能が揃っています。とても便利です

プロジェクトの準備

まず前回作ったARアプリプロジェクトに追加する形になりますので、ここで説明しない内容は前回のBlogを確認してください。

Lean Touchのインストール

Asset Storeから直接インポートします

lean_touch_import

3Dモデルにスクリプトを設定する


Lean Touchオブジェクトを追加する


Menu → GameObject → Lean → TouchをクリックすることでLeanTouchというゲームオブジェクトが追加されます。このオブジェクトにはあらかじめ「Lean Touch」スクリプトが設定されてます。このスクリプトがジェスチャ入力を受け取れるようにしてくるスクリプトです。

add_lean_touch_script

オブジェクトが選択可能に設定する

移動・回転・スケールスクリプトから対象オブジェクトを選択するため、設定します

lean_selectable

移動

対象ゲームオブジェクトにLeanTranslateスクリプトを設定します。コンポーネントのカメラと対象オブジェクトを設定するだけで完了。

lean_translate

回転

対象ゲームオブジェクトにLeanRotateスクリプトを設定します。プロパティーの設定は移動と同じです。
lean_rotate

スケール

対象ゲームオブジェクトにLeanScaleスクリプトを設定します。プロパティーの設定が簡単にできます。

lean_scale

アプリをビルドして動作確認

ここまでARアプリ内に3Dモデルの移動・回転・スケール機能の設定が終わります。アプリをビルドして確認しましょう。自分の端末で試したところ、オブジェクトの移動、回転、スケールは想定どおりに動いています。今回はAndroidアプリをビルドして動作確認しますが、iOSアプリでも動くはずです。特に、Unity上のプレイモードでマウスイベントが対応しているので、開発するときにまずマウスで簡単な動作確認も可能です。

最後に

いかがでしょうか? Lean TouchによるARアプリ内に3Dモデルの回転、移動、スケールなどの実装方法を紹介しました。3Dモデルにスクリプトを設定するだけで完了するのでとても便利ですね。ARアプリだけではなく、ゲームにも使えるのでぜひ試してみてください。

次世代システム研究室では、アプリケーション開発や設計を行うアーキテクトを募集しています。アプリケーション開発者の方、次世代システム研究室にご興味を持って頂ける方がいらっしゃいましたら、ぜひ募集職種一覧からご応募をお願いします。