MayaからUSD, USDZを書き出す方法

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 = @@で検索すると、書き出されなかったマテリアルが見つかります。正しく書き出されると、@@の間にファイルパスが書き込まれます。

著書紹介

Authored Books

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

Akira Hayashi (林 晃)のアバター Akira Hayashi (林 晃) Representative(代表), Software Engineer(ソフトウェアエンジニア)

アールケー開発代表。Appleプラットフォーム向けの開発を専門としているソフトウェアエンジニア。ソフトウェアの受託開発、技術書執筆、技術指導・セミナー講師。note, Medium, LinkedIn
-
Representative of RK Kaihatsu. Software Engineer Specializing in Development for the Apple Platform. Specializing in contract software development, technical writing, and serving as a tech workshop lecturer. note, Medium, LinkedIn

目次