アニメーションを含まない場合は
https://qiita.com/noppefoxwolf/items/2a410ebe2db919fe236d
の記事を参考にobjからusdzへ変換するのが手っ取り早いです。
アニメーションを含む場合(今回はキーフレームの補間アニメーションを指します)、gltfからusdzへ変換する方法でうまくいきました。
Blenderでgltf形式でexportする
デフォルトではgltf形式でエクスポートする事が出来ないのでaddonを追加する
scripts/addons/io_scene_gltf2
フォルダをblenderのscripts/addons/
へコピー
[Blenderユーザー設定]>[アドオン]からImport-Export glTF 2.0 format
にチェックを入れて有効化する
exportからglTF2.0 (.gltf)を選択して適当な名前で保存する。
この際に、テクスチャなどの関連するファイル名に2バイト文字が含まれないように注意する。
gltfをusda形式へ変換する
を使って変換します。
以下うまくいった環境
python - macOSに入っているsystemのPython
USD - USDPythonではなく自前で後述のパッチをあててビルドしたもの
ビルドスクリプトへパッチをあてる
py_initializeで突然死んだりするのでパッチをあてる。
build_scrips/build_usd.py
def InstallUSD(context, force, buildArgs):
with CurrentWorkingDirectory(context.usdSrcDir):
extraArgs = []
if context.buildPython:
extraArgs.append('-DPXR_ENABLE_PYTHON_SUPPORT=ON')
+ if MacOS():
+ import distutils.sysconfig
+ pyLibPath = distutils.sysconfig.get_config_var('LIBDIR')
+ pyIncPath = distutils.sysconfig.get_config_var('INCLUDEPY')
+ extraArgs.append('-DPYTHON_LIBRARY=' + pyLibPath + '/libpython2.7.dylib')
+ extraArgs.append('-DPYTHON_INCLUDE_DIR=' + pyIncPath)
ビルド。適宜sudoで
python USD/build_scripts/build_usd.py /opt/local/USD
少し時間がかかる。
終わったら
set -x PYTHONPATH /opt/local/USD/lib/python
set -x PATH $PATH /opt/local/USD/bin
とかにパス通しておく
usdaへの変換
直接usdzへ変換することは出来ないようなので、一度usdaへ変換する
python gltf2usd.py -g file.gltf -o file.usda --arkit
--arkit
を付けると多分最適化される。
usdzへの変換
xcrun usdz_converter file.usda file.usdz -color_map uv.png -v -a -l
適当にオプションを付けてusdz_converter
でusdzへ変換する