Blenderでアニメーションを作ってUSDZに持っていく

Apple AR Quick Look試した - mtwandのブログ

↑で使ったオブジェクトを作ったメモ

なお、たぶんMacじゃないとできない。

Blenderでオブジェクトを作る

適当なオブジェクトを作る。今回は猿タワーにボックスを降らせるようなもの。

  • 猿タワーを作る
    1. プリミティブの猿を生成
    2. 配列複製
    3. 形状で分離
    4. 位置を揃えてランダムトランスフォーム
    5. 統合
  • ボックスを降らせる
    1. 猿タワーにリジッドボディ/タイプ・パッシブを追加
    2. プリミティブのボックスを生成
    3. リジッドボディ(タイプ・アクティブ)を追加
    4. マテリアルを設定
    5. 配列複製(25個)
    6. 形状で分離
    7. 位置を揃えてから、ランダムトランスフォーム
    8. 適当に位置を調整
    9. 物理演算
    10. オブジェクトを全選択し、メニューからオブジェクト→リジッドボディ→キーフレームにベイク でアニメーションに書き込み

という感じ。 今回はBlenderで作ったマテリアルをどの程度USDZまで持っていけるのか見たかったので、マテリアルも少し調整した

  • f:id:mtwand:20210122093600p:plain f:id:mtwand:20210122093659p:plain

金属光沢の強い、磨かれた銅のイメージ。

  • ボックス f:id:mtwand:20210122093815p:plain f:id:mtwand:20210122093836p:plain

つるっとした表面処理のシリコンみたいなイメージ。 サブサーフェース。

書き出し

書き出しは glTF として書き出す。アニメーションがない場合はOBJでも良いが、特に理由がなければ glTF でよいと思う。(OBJはアニメーションが連番書き出しになって大変なことになる。なった。)

なお、書き出し設定で、下記のようにアニメーションのグループ化に関するオプションを外しておくこと。 f:id:mtwand:20210122094344p:plain

これが何かというと、NLAのトラックごとにアニメーションをグループ化して、別アニメーションとして埋め込んでくれる機能なのだが、複数オブジェクトにまたがるアニメーションを処理せずに書き出すとすべて別トラック扱いになってしまったので、今回は外しておく。

※外さないと↓の様になる f:id:mtwand:20210122094641p:plain

作ったオブジェクトはこんな感じ f:id:mtwand:20210122092223p:plain

変換

Apple Reality Converterをインストールする

ARツール - 拡張現実 - Apple Developer

↓これ f:id:mtwand:20210122094806p:plain

以前はコンバータがXCodeに含まれていたらしく、コマンドラインから呼び出す必要があったらしいが、今は1つのアプリケーションとして提供されている。GUIで楽ちん作業だ。

インストール出来たらこれを起動し、先ほど作ったglTFファイルをドラッグ&ドロップで読み込ませる。

変換処理が走ってプレビューが表示されるので、問題ないことを確認したら、画面左上のFileからExportを選択。適当なフォルダに書き出す。

以上。

USDZファイルが生成出来たら、Apple公式のサンプルを参考に、どこか適当なサーバーに上げてみる。うまく再生出来たらOK.

所感

マテリアルはUnityのStandard程度のパラメータ調整が可能なものと思われる。 猿の金属光沢は反映されているが、サブサーフェースはさすがにダメっぽい。

どうにかしてシェーダーをくっつける方法はあるのだろうか。