2020年9月10日木曜日

バインドされたモデルで確認したい事

モデリングにスカルプトツールを使うことが当たり前になり、更に物理ベースレンダリングが流行りだしてからは、プロシージャルテクスチャツールなんかも使わないといけなくなったりしてと、いろいろなツールをまたいでモデラーさんは大変だなぁと思う昨今、チェックとかの確認事項も多くなった気がします。


ジョイントに関していうと階層構造や座標なんか、パッと見て判断しやすい部分もありますが、「ジョイントの方向」「回転順序」「回転軸」「セグメントスケール補正」みたいな確認しづらい部分が大半だったりします。
だから、getAttrとかでアトリビュートの値を羅列するスクリプトを作ってエラーチェックをするのですが・・・。でも、これは名前を知っているアトリビュートを指名して確認するので、未知のアトリビュートに対しては漏れる可能性があります。

まぁ、内製ゲームエンジンのためのカスタムアトリビュートを追加していたりすると、それ用のツールを作っていると思うので忘れないと思いますが、外部へ素材を渡すとか、外部から受け取るとかした場合には厄介です。
外部へ渡す場合、大抵、偉い人だけで勝手に行ったりするので、社外秘なパラメータとかあったらどうするんだとドキドキするんですが、受け取る場合はどんなことをしているのか片鱗が見えたりするので楽しいです。


ここで、スカルプトツールやプロシージャルテクスチャツールに関わってくる話。
mayaとコレらのツールとのやり取りで使われるのが FBX形式だったりします。Alembic もありますが、あまり有名ではなさそう。で、このFBX、素知らぬ顔でカスタムアトリビュートを追加していたりします。
しかも、隠しアトリビュートになっているため、アトリビュートエディタの Extraフレームには表示されません。
では、どこで確認するのかというと、メインメニューの Modify から Edit Attribute... や Delete Attribute... で確認できます。

ジョイントの一部または全体を選択してから、上のツールを実行すると、こんな風にアトリビュートが確認できます。
Edit Attribute の場合

Delete Attribute の場合

filmboxTypeID というアトリビュートが、FBX形式を経由することでジョイントに追加されます。短縮名は fbxID。
厄介な事に、スカルプトツールやプロシージャルテクスチャツールによっては、このアトリビュートの大文字・小文字が違っている場合があるんですよねぇ・・・。FilmboxTypeID みたいに。こうなっていたりすると、短縮名になってくれない。
あまり重要ではないのにファイルサイズだけは大きくなるので、除去したいアトリビュートです。

特にモデリングの部署だけでスケルトンの流用するとかされると、知らずにやっちゃうんで、感染拡大が起き易かったりします。
スケルトンの流用でいえば、余分なアトリビュートの無い、素のジョイントにしてあった方が良いので、ジョイント階層だけを出力して、最終的には秀丸エディタとかで編集するのが最強だったりしますね。
uuid,radius,bindPose,lockInfluenceWeights,RotateLimit,objectColor
override関係であったり、display関係のアトリビュートも除去対称。
ジョイントは何百個もあったりするので、秀丸マクロで処理します。

0 件のコメント:

コメントを投稿