2008年9月23日火曜日

NimaでRagdoll

とりあえず、Nimaで人のモデルを作れたのでその手順をメモ。

1. モデルを作って、ボーンを割り当てる。
2. ボーンのweightを編集する。weightは後から変えられないのできちんと作りこむ。
3. 新しいLayerを作ってRigid bodiesという名前にして、そのLayerを選択しておく(省略可)
4. モデルのメッシュを指定して、PhysX->Convex Hulls->Skin Collision Volume(SCV)で衝突に使う形状を自動生成する
5. 生成された形状の頂点を編集する。関節部分にスペースができるように(曲げるため)
6. 5で編集した全Collision Volumeを選択して、PhysX->Ragdolls->Extract ragdoll meshes from SCV
7. PhysX->Ragdolls->Create ragdoll rigid bodies
8. 新しいLayerを作ってRigid Constrains、そのLayerを選択しておく(省略可)
9. PhysX->Ragdolls->Create ragdoll rigid constrains
10.できたrigid constrainsを編集する。Nimaのサンプルにragdall_scene.maがあるのでこれをお手本にしながら作る。Degrees of freedom and limitsだけでなくTransform Attribute のRotate成分も編集する必要があるので注意。Rotate成分を編集した後、rigid constrainを適当に平行移動し元に戻す(Ctrl+z)する必要がある。(何故かわからないが、それをするとrigid constrainが持つ位置・方向がそろう。)
11.全ボーンのTransform AttributeのRotate成分がrigid constrainと連結しているため、このコネクションを切る。Attribute editorのRotateの項目で右クリック->Break connectionでコネクションを切れる。
12.Collision Volumeとボーンを対応付けるため、Parent Constrainを作る。Animationのメニューに切り替えて、Constrain->Parentを選択するとParent Constrainができる。(もちろん割り当てるのはTranslationとRotate。必要に応じてx成分の連携を止めるなどする必要があるかもしれない)Nimaのサンプルにragdall_scene.maを参照しながらParent Constrainを作れば問題ない。ここで注意するのが、rigid constrainと各ボーンを割り当てるのではなく、rigid bodyと各ボーンを割り当てる事。

ここまで終えると、とりあえずサンプルragdall_scene.maのようなモデルはできる

0 件のコメント: