Help us understand the problem. What is going on with this article?

アニメーションを含むUSDZを生成する

More than 1 year has passed since last update.

アニメーションを含まない場合は
https://qiita.com/noppefoxwolf/items/2a410ebe2db919fe236d
の記事を参考にobjからusdzへ変換するのが手っ取り早いです。

アニメーションを含む場合(今回はキーフレームの補間アニメーションを指します)、gltfからusdzへ変換する方法でうまくいきました。

Blenderでgltf形式でexportする

デフォルトではgltf形式でエクスポートする事が出来ないのでaddonを追加する

https://github.com/KhronosGroup/glTF-Blender-Exporter

scripts/addons/io_scene_gltf2フォルダをblenderのscripts/addons/へコピー
[Blenderユーザー設定]>[アドオン]からImport-Export glTF 2.0 formatにチェックを入れて有効化する

exportからglTF2.0 (.gltf)を選択して適当な名前で保存する。
この際に、テクスチャなどの関連するファイル名に2バイト文字が含まれないように注意する。

gltfをusda形式へ変換する

https://github.com/kcoley/gltf2usd

を使って変換します。
以下うまくいった環境

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へ変換する

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away