2008年9月26日金曜日

バグとの戦い

とりあえず、モデル完成?
Nima1.04のバグが多すぎて困る。新しいバージョンを公開してほしい。(公開してもらってるだけありがたいか…)
goal orientとDrive Springを設定しているにもかかわらず、関節が動かない時がある。その時は、Degrees of Freedome and limitsの設定を一度全部freeにしてから、元の設定に戻してやると動くようになる。その他にもMayaを落とすバグが数多くあり、こまめにセーブしながら作業する必要がある。
あと、セーブしたファイルをロードするとrigid constractがどこかに飛んでモデルが崩れている時があるが、Rigid Constractを平行移動→元に戻す(Ctrl+z)で元に戻る。

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のようなモデルはできる

2008年9月13日土曜日

ありがたや

K大学からK先生がいらっしゃって、色々研究で困っている事を相談した。
K先生に相談したのは、色々な転倒事例を記した論文をどのように分析してプログラムのパラメータとして与えるべきであろうか、という事である。K先生は、どのような状況下の時にどのようなこけ方をするかを与えるのは一般化して、データさえ揃えばシミュレーションできるぞっていう所まで示したら良いのではないかとご助言いただいた。確かにそれならできるかもしれない。そのシステムを構築した後に、そのシステムで全ての転倒をカバーしてるっていう事を示すべきだとも忠告していただいた。なんか、以外な方向からの答えだったので驚き。偉い人は違うなぁ。

2008年9月10日水曜日

Maya(Nima)→→[[Collada]]→→ColladaLoader

ひたすら、PhysXのMayaプラグインNimaを扱っていた。
ほとんどMayaを使ったことが無いので、色々苦労したが結構わかってきた。

lamp.mbとragdoll.mbを参考にRagdollのモデルに、キーフレームで作った動きをさせたいと考えている。まず、人体のスケルトンをコピーして、ragdollの横に配置。そのスケルトンはお手本となるキーフレームを持つスケルトンである。そして、お手本スケルトンの各リグのrotationの成分を、ragdollのconstraint内のgoal orientationに設定する。(ハイパーグラフ(connection)でお手本スケルトンのリグ内のrotation成分を、constraintのgoal orientationに連結する)そして、Drive spring twistとかDrive spring swingとかに適当な値を設定する。そうすることで、現在のキーフレームの動きポーズになるように、間接部分に力がかかる。(モーターを使ってる)
ただ、サンプルについていたRagdollのconstraintでその操作を行ってもうまくいかない。。。何故かわからないがconstraintを新しく作り直すとうまくいく。意味がわからない。また、colladaに吐き出した時に、このragdollのスキンがcolladaLoaderで表示できない。色々わからない部分があり、詰まり気味。

2008年9月3日水曜日

連結

ひたすら、ColladaMayaで吐いたColladaファイルを見ていた。
キーフレームを持ったモデル(Lamp.ma)から作ったLamp.daeだが、それをMayaで読もうとすると問題あり。Lamp.ma内には2つのラ ンプがある。キーフレームだけで作っているランプは問題ないが、キーフレーム+PhysXのモデルの方のキーフレームの要素がなくなっている。 Lamp.maのDGを見てみると、キーフレーム+PhysXのモデルは、キーフレームだけで作っているランプのアニメーションを参照しているようだ。ど うやら、この部分の連結がうまくいってないらしい。その連結を考慮したLoaderにするべきのようだ。