kumaryu日記
2008-11-25 いっぱい休んだ
_ いろいろと
金曜日も休んで四連休にしたぜ。
さすがにこれだけ休むと疲れもとれた。やっぱり疲れ溜ってたんだなぁ。
最近Windowsマシンの調子が悪い。気がつくとフリーズしてたりするんだが一体どこが原因やら。
430GTじゃねーかと言う気がするんだが気のせいだと思いたい。530GTを買えというお告げなのか!?
ちなみに530GTはOpenGL3.0対応と謳ってはいますがドライバがまだなので現時点では対応してない。っつーか430GTの違いがわかんねーんだよ!
_ デスクトップマスコットづくり
金曜日にmqoを読み込み、土日でCOLLADAを途中まで読み込み、月曜日にあきらめた<imkk。
mqo読み込み自体はさっくり行けた。
mqoを読んだのはいいんだが、連番mqoだとメモリ食いすぎて話にならんのでは、と思ってやっぱりちゃんとしたアニメーションしようと思ってCOLLADA読みはじめた。
COLLADAでシーンを一通り読めるようになって、あとアニメーションとマテリアル読んでスキニングすればオッケーだなと。
そこまで行って気づいたんだが、来月までにデスクトップマスコット作るとか無理過ぎる。あんまり作業できる時間ないし!
で、やっぱり連番のmqoとかobj読み込んで再生しようかと。
一気に全部読み込むとメモリが厳しいが、一アニメーション分ならそれほどでもないはず。
速度はあんまり気にならないはずなので頂点情報圧縮して描画のたびに展開するとか、ストリーミング再生できるようにするとか手はあるんだよな。
とにかく時間は無いので作業速度優先で。改善は後からでもできるよ!
_ [COLLADA] COLLADA読み込み
そんなわけでCOLLADA読み込みもやってたんだが。
面倒臭がらずにちゃんと読んでいったらそれほど大変でもなかった。まあ以前読んだことがあるからその積み重ねもあるのは大きいが。
以前はrubyから扱いやすいようにCOLLADA DOMみたいなのをxsdから自動生成してたんだが、とりたいデータの割にはxsdは複雑過ぎるので止めた。
子要素の名前と属性の型やデフォルト値さえあれば十分なので、xsdでなく簡単なスキーマみたいなのを仕様書読みつつyamlでちょこっと書くだけで十分だった。とりあえず必要な分だけならそれほど多くないしね。
あとはインスタンス化を強く意識したら読み込みも簡単だった。 ライブラリ内の要素はsceneからインスタンス化されるまで実体でないと。
逆にいえばインスタンス化と言うタイミングで参照の解決が出来るし、そこでは解決できるようになってないとならんのよね。
とはいえ、どうも仕様が微妙におかしい所とかやっぱりあるんだよね。instance_controllerのskeleton要素で参照できるノードはどこのノードなんだろう…。
とりあえずマテリアル、アニメーション無しのシーン描画に必要な情報をとれるようになったのに3日。まあまあじゃなかろうか。
今回は時間が無いからちゃんと全部読んで描画するのはあきらめるけど、近いうちにやりたいね。
あとBlenderからの書き出しだけど、アニメーションだかスキンだかのターゲットのジョイント名がおかしいのと、source要素の中のaccessor要素がarrayでなくsource要素を参照するという無限ループがある。他にも要素数のカウント違いがありそうだが。
まあこれくらいだったらそのうち直せそうだな。
今までよくわからなくていろいろ文句いってみたけど、COLLADAも結構良くできたフォーマットだね。
1.5の仕様書見れば補間とかスキニングの方法も書いてあるし。1.4.1までは修正分が出るまで何も書いてなかったんですが。
たまに仕様がおかしいんじゃねーのとかあるけど大抵なんとかなりはするし。
CoherencyTest通るまともなデータ書き出すツールがまだ少ないのはCOLLADAのせいじゃないし。っつーかCoherencyTestあること自体が非常に評価できる。
FBXのよくわからなさに比べればとても楽チンです。バージョン変わると互換性無いけどな。