Apple Engine

Apple, iPhone, iOS, その周辺のことについて

Xcode 11 の Scene Editor から USDZ ファイルを作成する

Beta 版から記事を起こしているため今後変更される可能性あり。

f:id:x67x6fx74x6f:20190828065142p:plain

WWDC 19 のセッションで行なっていたように、Xcode 11 の SceneKit のシーンファイル (.scn) などを閲覧、編集を行う Scene Editor から USDZ ファイルを書き出すことができるようになった。

 

手順

Xcode でシーンファイル (.scn) 開き、 アプリケーションメニューの File > Export から 「 Universal Scene Description (Mobile)」を選択して保存する。

上の画像は試しに SceneKit のビルトインジオメトリ SCNText を配置したシーンを Xcode 11 上で USDZ に書き出し iOS 12 の iPhone でプレビューを行なったもの。
問題なく表示ができた。

 

シーンファイル以外で変換可能なファイル

以下が変換可能な 3D ファイル。
USDZ を書き出す部分は SDK にない機能だが、Scene Editor の読み込み部分は Model I/O を使用しているため、Scene Editor 読み込めるファイルは全て変換することができる。

  • abc
  • dae
  • obj
  • ply
  • stl
  • usd / usda / usdc

 

appleengine.hatenablog.com

 

制限

USD 自体、3DCG 制作のパイプラインの中でのアセット管理的意味合いで作成されたため、パーティクルや物理シミュレーション、物理フィールドなどを含めることはできず、現状 SCNAction やジオメトリに設定していアニメーションも吐き出すこともできない。

ジオメトリに設定しているアニメーションは書き出したファイルに存在しているが、iOS のプレビューで閲覧することができない模様。

USDZ の制限としてテクスチャの数と上限サイズが決まっている点も注意して欲しい。

また、複数のジオメトリがうまく書き出されない場合は親のノードごと Flatten Selection を行なって1つのジオメトリにすると書き出すことができる。

 

まとめ

Xcode 11 から usdz_converter が Command Line Tools からなくなるため、 Augmented Reality ページにある usdz Tools からダウンロードし、Python や ダウンロードしたファイルの PATH を通さなければいけない。

若干面倒なので、Terminal でコマンドを入力せず、Scene Editor を使用し GUI から USDZ が書き出すことができるは便利だと思われる。

 

ちなみに usdz Tools からダウンロードした実行ファイルでは、Autodesk から提供されている Python の FBX モジュールを入手後、その PATH を通すと、FBX ファイルから USDZ へ変換することができる。