« GUI部クラス図 | メイン | Xファイルからボーンリンクの読み込み »
2005年03月12日
Teaspire 開発日誌:: Xファイルコンバーター拡張
Tweet @jin1016をフォローコーディングしたくなってきたので、Xファイルのコンバーターを拡張することにした。
LAMPについているものでは、剛体しか変換できない。
せめて、ボーンを持ったモデルとアニメーションぐらいは変換できて欲しい。
そうすれば、他のツールからの読み込みも何とかなるはず。
DXのSkinnedMesh サンプルとLAMPのXファイルコンバーター、LAMPのシーン読み込み部のソース、テキストシーンファイル、Xファイルを参考に書いていくことに。
SkinnedMesh では、描画を行うために読み込み時に描画に必要なデータへの変換なども行っている。
なので、この辺りは省かないと。(残してもいいけど、やはりソースは少ない方が見通しがいい)
DXの場合、ボーンの位置はマトリックスで持っているが、LAMPは回転、拡縮、位置で持っている。
確か、マトリックスを分解する関数がD3DXにあったはずと調べる。
D3DXMatrixDecompose だ。
でも、回転はクォータニオンで得られる。
クォータニオンからオイラー角に変換する関数は・・・ ない!?
どうしよう。
LightWaveのシーンやオブジェクトを読み込むライブラリの中に変換する関数があったような・・・ あれ? LAMPにあったかも。
Quaternion::getRotationXYZ だ。
良かった。
これは何とか変換できそうだ。
LAMPのボーンのInversePoseMatrixって何だろう?
例によってdoxygenドキュメントではポーズ逆行列と書いてあって当てにならない。
たぶん、ボーンのオフセットマトリックスの逆行列だろう。
ボーンのローカル座標系に変換するのに使う物だと考えられる。
そういうことにして進めることにする。
投稿者 Takenori : 2005年03月12日 11:47
comments powered by Disqus