【DazStudio】マテリアルのプリセットのdufファイルの構造

ちょっと、いろいろとあってDazStudio4.9のマテリアル情報をプリセットとして吐き出したdufファイルの中身を調査。

dufファイルは無圧縮で保存すると、ただのjson形式なので巨大ファイルに対応したテキストエディタとかでも簡単に中身を見ることができます。

また、jsonファイルはメジャーなフォーマットなのでJavaScript、Python、PHPといったプログラム言語でも広く利用できます。
{
"file_version" : "0.6.0.0",
"asset_info" : { ……
},
"image_library" : [ ……
],
"material_library" : [ ……
],
"scene" : {
"materials" : [ ……
],
"animations" : [ ……
]
}
}
「……」で省略してますが、基本構造はこんな感じです。
で、肝心のマテリアル情報は「material_library」「materials」の中にはありませんで、「animations」の中に全部ずら──っと記述されています。1万行とかになることもあるので、テキストエディタで開く時は気をつけてください(;´Д`)

"animations"の中身はというと……
{
"url" : "name://@selection#materials/マテリアル名:?extra/studio_material_channels/channels/アトリビュートグループ名/アトリビュート名/項目名",
"keys" : [ [ フレーム番号, アトリビュート値 ] ]
},
こういった書式でデータが延々と記述されています。
"url"にURL形式でデータの項目内容が書かれていて、この辺を抜き出していけば「何のアトリビュートなのか?」というのがわかります。
"keys"のほうが実データで、フレーム番号はおそらくアニメーションのタイムライン上のフレーム番号で、アトリビュート値はその実データということになります。

したがって、アトリビュート値は、項目内容によってブーリアン、実数、整数、文字列、配列など、データ型が変わります。


とりあえずメモ書き的な、マテリアルプリセットのdufファイルの中身でした。

どうして、こんなことしてるかというと。

Daz2Mayaという物凄く便利なプラグインが発表されて、Dazフィギュアをコンバートすると、そのままHumanIKリグになるという素晴らしいモノだったんですが、1つ難点がありまして。

マテリアル情報がごっそり抜け落ちるんですよ。
単純なDiffuseテクスチャのみの状態∑(o'д'o)

で、原因は何かなーとアレコレと調べてみると、昔から散々いわれてきたFBXプラグインの仕様によると。DazのFBXプラグインが、Diffuseテクスチャの情報しかエクスポートしないという昔のまんまのタコ仕様で、BumpもSpecularもないノッペリしたモノになってしまうと。

もう、バカじゃないの!?(`ε´*)ってなもんで。ほんとに困ったもんです。

DazStudio自体はiRayレンダラーを同梱したりして格段に進化してるんで、マテリアル情報さえ何らか吐き出せれば、MayaとかMAXとかBlenderあたりのレンダラーでも、ちゃんとレンダリングできると思うんですよね。

DazStudioは3Dフィギュアの良いツールだと思うんですが、どうも自己開発で自己完結したクローズドなエコシステムにしようとしている感じがしてガッカリすることが多いんですよねえ。

どうせなら、エクスポート機能を充実させた方が、いろいろな局面で利用される機会も増えて利用者も増えると思うんだけど……商用利用料を徴収したい関係とかで無理なのかなあ(´・ω・`)

愚痴っても始まらないので、次回があればPythonあたりでDufファイルを読み込んでいきたいと思ってまっす。

コメント