🕌

Blender 3.0 のUSD対応状況を調べる(2)

2021/08/14に公開

前回ざっくりとExprot/Improt回りを調べましたが
今回は主にMeshの出力回り、Export設定とConversionまわりで
調べきれなかったあたりをまとめていきます。

頂点カラー

まずは、この手順でサンプルデータを作成。

データはこんな感じの4頂点のPlane。

Exportの設定に、VertexColorsがあるのでチェックをONにします。

Meshデータを確認すると、primvarで頂点にカラーが指定されているのがわかります。

ただし、マテリアルでの指定が入っていないらしく、そのままだと頂点カラーを表示することができません。

が、試しにHoudiniでPrimvarReaderを使用して頂点カラーを取得してみると

頂点カラーを取得することができました。
(しかしなんか色が違うような...)

VertexGroup/FaceMap

次に、VertexGroup。

VertexGroupも、デフォルトOFFですが出力することができます。

VertexGroupを指定すると、

MeshのPrimvarsで primvars:GroupName という形で出力できます。
各頂点ごとのウェイト値を持ち、補間はデフォルトvertexなので
補間なしで各頂点ごとに値を持つような形になっていました。

これをFaceVaryingに変更したい場合は、USD Exportオプションの VertexGroups As faceVarying に変更します。

FaceMapも同様にprimvars で出力されます。
こちらはFaceの数の配列を持ち、そのFace単位のウェイト値を持ちます。

Blenderから出力された場合に追加されるプロパティ

#usda 1.0
(
    doc = "Blender 3.0.0 Alpha"
    metersPerUnit = 0.01
    upAxis = "Z"
)

まず、usdaのドキュメントにExportしたBlenderのバージョンが保存されます。

各ノードには、userProperties:blenderName:dataに
Blenderのノード名が出力されます。

blenderName以降は、BlenderノードがObjectかDataかで変わります。

カスタムプロパティ

Blenderの各オブジェクトに対して追加することができる Custom Properties を
Exportできるか試してみます。

USD Exportの指定に Export Custom Propertiesの指定があるので、ONなことを確認して出力します。

問題なく出力できました。

Convert Orientation

最後にシーンのOrienationの指定。
BlenderはデフォルトがZupになります。

#usda 1.0
(
    doc = "Blender 3.0.0 Alpha"
    metersPerUnit = 0.01
    upAxis = "Z"
)

なので、特に何も指定しないとupAxisはZになります。

変更する場合は、 Conversion の Convert Orientation のチェックをいれて
指定の方向に変更します。

PerUnit

USDはデフォルトだと1Grid1メートルです。

Exporterの設定は、デフォルトだと Convert to Centimeters がONなので
1Grid1cmで出力されます。

まとめ

前回の記事と合わせて、BlenderのUSDの出力の設定を一通りみていきました。

以前のバージョンに比べると、シーンの構造が正しくExportされる、テクスチャ付きのマテリアルがExportできる、DefaultPrim/RootPrim/MaterialsRootの指定など
最低限必要なExport機能がそろった印象です。

なので、モデリングなどのに関してはBlenderでも普通にデータの作成ができるのでは?と思いました。

問題点としては、すべてのデータがExportされてしまうので
例えばアニメーションデータだけ別レイヤー化したいとか
マテリアルの差分情報だけをExportしたいみたいなことができないこと
USDのStageを持っているわけではないので、
データをImprotするとコンポジション情報がなくなってしまうため
USDのオーサリングツールとしては使えないなど
使いどころはまだ限定的かな?と思いました。

このあたりは、OmniverseのPluginがでてきたりしたら
対応されてたりするのかなー?と、触りながら想像していました。

あとは、私自身がそこまでBlenderに習熟していないので
実際にBlender+USDでパイプラインを構築するのが
いまいち想像できていません。
このあたりは、やはりプロダクションで運用してみないことには何とも言えないなぁと思います。難しい。

引き続き、Blenderは使い方を調べてみようと思います。

GitHubで編集を提案

Discussion