iOS で SceneKit を試す(Swift 3) その59 - Blender で Collada (.dae) をエクスポートし Scene Editor で読み込む
とりあえず、手軽に試すため Blender でオブジェクトを DAE でエクスポートして、Scene Editor で読み込んでみる。
Apple 自体、Maya からエクスポートしている感じがしているので、Blender でエクスポートしたものが必ず上手く使えるわけではないので注意。
(確か、Blender の DAE のエクスポートは Secound Life 用だったはず)
Blender から DAE エクスポートし Scene Editor で読み込めるもの
- ジオメトリ
- マテリアル情報 / UV 情報
- ボーン(Blender でいう Amarcher)
- アニメーション(IK 不可)
- カメラ
- ライト
Scene Editor で読み込めないもの
- デフォーム / IK
- パーティクル
- モーフィング
ファイルフォーマット的な問題でできない。
モーフィングは可能だが Blender の書き出し時に変形先の頂点情報がおかしくなる。
Blender から DAE をエクスポート
まず、Blender をダウンロード。
起動するとこんな感じ。
エクスポートの際、カメラとライトはいらないのと、新たらしいジオメトリを配置する。
シーン上のものを右クリックして選択、X キーで削除。
Shift + A を押して Mesh > Monkey を選択
お猿の顔のジオメトリが置かれる。
ポリゴンがカクカクなので、必要であれば Smooth を押す。
準備完了。 File > Export > Collada でエクスポート。
今回はジオメトリしかないので設定そのままで保存。
エクスポートされた DAE ファイル。
Scene Editor で DAE をインポート
いつものように、Xcode で iOS の Game テンプレートを作成。
Project Navigator (Command + 1) にファイルをドラッグ&ドロップ。
.dae を .scn に変換しても良いし、
.dae のジオメトリを Command + C でコピーし、
現状ある ship.scn にペースとしても良い。
注意点
残念ながら Blender と SceneKit では座標系が異なる。
エクスポート時に軸の変換ができないため、読み込んだジオメトリを-90度回転させる必要がある。
うっかりミス
Blender 上でマテリアルを設定していないため、Scene Editor でからになっている。
Material Inspector (Command + Option + 5) から「+」ボタンで新規で作成してみる。
コードで DAE を読み込む
オブジェクトデータは Xcode 上では Scene File と同様なので、普通に SCNScene で読み込める。
let scene = SCNScene(named: "art.scnassets/monkey.dae")!
SCNSceneSource でシーン内の一部、例えばアニメーションのみなどを読み込むことができるが、こちらの説明はまたいつか。
余談
Scene File は他の Scene File を参照することができる。
結構な量のものを配置したい場合はこちらを使用するのも良いかもしれない。
今回はここまで