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 関数」 最後に残りの関数やプロパティを見てゆく。 ここでは操作キャラクターである Max の状態やその処理、物理判定の処理が書かれている。 isAttacki…

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

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

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

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

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

前回の続きで、Character クラス の関数を見てゆく。 Character クラスの初期化 init(scene: SCNScene) { super.init() loadCharacter() loadParticles() loadSounds() loadAnimations() } セットアップのため4つの変数が呼ばれる。 scene で SCNScene が設定されているが、ご覧のように使用されていない。 loadCharacter() ジオメトリと物理判定…

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

…oundation、SceneKit、simd が呼ばれている。 import Foundation import SceneKit import simd グローバル関数 地面とキャラクターの接点を求める。 地面である平面の地点、法線、キャラ接地面の法線と接地点と重力を加味した値を元に、 平面の法線とキャラの接地点、平面の法線とキャラの接地面の法線を内積し、割って平面の地点から引く。 この Swift ファイルで設定されている Character クラスの最後の方でこちらを…

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

…ら Apple の SceneKit のサンプルでは simd (Accelerate Framework と simd.h) を使用しており、 通常の Swift の計算より高速に行う事ができる。 https://developer.apple.com/documentation/accelerate/simd Fox 2 では、ノードのトランスフォームを 4x4 の行列で行なっており、 iOS 11 SDK などから SceneKit に追加された simd のプロパティ…

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

…書かれているように、SceneKit や他フレームワークとは異なり、Swift Standard Library や Foundation のような機能を持ったクラスの集まり。 そのため、ゲーム用と説明には書かれているが、このフレームワーク自体 Metal、OpenGL(ES)、SpriteKit、SceneKit だけではなく、普通のアプリの中でも使用することができる。 GameplayKit にはどのような機能があるのか WWDC 2016 のプレゼン資料から拝借 Ram…

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

…r.swift で SceneKit の overlaySKScene でこちらを設定している。 iOS のヴァーチャルパッドは iOS フォルダの Swift ファイルで設定している。 BaseComponent.swift GameplayKit の GKComponent を継承したクラスで、敵キャラなどの動作の元となる設定がされている。 目標に沿って動作するエージェントシステムが使用できる GKAgent2D を効率よく使用するため、GKComponent を使用して…

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

Fox 2 の概要のおさらい iOS、tvOS、macOS をサポートしており、MFi 認証が行われているゲームコントローラーをサポート。全体の振る舞いは Shared フォルダの GameController.swift で行われている。 実機で試せていないが、多分 Apple TV はゲームコントローラーしかサポートしていない可能性がある。 また、iOS のみヴァーチャルパッドを使用している。 シーンの構成について シーンの構成は大きく分けると以下のものになっている プレ…

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

…、iOS 11 の SceneKit で追加された Dual layar が使用されている、 skybox_copy depart と lava の外面に筒状のジオメトリが配置されており、星の瞬きのパーティクルが設定されている。 そのため、プレイヤーからの視点は、岩などの背景 > skybox_copy のパーティクル > シーンの背景画像の順で外観が見えることとなる。 DirectLight 全体の光を設定しているディレクショナルライト。 シャドーマップの生成を iOS 1…

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

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

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

particles フォルダ シーンで使用するパーティクルシステムを設定しているファイルが入っている。 この中でパーティクルシステムファイルは1つしかなく、他はシーンファイルの中で設定されている。 また、一部パーティクルは背景を設定している level_scene.scn で設定されている。 ファイルの内容 ファイル 説明 burn.scn Max が溶岩に落ちた際に尻尾につける煙パーティクル collect-big.scnp 使用されていない collect.scnp アイ…

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

enemy フォルダ 敵キャラクター2体分のリソースが入っている。 2体の敵キャラは ChaserComponent に紐づいたプレイヤーキャラクターに近づいてくるタイプと、ScaredComponent に紐づいたプレイヤーキャラクターから遠ざかるタイプ。 シーンファイルファイル 以下の4つのシーンファイルが存在するが、enemies.scn はこのプロジェクトでは参照されていない。 また、particles に enemy_explosion.scn と同じファイルがある…

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

character フォルダ 操作するキャラクター レッサーパンダの Max に関するリソースが入っている。 メインのファイル max.scn は Max_rootNode を起点に以下のような構成 シーンの障害物判定に合わせるための Kinetic の PhysicsBody に設定されている collider キャラクターアニメーション用ボーンの Bip001 Max のジオメトリ ジャンプ後着地際に表示するパーティクルの起点となる空のノード dustEmitter 攻撃…

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

Fox 2 のリソースファイル 前回書いたように Shared フォルダにリソースファイルが入っている。 以下、リソースの入っているフォルダの内訳 フォルダ 中身 Art.scnassets シーンファイルとパーティクルシステム、画像ファイル Assets.xcassets 各プラットフォームでのアイコン、AppleTV ホームで上の段画像 audio 音声ファイル Overlays 画面全面に表示される UI の画像 画像と音声は、ファイルを見たり、オーディオを再生するとわ…

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

…WWDC 2017 SceneKit: What's New のプレゼンで発表されたデモ。 以下の動画の1分40秒から4分あたりをご覧いただきたい。 developer.apple.com アプリ流れ レーサーパンダの Max を操作して、宝石手に入れる。 宝石を取得すると鍵が出現。 その鍵を入手し、奥の小屋の鍵を開け仲間を助け出すという流れ。 このサンプルを調べる意味 このサンプルは SceneKit の機能のショーケースとなっている。 そのため、このプロジェクトファイルを…

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

