World Tool Kit覚書
~ 3dsMaxで作った動きをWTK上でも再生しようぜ ~
1. 3dsMaxでてきとーにパス上を流れる動きを作成。
2. 書き出し -> ASCII形式を選択 -> なんかこのへんは忘れたけど精度6桁で出力
3. 出来た.ASEファイルを俺式コンバータ(後述)でWTK用の形式に変換
4. WTK上で動かすには「移動ノード」「モーションリンク」「パス」の三つを生成する必要がある。
4.1. 「パス」の生成。
WTpath *Path; /* パス */
WTgeometry *marker; /* マーカー用ジオメトリ */
path = WTpath_load("ファイル名.ASE",NULL);
/*** ついでにパス可視化 ***/
/* マーカー用box生成 -> パス可視化のためのマーカーセット -> マーカーを可視化 */
marker = WTgeometry_newblock(1.0,1.0,1.0,NULL);
WTpath_setmarker(Path,marker);
WTpath_setvisibility(Path,TRUE);
4.2. 「移動ノード」の生成
WTnode *Move; /* 移動ノード */
Move = WTmovnode_load(親ノード,"ファイル名.3DS",1.0);
4.3. 「モーションリンク」の生成
WTmotionlink *motion;
motion = WTmotionlink_new(Path,Move,WTSOURCE_PATH,WTTARGET_MOVABLE);
5. これで「移動ノード」->「モーションリンク」->「パス」の繋がりが完成したので、
WTpath_play(Path)で動かせばいいじゃん。
[俺式コンバータ概要]
3dsMaxから書き出したものは座標をPOSが入ってる文、回転をROTが入ってる文で記述してある。
ex)
*CONTROL_POS_SAMPLE 0 -6.839744 7.298635 -16.181553
*CONTROL_ROT_SAMPLE 160 -1.000000 0.000000 0.000000 0.000391
POSはX,Y,Zの三元、ROTは4元数である。
そんなこんなに気をつけて、SAMPLEのすぐ横の数字が同じPOSとROTを交互に配置すればいいじゃない。
ex)
POSI -6.839744 7.298635 -16.181553
ORIE -1.000000 0.000000 0.000000 0.000391
あとは……、一番頭になんか記述して、二行目に全部のPOSIとORIEの数を書くべし。
数値の間はタブから半角空白へ。POSIの後は半角スペース二つ。
とりあえずここまで。
追記 とんでもねー。このままじゃつかえねーよ。
|