夜風のMixedReality

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

HoloLens 2でオブジェクトを回転させずに動かす

本日はMRTK調査枠です。

MRTKではMixedRealit世界でHandTrackingを用いてユーザーの手を使用してオブジェクトを動かすための機能があります。

〇オブジェクトを動かす。

①移動させるオブジェクトを用意します。 今回はUnity プリミティブ3DオブジェクトのCubeを使用しました。

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

②Cubeに握るという動作を検知するための[NearIntaractaractionGrabbable]コンポーネントをアタッチします。

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

③Cubeにオブジェクトを動作させる[ObjectManipurator]コンポーネントをアタッチします。

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

④エディタ上で動作を確認します。

f:id:Holomoto-Sumire:20201104220343g:plain

これでCubeをつかんで動かすことができるようになりました。

〇回転の制御

 上記のままではオブジェクトは動かすことができるものの手の傾きに合わせて回転してしまいます。

 これは例えば現実のコップのようなオブジェクトの場合回転を加えてユーザーの思うままに近い形で操作できますが、場面によっては回転を行わないようしたい場合があります。

例としてUIボードを動かすことを考えます。

ユーザーがUIボードをつかんで任意の場所に配置することができますが、上記のCubeのような設定のままでは文字やボタンが水平に配置することが難しいです。

そこで今回はユーザーがオブジェクトをつかんで動かす際の回転の制御を行います。

①[ObjectManipurator]コンポーネントの[Constraints]で[RotationAxisConstraints]を追加します。

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

②Cubeオブジェクトに[RotationAxisConstraints]コンポーネントが追加されます。

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

これが回転を制御するコンポーネントになります。

③[RotationAxisConstraints]コンポーネントを以下のように設定します。

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

・[Target Transform]に自信をアタッチします。

・[Constraint On Rotation]を[Everything]に設定します。

 これですべての軸に対して回転が行われない設定となりました。

この状態で実行します。

f:id:Holomoto-Sumire:20201104221841g:plain

以上でオブジェクトを回転させずに動かすことができました。