mio-0.1ソース解読
昨日1日はPyQT4のGUI解読に費やした。今日は本丸のVMD->BVH変換部分を解読中。printデバッグを駆使しながら読んでみたところ関数間の呼び出し関係はだいたいわかった。
事前に、
http://clogging.blog57.fc2.com/
http://sites.google.com/a/render.jp/vmdimporter/Home
のblender向けのpmdインポータとvmdインポータを読んでいたので問題箇所だけに集中して読めるのは助かる。
IK解決は
vmd2bvh.py
↓
vmd_animation.get_ik_less_pose_animation
↓
キーフレーム毎に
pmd_model.get_ik_less_pose(vpd_pose)
↓
IKチェイン(IK始点ボーンからIK終点ボーンまでのchainとikターゲット)毎に
__compute_ik_chain_ik
↓
ik_armature.solve_for_pose(result_pose, chain_ik_pose, 30, 0.0001)
↓
ここでpythonのcモジュールを介してc++に処理が渡る
↓
void IKArmature::solve_for_pose(mio::rigging::Pose &result_pose, IKPose *pose, int max_iteration, float error_threshold)
というところまではわかった。
ただ、この関数を読むには位階が足りませんw
コメントにはヤコビアンなどと書いてあります。
まぁ、こんなこともあろうかと先日入手したODE本
簡単!実践!ロボットシミュレーション - Open Dynamics Engineによるロボットプログラミング
- 作者: 出村公成
- 出版社/メーカー: 森北出版
- 発売日: 2007/05/18
- メディア: 単行本(ソフトカバー)
- 購入: 5人 クリック: 89回
- この商品を含むブログ (10件) を見る
読んで理解できるかはわからないがこの辺りから逆運動学をはじめてみる。数学のターンが必要。
IKに関してはここまででいったん止めて、IK解決済みのボーンに対するスキニングの解読を先にやろう。これはプログラムの問題なので読めばわかる。