この記事のゴール

MetaQuest3でVRデモ 2. Cubeをつかむ and 投げるで実装した内容をCubeでなくBlenderで自作したモデルで実装する.

MetaQuest3でVRデモ 1. VRゴーグルでUnity初期画面を映すの実装が完了している前提で説明しています.まだの場合はこちらをご覧ください.

Blenderでの操作

かつて作っていたおサボり白ピクミンのモデルで実装.(公式がこのポーズのフィギュアを発売するのを待ち続けている)

すべてのメッシュを統合してから,fbxファイルとしてエクスポートする.回転やスケールはUnity側で調整するので,ここではそこまでシビアに調整しなくていい.

Unityでの操作

ProjectのAssets内に新しいフォルダとして「3Dmodel」を作成.任意だが後々データが散逸しないように.
fbxファイルをProjectのAssets > 3Dmodel内にドラッグアンドドロップで追加する.
更に,Assets > 3Dmodel内のモデルをHierarchyの空いたところにドラッグアンドドロップで追加.位置,角度,スケールを適宜調整する.

Hierarchyの3Dモデルを右クリックし,Interaction SDK > Add Ray Grab Interaction
このとき,セットアップウィザードでRigidbodyとBox Colliderも追加する.その後,Inspectorで以下のように修正.

  • Rigidbody:Use Gravityにチェック,Is Kinematicのチェックを外す
  • Box Collider:Is Triggerのチェックを外す ※チェックしているとRigidbodyの衝突判定が無効化される

この状態でビルドすると,自作3Dモデルを掴んで投げられる.オリマーさんやアルフ君,新米救助隊の気分を味わえる.

Box Colliderでなく,ほかのコライダーにしたい場合

  1. 3DモデルのInspectorからBox Colliderを削除(右上の…をクリックし,Remove Component)
  2. Add Componentからほかのコライダーを追加 ここではMesh Colliderを追加
  3. Mesh Collider内のConvexにチェック.凸包処理がされ,そのメッシュが当たり判定となる.
  4. Hierarchyの3Dモデルの子のISDK_RayGrabInteractionをクリック.
  5. Inspector内のCollider Surfaceを展開し,Colliderの右枠をクリックして3Dモデルを選択する.

左がBoxCollioderで右がMeshCollider.3Dモデルの形状によってはBoxCollioderでは当たり判定が広くなりすぎることもある.
コライダーを追加していないと当たり判定がつかないので,掴むこと自体が不可能になる.
Add Ray Grab Interactionでは自動的にコライダーに紐づけしているが,コライダーを変更したので再度手動で紐付けしている.