…0.2, 0.2, 0.2) // add replicator node in rootNode scene.rootNode.addChildNode(replicatorNode) まとめ SceneKit の機能に、ジオメトリを簡単に複製させて配置させるものがないのでつくってみた。 けど、かなりの力技。 SCNReplicatorNode はただ addChildNode しているだけなので childNodes で調べていけば複製したものの設定は全て変えられるはず。

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

…com.apple.scenekit.scene" kMDItemContentTypeTree = ( "public.item", "public.content", "com.apple.scenekit.scene", "public.data", "public.3d-content" ) ・ ・ ・ kMDItemKind = "SceneKit Scene Document" シーンファイルの UTI として「com.apple.scenekit.scene」、…

ARKit 1.5 での変更点 (Xcode 9.3 Beta / iOS 11.5 Beta )

…として提供される。 SceneKit 用にラッパークラスである ARSCNPlaneGeometry が用意されている。 https://developer.apple.com/documentation/arkit/arplaneanchor/2941025-geometry ARPlaneGeometry アンカーが検知した平面の形に合わせた多角形のポリゴン(三角ポリゴンのメッシュ)として描画する。 SceneKit のカスタムジオメトリ生成する際に必要な値、検知した領域…

Xcode 9.3 beta.1 での SceneKit の変更

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

Xcode 9.2 での SceneKit の変更点

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

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

…al を使用したり、SceneKit の SCNTechnique などを使うべきだが、 今回の処理でも許容範囲かつ実装が簡単なのでこちらを選択した。 (Metal 直で処理した方が速いと思われるのと、負荷がかからないはずなので、頑張れる方は頑張ってほしい) 流れ 昨日の記事で紹介しているように ARKit のシーンの背景は、 iOS 端末の背面カメラである iSight or iSight Duo カメラから取得している映像(画像)を渡している。 デバイスから画像を渡してい…

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

…景をつけたい場合 (SceneKit のキューブマップ設定は過去の記事を参照) sceneView.scene.background.contents = UIImage(named: "ファイル名.png") 以下の 動画 では AR からタップで、 Apple のサンプル Fox2 のキューブマップに変更され、 AR から VR へ遷移している。 なぜ、背景を変えると VR に変更できるのか? ARKit はシーン上の背景画像に iSight or iSight Duo …

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

そう言ってみれば説明していなかったなとということで、SCNNode の Rendering Order について書いておこうと思う。 マテリアルの Writes depth や Reads depth は深度情報の重なりの順序を無視し前面や背面にジオメトリ表示するが、 こちらはノードのレンダーされる順番が変更される。 初期値は 0 で、数値が大きいものほど後にレンダリングされる。 Rendering Order は Photoshop や Illustrator のレイヤー、…

ARKit の Face Tracking で顔にマスクをつける for iPhone X - 実践編

…ing.serialSceneKitQueue") viewDidLoad で virtualFaceNode に ARSCNFaceGeometry を設定する viewDidLoad の resetTracking() 上に以下のコードを設定する // virtualFaceNode に ARSCNFaceGeometry を設定する let device = sceneView.device! let maskGeometry = ARSCNFaceGeometry(d…

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

…想してみた。 次期 SceneKit つくだろうと思う機能 全画面でのアンチエイリアスが綺麗になる サブサーフェイス・スキャタリング ヴォリュームライト/フォグ ガラスのような屈折の表現 個人的に欲しい機能 面単位、特定の大きさ単位でのジオメトリの分離 パーティクルエミッターからのジオメトリー放出 ソフトボディのシミュレーション 流体シミュレーション 群衆シミュレーション マテリアルで設定できるスクリーンスペースリフレクション or リフレクションプローブ 動画をテクスチャと…

技術書典3に出典しておりました

…og で書いている SceneKit についての PDF を出していまして、前半は Blog の内容、後半部分は iOS 11 で追加されたが書かれており、うっかり 340 ページ超えてしまいました。 iOS 11 の SceneKit の新機能はドキュメントでも「No overview available」が多く、 該当する機能のヘッダーファイルにコメントで説明が書かれているのですが、 SceneKit はコメント自体がないものがあって結構レアだったと思われます。 内訳 正…

iOS 11 / Xcode 9 の SceneKit プロパティ、メソッド等の追加・変更・廃止一覧

自分のメモ用。 Beta なので変更される可能性あり。 Type Color 変更 / Modified 追加 / Added 廃止 / Deprecated 変更内容 SCNScene SCNScene.Attribute init(rawValue: String) SCNView SCNView.Option init(rawValue: String) cameraControlConfiguration:SCNCameraControlConfiguration d…

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

…code 8) の SceneKit の解説に関してはここで一区切り。 カスタムの Action、ParticleSystem、PhysicsField、 シーンを管理する SCNSceneRenderer、 scn ファイルを読み書きする SCNSceneSource、JS で SceneKit を設定する SCNExportJavaScriptModule などなど、紹介していない機能もあるが、ある程度は紹介できたと思う。 とりあえず、技術書典3 で Swift Play…

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

…ちる可能性があり、 SceneKit の機能でノードのジオメトリをひとまとめにする Flatten Node の処理を行うことで緩和できる可能性がある。 フラット化できるもの 基本、ジオメトリとマテリアルのみで他は無視されたはず。 Scene Editor での使用 今回、ピンク、青と青のクローン、緑と緑のクローンの球を設定。 Scene Graph View でチルドノードのあるノードを選択。 右クリックから Flatten Node を押すとひとまとめになる。 Attri…