WWDC 2017 の SceneKit サンプル Fox 2 を調べる その1
Fox 2 とは?
WWDC 2017 SceneKit: What's New のプレゼンで発表されたデモ。
以下の動画の1分40秒から4分あたりをご覧いただきたい。
アプリ流れ
レーサーパンダの Max を操作して、宝石手に入れる。
宝石を取得すると鍵が出現。
その鍵を入手し、奥の小屋の鍵を開け仲間を助け出すという流れ。
このサンプルを調べる意味
このサンプルは SceneKit の機能のショーケースとなっている。
そのため、このプロジェクトファイルを理解するということは SceneKit の新機能を理解する近道になると思われる。
Fox 2 の動作環境
現状 Version 1.3 の 2018-04-05 版では、 iOS 11, tvOS 11, macOS 10.13 となっており、Xcode 9 が必要となる。
また、Metal の機能を多様しているため、iOS 11, tvOS 11 のシミュレータはサポート対象外となっており、実機を使うべし。
Fox 2 のサンプルで使用されている機能/技術
- カメラへのコンストレイント適応してアプリやゲームでのカメラの振る舞いを設定する
- 新しい物理ベースの被写界深度で実現したカメラレンズのボケの効果
- スクリーンスペース GPU テッセレーション(Pixar の openSubdiv を使用)
- 新しいアニメーションエンジンや API を使用した段階的に設定できるキャラクターアニメーション
- カスケードシャドーマップ
- GameplayKit との統合(主に Xcode の Scene Editor)
はじめに
以下のページの右上の「Download Sample Code」ボタンを押しファイルをダウンロードする。
zip ファイルが解凍されると、Assets、Objective-C、Swift のフォルダがある。
今回は Swift で解説してゆくので Swift フォルダの xcodeproj を開く。
(ちなみに、今回のバージョンの Swift の Mac 版はエラーが出る可能性があり、動作しない場合は Objective-C の方を動かす)
Fox 2 プロジェクトファイルを見て見る
中身は以下のよう
フォルダ/ファイル | 説明 |
---|---|
README.md | Markdown で書かれた Fox 2 の概要 |
Shared フォルダ | 各プラットフォームで使用する画像、音、シーンファイル、UI 用リソース、swift ファイルがある |
iOS フォルダ | iOS で使用するファイル。iOS のみヴァーチャルゲームパッドの設定がある |
macOS フォルダ | Mac で使用するファイル。 |
tvOS フォルダ | Apple TV で使用するファイル |
Products フォルダ | .app ファイルが参照される |
Frameworks フォルダ | SceneKit と GameplayKit が置かれる |
プロジェクトファイルは Shared フォルダに共有できるデータがあり、
各プラットフォームごとに必要なファイルである AppDelegate や起点となる GameViewController、SCNView を表示するだけの Storyboard、アプリの設定を決める info.plist が設定されている。
上の表のように iOS だけヴァーチャルゲームパッドを設定するようになっている。
また、GameplayKit での Entitiy Component System や、2次元座標でターゲットを追いかける GKAgent2D が使用されている。
ちなみに、このサンプルでは Metal のシェーダーは書かれておらず、すべて Scene Editor 上の Shader Modifiers でマテリアルの操作が行われている。
次回以降、画像やシーンファイルなどのリソースを調べる。