Maya 2022にはUSD及びUSDZファイルを出力できるプラグインが付属しています。これを使ってUSDファイルやUSDZファイルを作ってみました。何度かトライ&エラーを繰り返して、テクスチャー付きでUSDファイルやUSDZファイルを出力できるようになりました。
この記事では、設定や手順についてまとめました。
動作環境
本記事作成時に動作を確認した環境は以下の通りです。
- Windows 11 Pro 21H2
- Maya 2022.3 Windows版
テクスチャーのファイルパス
USD/USDZファイルに書き出すときは、テクスチャーのファイルパスに注意が必要です。ファイルパスの中に、ひらがな、カタカナ、漢字、全角文字などが入っているとエラーになります。スクリプトエディタのヒストリーに次のようなエラーが出力されます。
// エラー: Invalid asset path string -- character 27: invalid UTF-8 code point byte 0x83
半角英数文字以外が含まれないようにします。上位フォルダなどに入っている場合もダメなので、ファイルを置く場所に注意しましょう。盲点だったのがユーザー名に漢字が含まれていて、ホームフォルダのファイルパスに漢字が含まれてしまってダメだったということがありました。
Usd Preview Surfaceを使用する
USD/USDZファイルに書き出すモデルのマテリアルは、Usd Preview Surfaceに設定します。ArnoldのaiStandard Surfaceなどで設定したマテリアルは出力されません。

Usd Preview Surfaceを使うとArnoldでレンダリングできなくなります。レンダリングは「Mayaハードウェア」などを使う必要があります。

Subdivision方法をNoneにする
USD/USDZファイルを書き出すには、「ファイルの種類」から「USD Export」を選択します。USD Exportのオプションの「Subdivision Method」を「None (Polygonal Mesh)」に変更します。このオプションは「ファイルタイプ特有のオプション」の「Geometry」の中にあります。

デフォルト設定の「Catmull-Clark」を使うと、形が全体的に崩れます。次のスクリーンキャプチャはUSDZで書き出したときに、上が「Catmull-Clark」、下が「None (Polygonal Mesh)」を選択して書き出したものです。


拡張子をusdzにする
書き出しダイアログで書き出すときに、ファイル名の拡張子をusdz
にするとテクスチャーを埋め込んだUSDZファイルが出力されます。拡張子を入力しないときは、テクスチャーファイルへの参照情報が書き込まれたUSDファイルとなります。
トラブルシューティング: USDファイルのファイルパスは絶対パスになる
Usd Preview Surfaceの設定でテクスチャーファイルへのパスを相対パスにすると、USDファイル書き出し時にエラーになってしまい、テクスチャーの情報が出力されません。絶対パスを設定する必要があります。複数のマシンで持ち回るときに、各ユーザーのホームディレクトリ以下にファイルを置くと、上手く運用できないと思います。
トラブルシューティング: どのファイルが問題かを探す
どのファイルに問題があるか見つけるには、書き出しオプションで、「.usd File Format」を「ASCII」に変更して書き出します。このオプションは「ファイルタイプ特有のオプション」の「Output」の中にあります。
書き出されたファイルをテキストエディタで開き、asset input:file = @@
で検索すると、書き出されなかったマテリアルが見つかります。正しく書き出されると、@
と@
の間にファイルパスが書き込まれます。