本日はMRTK調査枠です。
MRTKではMixedRealit世界でHandTrackingを用いてユーザーの手を使用してオブジェクトを動かすための機能があります。
〇オブジェクトを動かす。
①移動させるオブジェクトを用意します。 今回はUnity プリミティブ3DオブジェクトのCubeを使用しました。
②Cubeに握るという動作を検知するための[NearIntaractaractionGrabbable]コンポーネントをアタッチします。
③Cubeにオブジェクトを動作させる[ObjectManipurator]コンポーネントをアタッチします。
④エディタ上で動作を確認します。
これでCubeをつかんで動かすことができるようになりました。
〇回転の制御
上記のままではオブジェクトは動かすことができるものの手の傾きに合わせて回転してしまいます。
これは例えば現実のコップのようなオブジェクトの場合回転を加えてユーザーの思うままに近い形で操作できますが、場面によっては回転を行わないようしたい場合があります。
例としてUIボードを動かすことを考えます。
ユーザーがUIボードをつかんで任意の場所に配置することができますが、上記のCubeのような設定のままでは文字やボタンが水平に配置することが難しいです。
そこで今回はユーザーがオブジェクトをつかんで動かす際の回転の制御を行います。
①[ObjectManipurator]コンポーネントの[Constraints]で[RotationAxisConstraints]を追加します。
②Cubeオブジェクトに[RotationAxisConstraints]コンポーネントが追加されます。
これが回転を制御するコンポーネントになります。
③[RotationAxisConstraints]コンポーネントを以下のように設定します。
・[Target Transform]に自信をアタッチします。
・[Constraint On Rotation]を[Everything]に設定します。
これですべての軸に対して回転が行われない設定となりました。
この状態で実行します。
以上でオブジェクトを回転させずに動かすことができました。