SpriteKitとSceneKitのお勉強を始めました。
両方ともiOSでゲームを作るときのフレームワーク。
SpriteKitは2Dのゲームを、SceneKitは3Dのゲームが作れます。
他、Metalというのがあるけど、これはもっと下位レベルのフレームワークでOpenGLと同じレベル。
WWDC15 : Enhancements To Scenekit より
Metalは、A7, A8チップに特化することでパフォーマンスを最大限に引き出すよ というもの。
A7より下位のチップは動かないし、シミュレータでも動かない。(El Capitanだったら動くのかもしれない?)
SpriteKit, SceneKitを使ったらMetalでは動かないの?
というのが最初の疑問だったのですが、
iOS9ではMetalで動く環境であればMetalで動く。
SceneKitであれば指定も可能
ということらしい。
iOS9のリファレンスで、
New Featuresとして Metal Rendering Support
と記述されているので、iOS8ではMetalでは動かず、OpenGLで動いていたのかな?
SceneKitのSCNViewのInitialization Optionsで、SCNPreferredRenderingAPIKey が指定できる。
Storyboardにもこの設定がある。
Defaultにしておけば、よさげに動いてくれる。
SCNSceneRenderer#renderingAPI から結果をデバッグしてみたら、
シミュレータではOpenGLES2
iPhone6 iOS9 beta3では Metal
にちゃんとなっていた。
SpriteKitはリファレンスに "metal rendering is automatically used" とあるので、自動的に選択....逆にいうと指定はできない という理解でいいのかな。
知らないって怖い。こんな最初のところからつまずいた。
プロジェクト作成するときの設定で、
と、横並びで選択がでてくるのも良くないと思うんだけどな!
今のところの次の疑問は、3Dモデルのファイル形式。
3Dの情報には、モデルデータ、テクスチャ、シェーダー、アニメーションなどが含まれていて、dae などの拡張子になっているのですよね。
daeは、SceneKitで読み込めるのですが、Appleのサンプルプロジェクトでは scn というファイル拡張子になっている。
scnファイルであれば、XCode上のEditorで修正できるよということだと思うのだけど、どこまでモデリングツールで作って、どのようにXCodeに持ってるくと手軽に作れるのだろう....
ModelIO.framework というのが使えるのだろうか。
The Model I/O framework provides a system-level understanding of 3D model assets and related resources. You can use this framework to import and export assets from and to a variety of industry standard file formats supported by popular authoring tools and game engines. You can also use Model I/O to generate or process model and texture data—for example, to create subdivision surfaces, bake ambient occlusion textures, or generate light probes. Model I/O can share data buffers with the MetalKit, GLKit, and SceneKit frameworks to help you load, process, and render 3D assets efficiently.
とリファレンスにあるので...?
あーー 何から何まで疑問だわー
あーー 何から何まで疑問だわー