2008/06/08(日) [n年前の日記]
#1 [iappli][prog] ビルボードとして扱うポリゴンだけを除外するPerlスクリプトを作成
手順としては、Materials を順に調べて、マテリアル名に「.*billboard.*」とつけてあるマテリアル番号を記録。
*1
そのマテリアル番号を使ってるポリゴンを、Polygons の中から探し出してコメントアウトする Perlスクリプトを作成。PAC、PVMicro に読ませた限りでは、該当ポリゴンだけ消えているように見える。今のところ上手くいってる、かもしれず。
とはいえ、これはあくまで仮対応。出力された .bac中には、ビルボードとして扱うポリゴン中でしか使っていない、頂点情報、UV情報、マテリアル情報、Bones情報等が未だに含まれているわけで。おそらく、実機上で .bac 中に含まれている情報を扱おうとした場合、列挙されてる全ての頂点情報をまとめて座標変換してから後になって使ったりするのではないかと想像するわけで、つまりは表示に使っていない頂点情報その他をモデルデータ中から除外しておかないとその分無駄に計算をすることになりそうな。しかし、一部の頂点情報を抜き出したりすると、頂点番号やUV情報番号が全部ずれていってしまうわけで。そのあたりの辻褄合わせをどうするかで悩んでしまったり。また、ビルボードは、アプリ側がプリミティブの形で発生させていく予定なので、ビルボードの情報を別ファイル、あるいは独自データ形式で取り出しておかないといけない。この場合も頂点情報その他がずれてくるわけで…。うーん。
ちなみに。今のところ、Perlスクリプトによる .bac の解析時は、ひたすら配列の中に文字列情報として格納していくというトホホなやり方でやっていたり。例えば、
とはいえ、これはあくまで仮対応。出力された .bac中には、ビルボードとして扱うポリゴン中でしか使っていない、頂点情報、UV情報、マテリアル情報、Bones情報等が未だに含まれているわけで。おそらく、実機上で .bac 中に含まれている情報を扱おうとした場合、列挙されてる全ての頂点情報をまとめて座標変換してから後になって使ったりするのではないかと想像するわけで、つまりは表示に使っていない頂点情報その他をモデルデータ中から除外しておかないとその分無駄に計算をすることになりそうな。しかし、一部の頂点情報を抜き出したりすると、頂点番号やUV情報番号が全部ずれていってしまうわけで。そのあたりの辻褄合わせをどうするかで悩んでしまったり。また、ビルボードは、アプリ側がプリミティブの形で発生させていく予定なので、ビルボードの情報を別ファイル、あるいは独自データ形式で取り出しておかないといけない。この場合も頂点情報その他がずれてくるわけで…。うーん。
ちなみに。今のところ、Perlスクリプトによる .bac の解析時は、ひたすら配列の中に文字列情報として格納していくというトホホなやり方でやっていたり。例えば、
( Materials ( material ( blendMode normal ) ( doubleFace false ) ( transparent false ) )という情報があったら、
Materials,material,blendMode normal,doubleFace false,transparent falseという文字列にして配列にひたすら突っ込む、みたいな。…真っ当なPerlスクリプトとして書くとしたら、どんな風に書けばいいんだろう。さっぱりわからん…。
*1: マテリアル名は blender 上で指定しておく。
[ ツッコむ ]
以上、1 日分です。