Maya 2025 から既定のまま USD を書き出すと、アニメーションが入らず、インスタンスにしたオブジェクトのマテリアルが抜けました。最上位の要素が複数あると既定プリムがライトになり、ほかのファイルから参照するとメッシュが0個になります。Blender 3.6 では cm がそのまま m として読まれ、100倍の大きさになりました。
書き出しでフレーム範囲・インスタンス無効・ルートプリムを指定し、マテリアルは UsdPreviewSurface のままにすると、形・色・テクスチャ・頂点カラー・動き・カメラが 3.6 でも 5.2 でも残りました。
Maya で作ったモデルを Blender へ渡すとき、USD は FBX に代わる選択肢になります。ただ、書き出しと読み込みの既定の設定で何が残り、何が落ちるのか。同じ検証機の Maya 2025 で小さなシーンを作って USD に書き出し、Blender 3.6.11 と 5.2.1 LTS で読み込んで、残ったものを数えました。
何を書き出して、何を数えた?
シーンには、よく使う要素を1つずつ入れました。
| 入れたもの | 中身 |
|---|---|
| 形 | 立方体・球・板(グループの中に入れ、グループを回転) |
| マテリアル | standardSurface(色と粗さ)・画像テクスチャ付きの standardSurface・lambert |
| 動き | 立方体の移動(1〜24フレーム) |
| その他 | 球のインスタンス・頂点カラー・カメラ(35mm)・平行光源・点光源 |
測り方:Maya 2025(MayaUSD 0.32.0・USD 0.23.11)を画面なしの mayapy で動かし、mayaUSDExport で書き出しました。Blender は初期設定・画面なしで、USD の読み込みを既定の設定のまま実行し、物体の数と位置、カメラの焦点距離とライトの種類、マテリアルのノード、フレームごとの位置を Python で取り、Maya で設定した値と比べました。頂点の座標・UV・頂点カラーは Maya の値と1つずつ突き合わせ(1mm・0.001・0.01 だけずらした対照は不一致と判定)、テクスチャは描画して確かめています。2026年9月26日測定。
既定のまま書き出すと何が落ちる?
5つありました。どれも書き出しか読み込みの設定で避けられます。
| 落ちたもの | 原因 | 避け方 |
|---|---|---|
| アニメーション | 書き出すフレーム範囲の既定が1〜1 | frameRange を指定 |
| インスタンスのマテリアル | インスタンスへの割り当てを書けない | exportInstances をオフ |
| 参照したときのメッシュ | 既定プリムがライトになった | rootPrim で1つにまとめる |
| MaterialX のマテリアル | Blender で中身が空になった | UsdPreviewSurface(既定)のまま |
| 大きさ(3.6 のみ) | cm を変換せずに読む | 読み込みの Scale を 0.01 |
アニメーションは frameRange を指定しないと入らない
既定のまま書き出すと、立方体は1・12・24フレームで同じ位置のままでした。MayaUSD の公式 Readme でも、書き出しの frameRange の既定は [1, 1] です。1〜24を指定すると動きが入り、Blender ではキーフレームではなく Transform Cache 制約として読み込まれました(Blender のマニュアルの記述どおり)。
インスタンスにしたオブジェクトはマテリアルが抜ける
exportInstances は既定でオンです。この状態では、テクスチャを貼った球に Blender の両方の版でマテリアルが付いていませんでした。Maya は書き出し時に「Can’t author direct material binding on instance proxy」という警告を出しており、USD にも割り当てが書かれていません。exportInstances をオフにすると、テクスチャ付きのマテリアルが 3.6 でも 5.2 でも残り、描画すると球にチェッカー模様が出ました(マテリアルを外した対照では模様なし)。
最上位が複数あると、参照したときにメッシュが0個
今回のシーンでは既定プリム(defaultPrim)が点光源になり、マテリアルもその下に置かれました。公式 Readme は「指定が無ければ最初の最上位」と説明していますが、実際に選ばれたのはファイル上で最後の最上位でした。このファイルを別の USD からプリムを指定せずに参照すると、読まれたのはマテリアルだけで、メッシュは0個です。rootPrim で全体を1つのプリムにまとめると、参照でメッシュ4個がそろいました。Blender で直接開く場合は全体が読まれるので、この問題は出ません。
MaterialX で書き出すと、Blender ではマテリアルが空
convertMaterialsTo を MaterialX にすると、lambert とファイルテクスチャは Maya 独自のノードとして書き出されました。Blender は 3.6 も 5.2 もマテリアルを作りましたが、中のノードは0個で、立方体の色も失われました。既定の UsdPreviewSurface なら色と粗さが残ります。
Blender 3.6 では100倍の大きさになる
Maya の既定の単位は cm で、USD には「1単位=0.01m」と書かれます。5.2 は読み込みの Apply Unit Conversion Scale(既定でオン)がこの値で縮め、100cm の立方体が1mになりました。3.6 にはこの項目が無く、100m の立方体になります。3.6 で読むときは Scale を 0.01 にします。
残ったものは?
| 項目 | 結果(3.6・5.2 共通) |
|---|---|
| 形 | 頂点の座標が3つとも一致(m・Z-up に直して最大差 0.000001m) |
| UV・頂点カラー | 値が1つずつ一致 |
| standardSurface | 色(0.8, 0.2, 0.1)と粗さ 0.4 が残った |
| lambert | 色×Diffuse(0.8)=0.16, 0.48, 0.16 に |
| 上方向の軸 | X軸90度の回転で Z-up に直った |
| カメラ・ライト | 焦点距離35mm と種類は残った |
違いが出たのは2点です。インスタンスは 3.6 が別々のメッシュに展開し、5.2 はコレクションのインスタンスのまま読みました。ライトの強さは、USD に書かれた値(2と3)が 3.6 ではそのまま、5.2 では8と約9.42になりました。明るさは描いて合わせ直すのが確実です。
どう書き出せばいい?
今回すべてが残った設定です(Maya の Python)。
import maya.cmds as cmds
cmds.loadPlugin("mayaUsdPlugin", quiet=True)
cmds.mayaUSDExport(
file="C:/work/scene.usda",
frameRange=(1, 24), # 動きを入れる
exportInstances=False, # インスタンスのマテリアルを残す
rootPrim="scene", # 全体を1つにまとめる
convertMaterialsTo=["UsdPreviewSurface"],
)
Blender 5.2 は既定のまま読み込めます。3.6 は読み込みの Scale を 0.01 にします。
まとめ
Maya から USD で渡すときは、既定のまま書き出さず、フレーム範囲・インスタンス・ルートプリムの3つを指定します。インスタンスをオフにするとファイルは大きくなります(今回は約55KB→約94KB)。スキンやブレンドシェイプ、複雑なシェーダーは試していません。
Maya の USD 対応の仕組みはMayaUSD の4モジュールと2種類のバージョン番号、Blender の版の違いは3.6 と 5.2 のファイル互換、基本の操作はBlender の完全入門にまとめています。

コメント