CrossRoadスマートフォン用の表示で見るCrossRoadAR、MR、VR、Babylon.jsを中心とした技術ブログ。Academyについてです。前回まではこちらです。「Hologram101」が未完の場合、先にChapter3のGesturesだけでも確認することをお勧めします。210とベースが同じですので、先に210を試していると理解が早まります。こちらもご参考ください。211」を開き、プロジェクトをダウンロードします。210のときと異なり、今回はunitypackageではなくUnityプロジェクトの形で提供されています。Unityで開いて、これまで通りにビルド、実機転送をすればOKです。feedbackこれは、手を検出したことを示す機能です。ViewのManagersオブジェクトにHandsManager.csを追加します。次に、CursorオブジェクトにCursorFeedback.csを追加します。Feedbacコンポーネントには、2つのオブジェクトを追加します。残り二つはNoneになっていますが、この時点ではこのままで問題ありません。この後、Unityでビルドして、HoloLens実機で試すと、手を認識した時だけアイコンが変化します。この例ではAstromanをGazeしている時だけです。動画の最後でAstromanからGazeしていない時に手を出していますが、これはカーソル変化していません。Navigationこれは、Chapter1で示したGazeによるアイコン変化の後、AirTapのドラッグによりオブジェクトを回転させる機能を紹介しています。CursorオブジェクトのInspectorを開き、HoloToolkit\Input\PrefabsのScrollFeedbackをドラッグします。AstromanのInspectorを開き、Scripts/GestureAction.csをドラッグします。イベントを扱うためにGestureManager.csを修正します。完成版をgistに置きました。これはHologram101のChapter3の紹介でも解説した、UnityEngine.VR.WSA.Inputの中にあるUnity標準APIです。GestureRecognizerのインスタンスを生成し、下記のManipulationRecognizer_ManipulationStartedEvenによって、IsNavigatingのbool変数を変更しています。gista1ff8d010e1957b24d38e6ff50853be3このIsNavigatingがsingletonでGestureAction.csに活用されます。次に、GestureAction.csを編集します。ここではAirTapでAstromanを回転させる処理を書いています。回転の処理はPerformRotationメソッドで実施します。8行目のif文で各変数がtrueのときに中の処理が実行されます。gist064c05a6e436eda532ac99ef4a5346a9この後、Unityでビルドして、HoloLens実機で試してみます。AstromanをGazeすると、カーソルアイコンが表示されます。GestureAction.csの処理によってAstromanを左右に回転させることができます。Guidanceこれは、ユーザーが意図と異なる方向のジェスチャをしたときに、正しい方向のフィードバックを示してくれる機能です。Guidance.csを追加します。HoloToolkit\Input\Prefabsフォルダから、HandGuidanceを追加します。続いて、Cursorオブジェクトの子であるCursorBillboardを追加します。この後、Unityでビルドして、HoloLens実機で試してみます。見づらいですが、左右ではなくわざと上に手を動かすと、下方向の矢印が表示されています。Manipulationこれは、Gazeしたオブジェクトを指でつまむようにして動かす機能です。Managersオブジェクトに、AstronautManager.csを追加します。AstronautManageクラスでは、UnityEngine.Windows.Speechの機能を使って、音声認識の単語登録を行います。単語登録と、音声認識機能の「KeywordRecognizer」クラスの開始までは下記の通りです。gistead4990d4c497494fdf9d0f4cb5ed540Hologram101のChapter4ではLINQを使っていましたが、内容的には同じです。Prefabを追加します。Manipulationの処理を追記します。この後、Unityでビルドして、HoloLens実機で試してみます。音を入れてませんが、"Move"と発声することで、カーソルが左右矢印のものから、四方矢印に変化します。Astronaut"と発声するように書いてありましたが、Cortanaで"Astronaut"を認識してくれなかったため、"Move"に変更しました。この状態でAirTapしたまま手を動かすと、オブジェクトを移動させることができます。Model"と発声することでAstromanをバラバラに分解、あるいは分解前の状態に戻すデモです。手順はシンプルで、AstronautManager.csを指定通りに修正して、音声認識をできるようにし、対応する関数を追加するだけです。チュートリアルには書いていませんでしたが、AstroManのInspectorにAstroMan_Expandedを追加しておく必要があります。AstroManをバラバラにするExpandModelCommandメソッドの処理を解説します。オブジェクトには、ExpandModel.csがアタッチされています。オブジェクトを取得し、次の三行でposition、rotation、localScaleを取得し、currentModel.SetActive(false);によって、これまでのAstroManを一旦非表示にします。次のExpandModel.Instance.ExpandedModel.SetActive(true);によって、バラバラになった場合のAstroManを表示し、同時に放射状に広がるアニメーションを再生します。バラバラになるAstroManは、AstroMan_Expandedと入れ替え表示することで実現しています。Viewに出してみました。アニメーション用のコンポーネントが付いています。Controllerを見ると、開始とともに、astro_explode_anim_clipの状態に遷移するようになっており、ここで下記のexplode_clipが再生されます。続いて、expandAnimationCompletionTimeによって、これからバラバラになる時のアニメーションの時間間隔を指定し、isModelExpandingをtrueに変更します。Updateの中では、isModelExpandingをif文の基準の一つとし、trueであればforeachで、アニメーションを無効化します。Model"と発声すると、AstroMan_Expandedを非表示にして、元のAstroManの表示を戻します。この後、Unityでビルドして、HoloLens実機で試してみます。終わりにこのチュートリアルで一番重要なのはManipulation(PCの場合、マウスのドラッグ操作相当)だと思います。Manipulationがあることで、これまでの視線方向で決定する以外に、空間に自在にオブジェクトを配置、移動できることになるからです。ここまで調べて整理したことで、HoloLensアプリ開発の方法がだいぶわかってきました。引き続き、残りのAcademyについても調べたいと思います。holograms」の解説(Chapter3まで)少し空いてしまいましたが、次は240の内容を整理しました。Academyについてです。Academyについてです。»ProfileAR、MR、VR、Babylon.jsを中心とした技術ブログです。広く色々な技術を勉強するのが好きで、あれこれ書いています。詳細なプロフィールはこちらをご確認ください。2020)■プライバシーポリシー■こちらに記載しておりますのでご確認ください。■お問い合わせ■こちらよりお願いいたします。月別アーカイブスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。