前回、少し調べたGTAVのSkinMODですが
よくよくフォーラムを見ると
MAXスクリプトの方はExport問題で半年以上議論されてるみたいですし
Zmodelerはシェアウェアでちょっと扱い辛いってなもんで
これはちょっと未来は暗いなってな事を思い
ちょいとOpenIVで変換される、テキスト形式のフォーマットを調べてみましたよ
変換される形式は
oddという管理ファイルとodrというシェーダー関連の管理ファイル
Skelという骨構造を記載したファイル
Meshってなジオメトリ情報を記載したファイルってな感じです
各自、中身を見てみると
odrファイルはこんな感じで
多分、使用するシェーダーを指定し、パラメーター部分に数値を渡す部分と
スキンメッシュかの判定ってな感じでしょうかね?
LOD部分がちょっと解りませんが、名前からするにLODでしょうね
となると、距離を判定するためにバウンディングボックス(AABB)とスフィアの数値
High、Mid、Lowメッシュを横に記載してる数値(距離)で変換するってな事でしょうかね?
複数のMODをダウンロードしてみましたが
LODの設定をやっている物は無く、全てHighメッシュで管理してる感じでした
続いて、Meshファイル
最初にジオメトリ情報が記載されていて
各パーツのバウンディングボックス情報が書かれてる感じ
LockedとMaskの意味が解りませんが
Maskはポストエフェクトに関係してくるのかなぁ~ってな思い込み
んで、頂点インデックスが書かれた後
頂点情報が書かれている感じ
頂点情報を細かく見てみると
想像ですが
1が頂点位置、2が合計1になることからスキニング値
3がボーンインデックス、4がおそらく法線、5、6が不明、7がUVかな
って思います
5と6が不明ですが
ダウンロードした全てのMODで共通した数値なので、無視してもOKなのかも?
ShaderIndexはジオメトリの情報が変わるごとに+1になる感じ
Flagsはちょっと解らないってな感じですよ
頂点やUVごとにインデックスが無いので、そこのところ注意ってな感じでしょうかね?
何回も書きますが
XSIはC#がアクセスできる範囲だと同じ情報がマージされた頂点情報を保持してないので
(C++はアクセスできる)
頂点情報の結合と、頂点インデックスの並び替えで時間がかかる感じかなぁ・・・
んで、最後にSkelファイル
まぁコレは大抵の骨情報と一緒ですが
DataCRCとFlagsとMirrorBoneIDってのがちょっと解らない感じですかね
Flagsに関しては移動や回転の記載っぽいので
Ragdoll等、物理に預けた時にどう動かすのか?ってのなのかなぁってな想像
MODなんで骨を換えるって事は無いだろうから
どちらも、そのまま記載すれば良いのかなぁ?ってな事を思いますよ
あとはChildrenの横の数値が、直下の数ってのが注意どころでしょうかね?
X形式でもあった、この「」で決めていくやつは
テキストの並び替え等、かなり面倒なので嫌いなタイプのやつですね
スケールに値が入ってるのも気になるところでしょうかね
と、まぁこんな感じで調査してみましたよ
Exporter自体はDirectX形式のExporterを作った時のを
少し改造すれば、結構早くできそうですが
問題はマテリアル設定等をDCCTool側で完結しないとダメだった場合
そこのサポートも作らないといけないのはちょっと面倒だなぁって思いますよ
シェーダーを用意して必ずそれを使うようにするってな感じだったら
相当楽に作れますがね
あとは、素の骨をどうやって用意するかってのもありますね・・・
いかんせん、こういったジャンルはお仲間が欲しい所
一人だとモチベーションが保たないってなもんですよ
—追記—
Last of UsのMODを見たところ
頂点情報はちょっと増えてるし
骨も20個ほど増えてる事が判明!
だめじゃん!!
コメント