Apple Engine

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

SceneKit

WWDC 2017 の SceneKit サンプル Fox 2 を調べる その16

Character.swift 過去の記事 Character.swift その1 「定数 / 変数 と グローバル関数」 Character.swift その2 「イニシャライズ関数」 Character.swift その3 「その他の関数とプロパティ その1」 Character.swift その4 「update 関数」 最後に残りの関数…

WWDC 2017 の SceneKit サンプル Fox 2 を調べる その15

Character.swift 過去の記事 Character.swift その1 「定数 / 変数 と グローバル関数」 Character.swift その2 「イニシャライズ関数」 Character.swift その3 「その他の関数とプロパティ その1」 今回は Character クラスの update 関数を見てゆく。 長い…

WWDC 2017 の SceneKit サンプル Fox 2 を調べる その14

Character.swift 過去の記事 Character.swift その1 「定数 / 変数 と グローバル関数」 Character.swift その2 「イニシャライズ関数」 今回は Character.swift での他の関数とプロパティを見てゆく。 node Character クラスの大本となる characterNode ノ…

WWDC 2017 の SceneKit サンプル Fox 2 を調べる その13

前回の続きで、Character クラス の関数を見てゆく。 Character クラスの初期化 init(scene: SCNScene) { super.init() loadCharacter() loadParticles() loadSounds() loadAnimations() } セットアップのため4つの変数が呼ばれる。 scene で SCNScene が設…

WWDC 2017 の SceneKit サンプル Fox 2 を調べる その12

Character.swift を見てゆく。 この Swift ファイルはプレイヤーキャラクターである Max の設定とグローバルの関数で構成されている。 キャラクター設定は NSObjct となっており、 GameController.swift の GameController のイニシャライズ時に setupCharac…

WWDC 2017 の SceneKit サンプル Fox 2 を調べる その11

今回は SimdExtensions.swift を調べていく。 以前から Apple の SceneKit のサンプルでは Accelerate Framework の simd を使用しており、 通常の Swift の計算より高速に行う事ができる。 https://developer.apple.com/documentation/accelerate/simd Fox …

WWDC 2017 の SceneKit サンプル Fox 2 を調べる その10

GameplayKit フレームワークとは何か? 多分、iOS SDK でもっともマイナーなフレームワーク。 以下、公式の一部を抜粋してザックリ翻訳。 GameplayKit は、iOS、OS X、および tvOS でゲームを構築するための基本的なツールやその技術の集まりです。GameplayK…

WWDC 2017 の SceneKit サンプル Fox 2 を調べる その9

Swift ファイルが保存されているフォルダ Shared には全体で共有する Swift ファイルがあり、 iOS、tvOS、macOS ではプラットフォーム別で AppDelegate.swift と Main.storyboard から呼ばれる GameViewController.swift で構成されている iOS 版のみ、ヴァ…

WWDC 2017 の SceneKit サンプル Fox 2 を調べる その8

Fox 2 の概要のおさらい iOS、tvOS、macOS をサポートしており、MFi 認証が行われているゲームコントローラーをサポート。全体の振る舞いは Shared フォルダの GameController.swift で行われている。 実機で試せていないが、多分 Apple TV はゲームコントロ…

WWDC 2017 の SceneKit サンプル Fox 2 を調べる その7

level_scene.scn を調べていく。 シーンにおける操作キャラクター Max、敵キャラクター以外の背景に相当するシーンファイル。 level_scene.scn では設定されているものが多いため、今回は読み飛ばしても構わない。 このシーンにあるジオメトリやパーティクル…

WWDC 2017 の SceneKit サンプル Fox 2 を調べる その6

残りのリソースファイルを調べていく。 level_scene.scn は設定されているものが多いので次回に。 collision.scn プレイヤーキャラ Max との障害物判定を行うためジオメトリ。 ジオメトリは 5 つあるが PhysicsBody の設定は全て同じ。 scene.scn level_scen…

WWDC 2017 の SceneKit サンプル Fox 2 を調べる その5

particles フォルダ シーンで使用するパーティクルシステムを設定しているファイルが入っている。 この中でパーティクルシステムファイルは1つしかなく、他はシーンファイルの中で設定されている。 また、一部パーティクルは背景を設定している level_scene.…

WWDC 2017 の SceneKit サンプル Fox 2 を調べる その4

enemy フォルダ 敵キャラクター2体分のリソースが入っている。 2体の敵キャラは ChaserComponent に紐づいたプレイヤーキャラクターに近づいてくるタイプと、ScaredComponent に紐づいたプレイヤーキャラクターから遠ざかるタイプ。 シーンファイルファイル …

WWDC 2017 の SceneKit サンプル Fox 2 を調べる その3

character フォルダ 操作するキャラクター レッサーパンダの Max に関するリソースが入っている。 メインのファイル max.scn は Max_rootNode を起点に以下のような構成 シーンの障害物判定に合わせるための Kinetic の PhysicsBody に設定されている collid…

WWDC 2017 の SceneKit サンプル Fox 2 を調べる その2

Fox 2 のリソースファイル 前回書いたように Shared フォルダにリソースファイルが入っている。 以下、リソースの入っているフォルダの内訳 フォルダ 中身 Art.scnassets シーンファイルとパーティクルシステム、画像ファイル Assets.xcassets 各プラットフ…

WWDC 2017 の SceneKit サンプル Fox 2 を調べる その1

Fox 2 とは? WWDC 2017 SceneKit: What's New のプレゼンで発表されたデモ。 以下の動画の1分40秒から4分あたりをご覧いただきたい。 developer.apple.com アプリ流れ レーサーパンダの Max を操作して、宝石手に入れる。 宝石を取得すると鍵が出現。 その…

