今回の内容
VR開発では、形状が複雑な形のオブジェクトを操作する場合、当たり判定が思うように設定できない事があります。
CTのDICOMデータを3Dオブジェクトに変換した場合も、同様の現象が起きる事が多いです。
拡大縮小の挙動が上手くいかないのは、オブジェクトの原点が理想的な場所に存在しない事が原因だと思われます。
モデルについて
今回のモデルは、VR医学研究会のメンバーが独自に製作したものであり、CTなどのDICOMデータから出力したものではありません。
製作者:BKNZさん、小林さん
解決策
Blenderでオブジェクトの原点(ピボット)を変更する方法も良いですが、ソフトを開いて出力する手間がかかります。
自分は今回の方法が早くて簡単だと思っています。応用すれば、掴みたい範囲や掴みたくない範囲を指定できるので凄く便利です。
PrehabをUnpackし、Meshと同じ層にCubeを配置。
*この時、間違ってCubeの配下にオブジェクトを持って行くと、形が崩れるので注意が必要です。
Cubeの大きさをオブジェクトを掴みたい範囲に大きさ調整し、重ね合わせます。
1 | 2 | 3 |
---|---|---|
そして、CubeのMaterialを透明にします。
1 | 2 | 3 |
---|---|---|
調整が終わったら、再度PackしてPrehabにしておきます。
*例えば、AssetsフォルダにドラッグアンドドロップでPackできます。
当たり判定を調整します。
CubeのみにColliderを設定し、それ以外のすべてのColliderを除去します。
これにより、Cubeのみに当たり判定が発生します。
PrehabにVrg Grabbableを追加し、RigidbodyにはIs Kinematicを設定します。
実行
補足
Mesh Colliderを使ってしまうと、余白の多い解剖モデルの当たり判定はシビアになり、扱いにくい事が多いです。加えて拡大縮小の際の処理が重たくなるので、出来るだけBox Colliderやこの手法の利用が理想的だと思います。