mikoto

アンカーの判別処理を書いた。

判定アルゴリズムは、ある頂点に対してアンカーを構成するすべての三角形の平面の陰関数を解いて すべてが正、もしくは負であればアンカーの中にあるとみなすというもの。 を各三角形について算出(a, b, c, d値を求める)しておいて、対象の点(x, y, z)を代入…

unittest重要w

やっとmkmの読み込み処理が完成した。 しかし、恐ろしい試練だった。 要は、クォータニオンを右からかけるか左からかけるかという 一貫性の問題だったわけだがこれを修正するのがえらく難航。 DirectXとかを使っていれば多分起きない問題だが、 自前で数学ラ…

掌性が違う

D3DXQuaternionRotationAxisは関係なかった。 180度も関係ない。 うまくいかない原因は掌性の食い違いにありそうだ。 mqoが右手系なんで迂闊にもmkmも同じ掌性だとばかり思っていたがそうではないようだ。 mikotoはたぶんDirectXで書いているので左手系を使…

180度の回転がうまくいかない

mikoto形式のボーン読み込みは概ねできたのだが、 ボーンの第3の点(H点)が親と反対側についたときに生じる Z軸に対する180度回転を含む回転がうまく解決できない。 mikotoに記述されているクォータニオンと違う値になって あらぬ方向に曲がってしまう。 180…

mikotoのキーフレーム復元に成功

クォータニオンに不慣れなのもあって大きく手間取ったが なんとか前進。 まだ、浮動ボーンの扱いなどにおかしなところがあるようだが、mikotoフォーマットについて忘れないうちにメモしておく。 mkmファイルのQuaternionに記録されているキーフレーム値 # 例…

頓挫中・・・

うぅむ。 勘違いしていそうなところがひとつわかった。 進めるかもしれん。

スケルトンのツリー表示

モーションの続きを進める前にリファクタリングと表示強化。ソースはこちら。 http://github.com/ousttrue/kugutsu/tree/masterwxWidgetsなのでビルドが面倒だけども

骨回転練習

功夫が不足したのでちょっと練習。 シンプルに再帰で実装。 一つ上までの累積クォータニオンとカレントのクォータニオンの取り回しが肝の様子。 ボーンひとつの最小限のデータは、 ひとつ上のローカル座標でのボーンの始点とボーン自身の回転情報っぽい。 参…

mkm形式の初期値

mkmの読み込み結果からクォータニオン適用をはじめようと思ったのだが まだ仕様が不明確な要素があった。 まず、Quaortenionの4つの要素が実部->虚部の順に並んでいるのか虚部->実部の順に並んでいるのかわからん。 試しに二つの棒をつないだだけのモデルを…

ボーンの再構成まで実装

ボーンオブジェクトからのツリー構造の再構成に成功した。 これを適当なポリゴン(いわゆるボーン風味のもの)で実体化させれば mqoからのボーン読み込みという段階は完了。 bone kosi momo[] hiza[] sune[] kurubusi[] asi[] tumasaki[] momo[] hiza[] sune[]…

mkmのモーション読み込み設計

前回まででボーン読み込みを実装し終わったのでようやく本題のモーション実装に入る。まず、mkmのパースと格納。 ボーン名とフレーム数をキーにボーンの回転情報をデータとしてフラットにベクタに突っ込むとしよう。 バイナリサーチできるように名前とフレー…

mqo読み込みからのボーン構築

mkmを読み込んでクォータニオン回転とか書いてみようと思ったら、 mkmにはボーンの構成に関する情報が一切含まれていなかった。 親子関係くらい書いてあれば便利な気もするが、 フォーマットが複雑になる(ネストするか参照番号を振る必要があるか)し mqoに書…

mikoto形式下調べ

プログラムを書く前に情報収集。mikoto形式によるモーションは、ある規則に従ったmqoと それに対するモーション(1フレームだとポーズ?)を記述するmkmファイルの2つから構成されるらしい。mqoには通常のモデルに加えてボーン形状と、 ボーンの影響範囲を表す…