Apple Engine

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

SceneKit

Xcode 10 の Scene Editor で Metal のカスタムシェーダーを設定する

Xcode の多分 10.1 から Metal のシェーダーファイルを Material Inspetor > Propaties > Shading で設定できるようになった。 内容的には SCNProgram が Scene Editor でできるようになった感じ。 Metal のカスタムシェーダーファイルを作成する 新規ファイ…

Xcode 10.2 Beta 1 (iOS 12.2 など) での ARKit、SceneKit、SpriteKit の更新

今回、更新はない。 Swift の場合は、Swift 5 へのアップデートに伴い構造体のイニシャライズで変更 (Modified) があるため、ARKit、SceneKit、SpriteKit でも広範囲で更新がかかっている。 更新はかかっているが機能的な変更はない。 まとめ 多分、今回更新…

がんばって USD ファイルをテキストで書いてみる

SCNScene から USDA が書きだせたので調べながら手書きで書いてみる。 今回は Apple 製品で動くものなので、実際の USD の仕様と異なるので注意。 本来は公式ページから GitHub へ行きツール群をビルドしそこから振る舞いを調べるべきなのだが、自分の環境だ…

SceneKit アプリで使用しているシーンを Pixar USD として書き出す

Model I/O framework は Metal で使用する一連をアセット操作するものがああり、ファイルを読み込んでアセットにしたり、アセットを別のファイル形式に書き出すことができる。 アセットの設定は Model I/O の MDLAsset を使用するのだが、MDLAsset では Scen…

Xcode 10 系で scnassets フォルダにファイルを追加すると CodeSign failed エラーになる件

原因不明。 現象 Automatically manage signing で Team を設定し実機にビルド。 最初は実機で動作したが、scnassets フォルダにファイルを追加すると 「Command CodeSign failed with a nonzero exit code」でビルドが止まる。 対処法 scnassets フォルダを…

ARKit (SceneKit) で Unreal Engine や Unity のようなグローパーティクルをつくる

SceneKit でグローなパーティクルのサンプルがなかったのでつくってみることにした。 つくってから気がついたが Apple 謹製のサンプルファイル Fox 2 での背景の火の粉のパーティクルがそれに当たる。 パーティクルにグローができる原理 デフォルト / HDR + …

ARKit や SceneKit で使用している simd について - クォータニオンでの関数編 その2 -

今回はクォータニオンで使用する線形補間の関数について。 基本的には球状での回転の補間となる。 用意されている関数は以下のもの。 simd_slerp simd_slerp_longest simd_spline simd_bezier ちなみに線形補間に関しては iOS でサンプルアプリがあるのでそ…

ARKit や SceneKit で使用している simd について - クォータニオンでの関数編 その1 -

今回はクォータニオンで使用する関数について。 線形補間関連の関数はまたいずれ。 演算子と関数について書くが、基本的にはプロパティと関数が対になっている。 演算子 等価演算子と四則演算が可能。 +, - に関しては値が加算、減算されるため、正規化しな…

ARKit や SceneKit で使用している simd について - クォータニオン編 -

今回はクォータニオンについて。 確かこの Blog で SCNQuaternion もちゃんと紹介していないので、まずはクォータニオンについてのご説明。 クォータニオンのざっくり説明 クォータニオンは四元数と呼ばれ、スカラー(実数)部分と3つの虚数部分をまとめたベ…

ARKit や SceneKit で使用している simd について - 行列での関数編 -

今回は行列で用意されている関数について 用意されている関数 以下のものが用意されている。 simd_add() simd_sub() simd_mul() simd_equal() simd_almost_equal_elements() simd_almost_equal_elements_relative() simd_linear_combination() simd_determin…

ARKit や SceneKit で使用している simd について - 行列型編 -

今回は 行列型と初期化について。 ARKit や SceneKit で主に使用する float4x4 を説明する。 double4x4 は float4x4 と上限値以外は同じなので 割愛。 float4x4 と double4x4、クオータニオン以外では、以下の行列が用意されており、double や float、行列の…

ARKit や SceneKit で使用している simd について - 関数編 -

今回は simd の演算用の関数についての説明。 simd のライブラリはベクトル内の各要素対して1つの命令で各要素に適応させることができる。 以前に紹介した通り、+演算子を使用すると、2つのベクトルの要素ごとに合計を簡単に計算することができる。 let f3_1…

ARKit や SceneKit で使用している simd について - 型の初期化と演算子編 -

前回に引き続き simd の説明で、今回は simd 型の初期化と演算子に付いて。 行列型に関して他の記事で紹介する。 今回は ARKit や SceneKit で主に使用する以下のものの説明。 double は float と上限値以外は同じなので割愛。 float3 float4 直接使用するこ…

ARKit や SceneKit で使用している simd について - 概要編 -

ARKit や SceneKit で使用している Accelerate フレームワークの simd ライブラリについて書いてみる。 元々は Accelerate フレームワークで vImage、vDSP や BLAS、LAPACK などを使用する際に、ハードウェアに近い部分での計算を行うために追加されたものだ…

ARKit でタップするカメラに追従する仮想オブジェクト

