iOS で SceneKit を試す(Swift 3) その57 - SceneKit で使用できるオブジェクトファイル
SceneKit でのリソースの操作やオブジェクトファイルの読み込みは Model I/O のフレームワークを使用しており、
ファイルの読み込みは Model I/O に依存している。
オブジェクトファイルをプロジェクトで使用する場合、Project Navigator (Command + 1) にドラック&ドロップして、
コードからファイルを読み込むか、scn に変換して使用する。
ファイルによってはドラック&ドロップの際、ターゲットのチェックボックスが外れている可能性があるので注意。
読み込むことができるオブジェクトファイル
- COLLADA (.dae)
- Alembic (.abc)
- PLY ファイルフォーマット
- Standard Triangulated Language (.stl)
- Wavefront OBJ (.obj)
- Pixar Universal Scene Description (.usd/.usda)
上記のファイルは、macOS の QuickLook に対応しているため、ファイル選択してスペースキーでプレビューができる。
また、プレビュー.app でも確認することができる。
各フォーマットの軽い説明
COLLADA (.dae)
PlayStation 3 開発用に策定され、XML で記述されたファイルフォーマット。
ほとんどの機能に対応しているため、ほぼ SceneKit でのファイルの読み込みはこれになると思われる。
Alembic (.abc)
ソニー・ピクチャーズ・イメージワークス と ILM が開発したフォーマット。
ポリゴンメッシュなどを全フレームベイクして格納するため、オーサリングツーツから忠実なアニメーションが作成される。
全フレームベイクするため容量が大きくなるので注意。
また、SceneKit ではマテリアル情報が読み込めない。
というか、Texture Coordinates がおかしな状態で読み込まれる時があった。
PLY ファイルフォーマット / Standard Triangulated Language (.stl)
三角ポリゴンで構成されたオブジェクトを3次元CADソフト用のファイルフォーマット。
中身はテキスト、またバイナリとなっている。
PLY がスタンフォード、STL が 3D Systems によって開発された。
Wavefront OBJ (.obj)
Wavefront が Advanced Visualizer のために開発したファイルフォーマット。
後々、Alias 社と併合し発表された Maya など多くのツールで使用可能。
.mtl を使用することでマテリアル情報を付随できる。
(SceneKit では上手くいかないものもある)
Pixar Universal Scene Description (.usd/.usda)
Pixar が開発したバイナリ、もしくはテキストデータのファイルフォーマット。
ファイルから他のオブジェクトファイルを参照したり、OpenSubdiv に対応している。
ファイルフォーマットをまとめてみる
ファイルフォーマット的にサポートしていない機能もありまとめると、
以下の特徴を持つ。
ファイルフォーマット | ジオメトリ | マテリアル | アニメーション |
---|---|---|---|
DAE | ◯ | ◯ | ◯ |
ABC | ◯ | × | ◯ |
PLY | ◯ | × | × |
STL | ◯ | × | × |
OBJ | ◯ | ◯ | × |
USD | ◯ | ? | ◯ |
私が USD の仕様をちゃんと理解できていないため、
マテリアル情報が現状読み込めない。
Pixar のサンプルではマテリアルではなく Geometory Source の Colors に割り当てられている。
SceneKit ファイルの書き出し
SceneKit ではシーンを .scn のファイルに書き出すことができる。 また、macOS のみ .dae に吐き出すことも可能。
Model I/O を使用するとジオメトリを一部のフォーマットに書き出しも可能になる。
今回はここまで