Apple Engine

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

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 を使用するとジオメトリを一部のフォーマットに書き出しも可能になる。

 

今回はここまで