OCULUS INTEGRATION
INTERACTION SDKで物をつかむ編
大久保 聡
Mail ovjang@gmail.com
Twitter @followapp
環境構築
 環境設定については、PlusinとProject Settingsの一部をされりと入れていますが、細かな部分は解説
されているHomeページがたくさんありますので省略します。
 プロジェクトはURPで作成しています。
 バージョン
Oculus Inetgration 46.0
Oculus XR Plugin 3.2.1(or 1.11.2)
Unity 2021.3.12f1 (or 2020.3.29f1)
PLUGINのインポート
 Oculus IntegrationをImport
PLUGINのインポート
 Oculus XR Pluginを利用。
PROJECT設定
 XR Plug-in Managementの設定もいい感じに終わらせる。
PROJECT設定
 Oculusの設定
OCULUS INTEGRATION
新規シーン
 OVRCameraRigを検索し、シーンに追加する。
ハンドトラッキング用のOVRHANDPREFABを追加
 OVRHandPrefabを検索し、左右の手のアンカーの下に配置する。
OVRHANDPREFABの設定
 プレハブが左手設定になって
いるので、右手を設定する。
コントローラ用のOVRCONTROLLERPREFABを追加
 OVRControllerPrefabを検索し、左右のコントローラーアンカーの下に配置する。
OVRCONTROLLERPREFABの設定
 左右のコントローラーにTouchコントローラー
を割り当てる。
両手に
実施
URPプロジェクト
 マテリアルをUpgradeしてURP対応にす
る。
ここからやっとINTERACTION SDKを使う
OVRINTERACTIONを追加
 OVRInteractionを検索して追加。
INTERACTION SDK側に手の表示をゆだねる①
 OVRInteractionに、CameraRigの参照とCameraRigRefを設定する。
INTERACTION SDK側に手の表示をゆだねる②
 Interaction側で手の表示は行うため、両方の手のOVRHnadPrefabの手の表示部分を削除する。
両手に
実施
INTERACTION SDK側に手の表示をゆだねる③
 OVRInteractionの下に、OVRHmd、OVRControllers、OVRHandsを追加。
OVRCONTROLLERSの設定①
 OVRControllerDataSourceに参照を設定
両手に
実施
OVRCONTROLLERSの設定②
 DebugVisualsを非Activeに設定
両手に
実施
OVRHANDSの設定①
 両方の手のHandFeeaturesに、World Transformの参照をセット
両手に
実施
OVRHANDSの設定②
 両方の手ののOVRHandDataSourceに
両手に
実施
手でつかむ設定を入れる
コントローラでつかむ①
 ControllerGrabInteractorを検索し、ControllerInteractorsの配下に追加する。
コントローラでつかむ②
 両方の手のControllerGrabInteractorに、Controllerの参照を設定する。
両手に
実施
コントローラでつかむ③
 両方の手のCotrollerInteractorsに、追加したInteractorの参照を設定する。
両手に
実施
ハンドでつかむ①
 HandGrabInteractorを検索し、HandInteractorsの配下に追加する。
ハンドでつかむ②
 両方の手のHandGrabInteractorに、Handの参照を設定する。
両手に
実施
ハンドでつかむ③
 両方の手のHandInteractorsLeft(Right)に、追加したInteractorの参照を設定する。
両手に
実施
つかまれる側
CUBEをつかめるように①
 Cubeを作成し、RigidBodyを追加。
 落ちないようにUse Gravity=True、Is Kinematic=Trueに設定します。
CUBEをつかめるように②
 Cubeに、One Grab Free TransfomerとGrabbableコンポーネントを追加。
 GrabbableコンポーネントにTransfomerを設定。
CUBEを手でつかめるようにする
 Cubeに、Hand Grab Interactableコンポーネ
ントを追加。
 Hand Grab Interactableコンポーネントに掴み
位置とRigidbodyを設定。
CUBEをコントローラーでつかめるようにする
 Cubeに、Grab Interactableコンポーネントを
追加。
 Grab Interactableコンポーネントに掴み位置と
Rigidbodyを設定。
 手でもコントローラでも、Touch手でもつかめるようにするならば、Interactableを複数つければ良
いです。
その他のコンポーネント
Grabbable 挙動
Grabbable 空中に固定 Use Gravity = True、 Is Kinematic = True
Physics Grabbable 物理挙動をつける Use Gravity = True、 Is Kinematic = False
Grabbableコンポーネントと併用。
Transformaer 挙動
One Hand Free Transformer 片手持ち
One Hand Translate Transformer XYZの相対移動範囲を限定できる。
平面上を動かしたりする場合に利用。
One Hand Rotate Transformer 回転軸を固定、回転のPivotと回転範囲を指定でき
る。
Two Hand Free Transformer 両手持ち
PHYSICS GRABBABLEの例
 右手から左手に渡せるようにな
る?
ONE HAND TRANSLATE TRANSFORMERの例
 移動可能範囲を設定する場合は、
Consrainにチェックをいれる。
XとZを-30cm~30cmしか移動
できないようにし、Yの移動制限
はなしの場合。
TWO HAND FREE TRANSFORMERの例
 両手で握って回転や拡大縮
小させる場合。
拡大縮小に制限を設ける場
合は、Cnnstrainに値を設
定。
HAND POSEの作り方
POSE RECORDER
 Hand Grub Pose Recorderか、Hand Grab Pose Live Recorderを使う2通りの方法があります。
ポーズを作成する前準備
 mugMeshを検索し、シーン上に配置します。握れるようにGrabbableの設定を追加。
左手のポーズ作成
 Hand Grub Pose Recorderをメニューから開きます。
 Handと握られる側のRigidBodyを設定します。
ポーズをとって記録します
 UnityをPlayし、 手で作りたいポーズを演じます。
 狙いのポーズがとれたら、Hand Grub Pose RecorderのRecordボタンを押下します。
 全部のポーズが記録できたら、Save to Collectionボタンを押下します。
コレクションを読み込む
 UnityのPlayを停止。
 Hand Grub Pose RecorderのLoad From Collectionボタンを押下します。
手のポーズ設定
 親指と人差し指を固定し、他の指は自由に設定する。

Oculus Interaction SDK で物をつかむ編