ARKit で仮想オブジェクト動かす際、タップ後スワイプして移動を行うことがあるが、 面倒なのでこういう UI / UX もありかなと試してみることにした。 あと過去の記事で書いたものが実現できるか試してみたかったので。 ARKit とは書いているが SceneKit の…

Xcode 10 の Augmented Reality App テンプレートで X 系端末が画面全体表示にならない問題を解決する

Xcode 9 の ARKit 用テンプレート、Augmented Reality App では ViewController の View に ARSCNView が設定されており フルスクリーン的な画面全体で表示されていたが、 Xcode 10 では ViewController の下に UIView が設定されており、 その下に ARSCNVie…

Xcode 10 での Scene Editor の変更

地味に UI が変更されたので、変更内容を見てゆく。 (Xcode 9 で追加されたものが混じっていたらすまない) Object Library 今まで右下のボタンや「Command + Option + Control + 3」で表示していたが、 該当部分とショートカットキーがなくなった。 ヘッダー…

iOS 12 SDK Bata 6 の ARKit、SceneKit 変更内容

今回の変更はない模様。 Xcode 10 Beta 6 の Scene Editor での ノード選択時のマニュピレーター、グリッドの表示エラーが解消されました。

iOS 12 SDK Bata 5 の ARKit、SceneKit 変更内容

ARKit の更新はないようで、SceneKit では Beta 4 で追加された2つのインスタンスプロパティの名称が変更された。 SCNPhysicsBody 物理ボディのインスタンスプロパティの名称が Sleeping から Resting に変更された。 Beta 4 var linearSleepingThreshold: C…

iOS 12 SDK Bata 4 の SceneKit 変更内容

Beta 版から記事を起こしているため今後変更される可能性あり。 Apple のデベロッパーページのドキュメントの最初で SceneKit の仕様変更がなかったので気づかなかったが中身は変更されている模様。 Bata 4 の変更内容としてはいるが、自分の見落としで以前…

iOS 12 SDK Bata 3 の SceneKit、Scene Editor 変更内容

Beta 版から記事を起こしているため今後変更される可能性あり。 主に SCNSceneRenderer の delegate と、 SCNPhysicsContact の contactDelegate のプロパティ属性が「unowned(unsafe) 」から「weak」に変更された。 SCNSceneRendererDelegate 変更前 unowne…

Xcode 9 の Scene Editor、iOS 11 の Scene File の Procedual Sky のバグについて

Xcode 10 を触っていて気づいたのだが、Xcode 9 の Scene Editor、iOS 11 の Scene File では Procedual Sky で正しい表示がされないバグがある。 ちなみに Scene Editor での Procedual Sky の適応方法は、何らかのノードを選択後、Scene Inspector (Comman…

技術書典 3 で配布いたしました「SceneKit Book fot Swift Playgrounds」を公開しました

明日の WWDC 2018 で情報が古くなる可能性があるため、 昨年の技術書典 3 で配布いたしました「SceneKit Book fot Swift Playgrounds」を公開しました。 このページの SceneKit の情報を元に iOS 11 で追加された機能をまとめたものです。 GitHub のリポジト…

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

iOS 用のバーチャルパッドについて見てゆく。 今回は Swift ファイルの構成と振る舞いについて。 ファイルの構成 ファイル名 内容 ButtonOverlay.swift ControlOverlay.swift で使用するボタン用の ButtonOverlay クラス PadOverlay.swift ControlOverlay.sw…

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

2D の UI である Overlay クラスを見てゆく。 SceneKit の overlay の機能を使い SpriteKit を SKScene を表示している。 Overlay クラスの中身 表示される要素 右上のプレイヤーキャラクター Max のアイコン 宝石や鍵のアイコン クリア時の Congratulations…

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

引き続き GameController クラスの残りの関数を見てゆく。 今回はゲームコントローラーやゲーム操作部分の関数について。 その前にゲームコントローラーとは? 販売されている MFi のアクセサリのゲームコントローラーは 、上下左右の方向キー、ボタン4つ、…

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

引き続き GameController クラスの残りの関数を見てゆく。 今回はクリア時の演出、レンダリングのクオリティ、デバッグの関数について。 クリア時の演出 クリア時に Music_victory.mp3 の BGM を 鳴らし、 2D UI の overlay の showEndScreen() 呼び、ロゴと…

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

引き続き GameController クラスの残りの関数を見てゆく。 今回はフレーム毎に更新される関数について。 Fox2 で使用しているフレーム毎に更新される関数 GameController のプロトコルで設定している様に SCNSceneRenderer と SCNPhysicsContact の2つのデリ…

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

引き続き GameController クラスの残りの関数を見てゆく。 今回はプレイヤーキャラクター Max のコントロールについて。 コントロールについて キャラクターのコントロールはバーチャルパッド、ゲームコントローラー、キーボードからの入力から以下の関数が…

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

引き続き GameController クラスの残りの関数を見てゆく。 今回は鍵を開けるなどゲームでのアクションについて。 鍵を開ける unlockDoor 関数も長いので中身を別で見てゆく。 func unlockDoor() { ... } 扉が開いているか調べる friendsAreFree が true の場…

スポンサーリンク