夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

MRTK3のサンプルプロジェクトを見る HandInteractionExamples その④ObjectManipulator

本日はMRTK3枠です。

先日に引き続きMRTKのサンプルプロジェクトであるDevTemplateのプロジェクトからHandInteractionExamplesを見ていきます。

前回はタッチによるイベントを見ていきました。

今回はオブジェクトの移動に関してみていきます。

〇ObjectManipulator

ObjectManipulatorのオブジェクトはHandTrackingもしくはコントローラーによる移動が可能なオブジェクトです。

ObjectManipulatorコンポーネントがアタッチされており、これによってオブジェクトの移動を可能としています。

また移動軸などの制限にはConstraint Managerコンポーネントを使用します。

これはAdd Constraint to GameObjectを選択することで距離、回転軸、移動軸、スケールなどそれぞれのシチュエーションの応じてConstraingコンポーネントを加えることができます。

サンプルで提供されている地球と心臓のオブジェクトではどちらもConstraintコンポーネントは使用されていません。

基本的にObjectManipulatorコンポーネントをアタッチすることでオブジェクトの移動、回転、拡大縮小が可能です。

この際にState Visualizerコンポーネントを使用してオブジェクトの状態を取得してそれぞれに応じてイベントを発火させています。

State VisualizerコンポーネントではPassiveHoverActiveHoverSelectとイベントが用意されており、それぞれホバーを受けている状態ですが、PassiveHoverActiveHoverは違いがちょっと理解できていないです。

SelectはAirTap等で選択されている状態

learn.microsoft.com

それぞれ選択されているイベントが水色で表示されます。

これはデフォルトでAnimationControllerを使用していないAnimatorコンポーネントをアタッチしているオブジェクトで動的にアニメーションクリップを使用してアニメーションを実現しています。

サンプルではOutlineを表示するアニメーションが使用されています。

〇アウトライン

心臓のオブジェクト、地球のオブジェクトともにカーソル(レイ)が合うとアウトラインが表示されるようになっています。

これはMeshOutlineコンポーネントで実現されています。

このコンポーネントはMixedRealityGraphicsToolsで提供されている機能で詳しくは以下の記事を参照ください。

redhologerbera.hatenablog.com

本日は以上です。