3Dってどう作るんだ

次のアプリ、3Dでやりたいね、という話になって、しかし、3Dに関する知識はゼロだった。どのソフトを使えばいいのかすらわからなかった。
それは夏の始まりの頃の話。

ぐぐると、3Dモデリングができるソフトって何十万もするものもあれば、無料のものもある。そしてどうやら無料のほうもかなりできる子らしい。Blender という。

Blender

私の心を決めさせたのは、Blender が Monument Valley の開発でも使われてるという記事だった。
なぜ Blender を選んだのかという質問に彼らはこう答えている。

It’s free, and as powerful as any other professional 3D software.

すてきだ。

ツールが決まっても、まだわからないことだらけだった。どこまでをBlenderで作業するべきなのか、その先どうすればいいのか。

これは作りたいアプリの内容によっても違うだろう。
我々の作ろうとしているアプリはiOSのものでAndroid版の予定はない。ゲーム的な要素はあるがゲームではない。3D要素的には何かキャラクターがいて、世界があって、ちょっと動くみたいな。
結果、基盤としては、SceneKitというフレームワークを使うことにした。iOS 8, 9でパワーアップしてて面白そうだったし。
もしかして、SceneKitではなくUnityを採用していたら、ドキュメントやサンプルコードが充実してて楽だったのかもしれないと思うこともあるが、SceneKitもすばらしい子です。罠をいっぱいしかけてくれて小悪魔っぽくもあります。

ぐぐっただけではまるで情報が足りないので、実際に3Dオブジェクトを作ったり、iOS上で動かせるプロトタイプを作ってもらってテストしながら、少しずつやり方が定まってきた。我々のアプリでは3Dに関する部分は、おおまかにこんな感じで作ることになった。

  • Blenderで、各オブジェクトのモデリングから、個別のアニメーションの作成まで行う
  • それらをCOLLADAフォーマットで書き出す
  • XcodeにCOLLADAファイルを読み込み、Sceneファイルに変換
  • マテリアルなどを正しく設定しなおす
  • オブジェクトの配置などはだいたいSceneファイル上でやる
  • 光やカメラ、アニメーションの制御など動的なものはコードでやる
  • その場でぐるぐるまわり続けるとかの機械的なアニメーションはSceneファイル上で作る

次回はBlenderについて書こう。