指定した場所にジオメトリを複製する SCNReplicatorNode をつくってみた in SceneKit

画像は球状にスペースシップを複製し配置したもの(ReplicatorSample3) ジオメトリを位置情報の配列をもとに複製したり、法線情報の配列から回転させるやつで 3DCG や動画編集などであるリプリケーター。 また、複製したジオメトリに対して SCNAction 設定…

Document Base App テンプレートを使って SceneKit のシーンファイル(.scn)簡易ビューワーをつくる for iOS

macOS の場合、ファイル選択しスペースキーを押すと QuickLook 経由でシーンファイルのプレビューが閲覧できるのだが、 iOS の場合設定がされていないので、極めて簡単な表示するだけのビューワーをつくってみる。 iOS の Document Based App とは? iPhone …

Xcode 9.3 beta.1 での SceneKit の変更

今回 SceneKit の API 的には何も変わっていない。 Hashable プロトコル hashValue に SDK の Xcode 7.1+ が追加されたため、内容が変わっていないものでも Modified(変更)がかかっている様子。 一応、まとめてみた。 Added CVarArg, Equatable, Hashable …

Xcode 9.2 での SceneKit の変更点

今更だけど、書き忘れていた。 Xcode 9.1 から Xcode 9.2 での変更は1つ。 SCNSceneSource.LoadingOption のタイププロパティ useSafeMode が廃止予定となった。 useSafeMode - SCNSceneSource.LoadingOption | Apple Developer Documentation SCNSceneSourc…

ARKit + SceneKit でカメラから取得した映像にエフェクトをかける

ARKit Advent Calendar 2017 | 15日目 以下の昨日の記事の動画。 前半では ARKit で取得しているカメラ映像に対して Core Image のフィルター CIDotScreen を使用し、 新聞のモノクロ写真のようなモノクロドットや黒の塗りつぶしで構成された効果を適応して…

ARKit + SceneKit を使用したポジショントラッキングなモバイル VR

ARKit Advent Calendar 2017 | 14日目 ARKit はカメラ画像と各種センサーを使用して端末の位置を特定しているため、 1眼のポジショントラッキングなモバイル VR なら、わりと簡単にができますよというお話。 とはいえ、ARKit は真っ白な部屋とか特徴点が拾え…

SceneKit の SCNNode のレンダリングオーダーでどこでもドア的表現をする

そう言ってみれば説明していなかったなとということで、SCNNode の Rendering Order について書いておこうと思う。 マテリアルの Writes depth や Reads depth は深度情報の重なりの順序を無視し前面や背面にジオメトリ表示するが、 こちらはノードのレンダ…

次期 SceneKit の機能をなんとなく予想

「Metal 2 on A11 - Overview」を見る感じだと、A11 Bionic チップでは フラグメントの処理の際、メモリーとの間にさらに高速にアクセスできる保存領域があるらしく、 2D 処理が全般的に速くなるらしい。 そこから何となく予想してみた。 次期 SceneKit つく…

iOS で SceneKit を試す(Swift 3) その90 - ここで一区切り

Swift 3 (Xcode 8) の SceneKit の解説に関してはここで一区切り。 カスタムの Action、ParticleSystem、PhysicsField、 シーンを管理する SCNSceneRenderer、 scn ファイルを読み書きする SCNSceneSource、JS で SceneKit を設定する SCNExportJavaScriptMo…

iOS で SceneKit を試す(Swift 3) その89 - SCNNode をフラット化する。

もう1つ忘れていたものノードのフラット化について。 Scene Graph でチルドノードが増えすぎたりするとドローコールが増えるため、パフォーマンスが落ちる可能性があり、 SceneKit の機能でノードのジオメトリをひとまとめにする Flatten Node の処理を行う…

iOS で SceneKit を試す(Swift 3) その88 - SceneKit で SpriteKit の SKVideoNode を使用して動画のテクスチャを適応してみる

書き忘れていたが、SceneKit では SpriteKit の SKScene シーンを SCNMaterialProperty の各 contents に渡すことができる。 やり方としては作成した SKScene をジオメトリの firstMaterial.diffuse.contents を渡すだけ。 2D描画処理のコストはかかるが、複…

iOS で SceneKit を試す(Swift 3) その87 - SceneKit でマルチパスレンダリングを行う SCNTechnique を試す

SceneKit では他のゲームエンジンと同様にシーンを複数回レンダリングし画像を合成するマルチパスレンダリングを行うことができる。 内容的には結構複雑なので、こんなことができるよというのがわかってもらえれば良いかと。 マルチパスレンダリングの使用用…

iOS で SceneKit を試す(Swift 3) その86 - SceneKit のカスタムシェーダーについて

SceneKit でのカスタムシェーダーは主に3つ SCNProgram でプリコンパイルしたものを使う SCNShadable の shaderModifiers に Metal / GLSL のスニペットであるテキストデータを使う SCNTechnique で設定し主にポストプロセスのように画面全体の変更する際に…

iOS で SceneKit を試す(Swift 3) その85 - SceneKit で 2D ライブラリ SpriteKit の SKTexutre をテクスチャとして使用する

今まで SCNMaterial が持つ SCNMaterialProperty の content で UIImage を設定し、テクスチャを決めていたが SpriteKit の SKTexutre を設定することができる。 SKTexutre を適応してみる いつも通り、Xcode の Game テンプレートで SceneKit を選択し作成…

スポンサーリンク