夜風のMixedReality

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

HoloLens2アプリのチュートリアルその⑩

Microsoftのドキュメント[Microsoft Docs]ではHoloLens 2の入門チュートリアルが公開されています。

ツールのインストールから詳しく掲載されているためこちらを今回勉強しながらHoloLens 2が手元にないためHoloLens 1stで動かしてみます。

 チュートリアルは以下で公開されています。

[docs.microsoft.com

〇3D オブジェクトの操作

 前回まででチュートリアル用のアセットをインポートし、オブジェクトを配置し[GridObjectCollection]を使用し等間隔に。配置のレイアウトを行いました。

 今回はすべての3Dオブジェクトを操作できるようにします。

 これを行うためには、主に次の手順を行います。    ・すべてのオブジェクトに[Manipulation Handler]コンポーネントを追加します。

 ・ [Near Interaction Grabbable]コンポーネントを prefab オブジェクトに追加します。

 ・[Manipulation Handler] コンポーネントの構成

●1. Manipulation Handler コンポーネントをすべてのオブジェクトに追加します。

 [Hierarchy] ウィンドウで、チーズオブジェクトを選択し、 shiftキーを押しながら、 Cube オブジェクトを選択して、[3DObjectCollection]の子オブジェクトすべてを選択します。

 [Inspector]ウィンドウから[Add component]より[Manipulation Handler]コンポーネントをすべてのオブジェクトに追加します。

f:id:Holomoto-Sumire:20200318080306j:plain

  このチュートリアルのオブジェクトではすべてのオブジェクトに最初から当たり判定である[Collider]がアタッチされていますが、自身で作成したオブジェクト等で[Collider]が最初からアタッチされていないものもあります。ほかのオブジェクトを使用する場合[Collider]がアタッチされていることを確認してください。

f:id:Holomoto-Sumire:20200318080826j:plain

●2. Near Interaction Grabbable コンポーネントを prefab オブジェクトに追加する

[Hierarchy] ウィンドウで、チーズ オブジェクトを選択し、 shiftキーを押したまま、モジュール オブジェクトを選択し、Cubeオブジェクト以外のオブジェクトを選択します。[Near Interaction Grabbable]コンポーネントを選択しているすべてのオブジェクトに追加します。

f:id:Holomoto-Sumire:20200318081148j:plain

●3. Manipulation Handler コンポーネントを設定する

 操作を行うための機能である[Manipulation Handler]では対象に対してどのように操作を行うかを設定できます。

 ・操作の対象をスケールのみに制限する

 Cube (1) オブジェクトの[Two Hand Manipulation Type]を[Scale]に変更し、ユーザーがオブジェクトのサイズを変更できるようにします。

f:id:Holomoto-Sumire:20200318081913j:plain

 ・ユーザーからの一定の距離以上の移動を制限する

 Cube (2) オブジェクトに、[Constraint On movemer]を[Fix Distance From Head]に変更します。これでオブジェクトが移動されたときに、ユーザーからの距離を維持したままにします。

f:id:Holomoto-Sumire:20200318082332j:plain

 ・デフォルトの grabbable 操作

 チーズ、 CoffeCup、およびEarthCoreオブジェクトは、すべてのプロパティをデフォルトのそのままにしてGrabbable(つかむ) 操作動作を体験できるようにします。

 ・遠くの操作の機能を無効化する

 Octaオブジェクトは、[ Allow Far Manupuration ] チェックボックスをオフにして、ユーザーが追跡したハンドを使用して直接オブジェクトと対話できるようにします。

f:id:Holomoto-Sumire:20200318082929j:plain

 ・オブジェクトを中央に回転させる

 Platonicオブジェクトは、[One Hand Rotation Mode Far]と[One Hand Rotation Mode Near]を[Rotate About Object Center]に設定します。これにより、ユーザーがオブジェクトを回転させると、オブジェクトの中心を中心に回転します。

f:id:Holomoto-Sumire:20200318083516j:plain    ・オブジェクトがリリースされた後も移動を続ける

 モジュールオブジェクトは、 [Rigidbody]コンポーネントを追加して物理演算を有効にします。次に、オブジェクトが重力の影響を受けないように、[Use Gravity]チェックボックスをオフにします。

f:id:Holomoto-Sumire:20200318083713j:plain

RigidBodyはUnityにおける力の機能です。 [Use Gravity]のチェックを外すことで下向きの力の重力としてではなく、様々な力として使用できます。

 Manipulation Handlerコンポーネントに戻り、[Physics]の[Release Behavior]が [Keep Velosity] に設定されていることを確認し、オブジェクトがユーザーから解放された後も移動し続けるようにします。

f:id:Holomoto-Sumire:20200318084035j:plain

以上でManipulation Handler の設定が終了しました。