Apple Engine

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

SceneKit の検索結果:

Apple Arcade とサブスクリプションゲームのおとずれ

…種ゲームエンジンや SceneKit などでの対応は難しくないだろう。 一応、サービスインは秋となっており、6月の WWDC 2019 で iOS の UIKit を macOS ガワでかぶせることができる機能が公開されることもある。 iOS, macOS, tvOS では MFi ゲームコントローラーが使えるため極力対応すべきだろうとは思う。 それ以外には iOS ではタッチ、 macOS はポインティングデバイス、キーボード、 tvOS は Siri Remote がある…

ARKit で Spider Verse の様な色ズレを表現する。

…適応度合い。 他の SceneKit のパラメーターの様に Intensity を 0 にすると Strength を設定していても効果が出ないので注意。 Scene Editor でのシーンファイルの SCNCamera でも設定値があるのでそこで試したり、 シーンのカメラの値を ARKit のカメラに渡してもよいだろう。 ちなみに、RGB の色ズレかつ左右にしか色が移動しないので、ちゃんとしたものをつくりたい場合は SCNTechnique を使用してマルチパスレンダリン…

ARKit / SceneKit でフォーカスが外れたジオメトリの位置を知らせる UI をつくる

…Scene を設定 SceneKit のデリゲートでフォーカスが外れた時の処理と対象物の状態を調べる フォーカスが外れていたら左右どちらかの矢印を表示する 実装 今回は ARKit のテンプレートを使用する。 まず、ViewController クラスのグローバルに、対象物の SCNNode、overlayScene の SKScene と左右矢印となるスプライトを設定する。 private var target:SCNNode! private var overlaySce…

SceneKit で画像の色情報を元にジオメトリを配置する

…it), move4, SCNAction.wait(duration: endWait) ]) ) ) } サンプルコード github.com まとめ SceneKit の場合、テクスチャの色からパーティクルの色を設定することができないため、試しにジオメトリでやってみたが、 総ピクセルが 〜3K ぐらいまでなら XS では行けそうな感じではある。 また、同じ色であるならジオメトリを再利用できるので、色から調べジオメトリを新規に作成しない様にすると負荷が軽くなると思われる。

ARKit や SceneKit で寿司を回す

前回の横に流れる文字の続き。 SpriteKit の SKScene でラベルをアニメーションさせたものを円筒状のジオメトリのマテリアルにテクスチャとして貼り付けて 🍣 を流すとARKit で寿司を回る。 寿司を回す ARBoardSK からの変更 ジオメトリ ジオメトリを平面から円筒形に変更し、円筒になったため SKScene の幅が大きくなった。 学生の頃に習ったと思われるの 2πr で円周が取れるので、半径から計算して SKScene の幅を設定する。 (よくよく考える…

ARKit や SceneKit で電光掲示板的な横に流れる文字を表示する

横に流れる文字(SceneKit) AR 空間で文字数の多いテキストを表示する場合、 紙のように板ポリゴン一面や空間にするケースがあると思われる。 AR は現実空間と密接になっているため、サイズが小さいと近くに寄る必要があり、逆に大きいと全体を見る為に遠ざかる必要がある。 初代 Microsoft HoloLens のようにウインドウとして表示し、エアタップからスクロールして見る方法もあるが操作が面倒ではある。 以上の2つのように、身体的に動作が伴う場合、反復する状況だと操作…

SceneKit のテクスチャに SpriteKit の SKScene を貼り付けて複雑な動きをするマテリアルをつくる

…ode を使用して SceneKit のテクスチャに動画をループ再生する記事を書いた。 SpriteKit のシーンを貼り付けているため、基本的には SpriteKit で使用している機能を使いアニメーションや インタラクションをテクスチャとして使用することができる。 本来は Metal シェーダーでつくるべきだが、SpriteKit は SceneKit と同じような方法でコンテンツをつくることができるため学習コストが少なくインパクトのあるマテリアルを表示することができる …

RICOH THETA Z1 が発表された

SceneKit、3DCG などの背景画像や Image Based Lighting (IBL) で RICOH THETA V を使用していたが、 新機種である RICOH THETA Z1 が出るため調べてみた。 THETA Z1 ワンショットで360°の全天球イメージを撮影できるカメラ 「RICOH THETA Z1」を新発売|RICOH IMAGING RICOH THETA とは? 魚眼レンズが前面と背面に付いており、ボタン一発で360度写真を撮ることができるカメ…

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

…#include <SceneKit/scn_metal > // 頂点 struct VertexInput { float3 position [[ attribute(SCNVertexSemanticPosition) ]]; float2 texcoord [[ attribute(SCNVertexSemanticTexcoord0) ]]; }; // モデル struct NodeBuffer { float4x4 modelViewProjectionTra…

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

…るため、ARKit、SceneKit、SpriteKit でも広範囲で更新がかかっている。 更新はかかっているが機能的な変更はない。 まとめ 多分、今回更新がないとなると ARKit、SceneKit、SpriteKit など、ここら辺のライブラリは WWDC 2019 まで大きな更新はないように思われる。 逆に WWDC 2019 では大きな更新があるような気はしている。 Swift 版での ARKit、SceneKit、SpriteKit の変更 一応、変更を列挙してみた…

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

… "ノード名"」で SceneKit で言う所の SCNNode として定義し追加できる。 #usda 1.0 def Scope "Node" { } また、入れ子にもできる。 #usda 1.0 def Scope "Node" { def Scope "Node2" { } } メッシュ(ジオメトリ)をつくってみる メッシュは「def Mesh」で定義でき、 基本的には SceneKit のカスタムジオメトリと作り方は同じで、 頂点の位置とインデックス、面を貼るためのカ…

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

…LAsset では SceneKit のシーンファイル以外にも SCNScene 自体を読み込みアセットとして作成すること可能。 自分の場合 iOS でファイル操作をするのが面倒だったので macOS の NSOpenPanel で書き出すフォルダを調べてそこに書き出したが、 iOS の場合はアプリのドキュメントフォルダに保存するなどで書き出せると思われる。 注意点 SCNScene が正確に書き出されるわけではないの注意。 現状、基礎情報、ジオメトリ、カメラのみ書き出され、…

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

SceneKit でグローなパーティクルのサンプルがなかったのでつくってみることにした。 つくってから気がついたが Apple 謹製のサンプルファイル Fox 2 での背景の火の粉のパーティクルがそれに当たる。 パーティクルにグローができる原理 デフォルト / HDR + Bloom 3DCG におけるグローとは、カメラにおける光の滲みのような状態で、強い光源にレンズを向けた際に光が白っぽくかぶるフレア現象。 または、デジカメで強い光源がイメージセンサーに画素の許容量を超えた…

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

…ldNode(node) } まとめ クォータニオンでの線形補間を使用した回転は行列での回転より早く処理できる可能性があるため、状況によっては積極的に使用すべきだろう。 simd に関しては一通り説明が終わった。 ARKit のアンカーや SceneKit のノードで多くのものを素早く変更する場合に有用な機能ではある。 また、Float、Double など、型の値の取り出しが可能であるため、ARKit や SceneKit 以外にも行列の処理で使用できる状況はあると思われる。

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

今回はクォータニオンで使用する関数について。 線形補間関連の関数はまたいずれ。 演算子と関数について書くが、基本的にはプロパティと関数が対になっている。 演算子 等価演算子と四則演算が可能。 +, - に関しては値が加算、減算されるため、正規化しないとスケールがおかしくなるので注意。 let ix:Float = 0.0 let iy:Float = 0.707107 let iz:Float = 0.0 let r:Float = 0.707107 let q = simd…

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

….0, 8.0)) SceneKit でクォータニオンを渡す場合は、単位クォータニオンとして設定する必要がある。 単位クォータニオンとは長さが1となるもので、以下の方法で計算できる。 sqrt(ix * ix + iy * iy + iz * iz + r * r) ちなみに、SCNQuaternion の中身は SCNVector4 で、xx + yy + zz + ww == 1 となる必要がある。 クォータニオンは、通常の行列による回転よりいくつか利点があり、 floa…

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

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

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

…。 ARKit や SceneKit で主に使用する float4x4 を説明する。 double4x4 は float4x4 と上限値以外は同じなので 割愛。 float4x4 と double4x4、クオータニオン以外では、以下の行列が用意されており、double や float、行列の数が違うだけで扱いは同じ。 simd_float2x2 simd_float3x2 simd_float4x2 simd_float2x3 simd_float3x3 simd_float…

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

… 3.0, 6.0) simd_step(f3_edge, f3_x) // float3(0.0, 1.0, 1.0) trunc 成分(要素)に対して絶対値以下の最も近い整数値を返す。 let f3 = simd_float3(-2.1, 2.5, 5.7) trunc(f3) // float3(-2.0, 2.0, 5.0) まとめ ARKit や SceneKit で使用する際にわりと簡単に計算できる関数が用意されていることがわかったと思われる。 次回は行列について

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

…は ARKit や SceneKit で主に使用する以下のものの説明。 double は float と上限値以外は同じなので割愛。 float3 float4 直接使用することはないが simd_bool という Bool 型の Type Alias がある。 また、今回使用しない以下のものに関しても使い方は float とさほど変わりはない。 simd_short simd_ushort simd_int simd_uint simd_long simd_ulong fl…

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

ARKit や SceneKit で使用している Accelerate フレームワークの simd ライブラリについて書いてみる。 元々は Accelerate フレームワークで vImage、vDSP や BLAS、LAPACK などを使用する際に、ハードウェアに近い部分での計算を行うために追加されたものだと予想される。 iOS 11 の SceneKit から SIMD 命令が使用できるようになっており、 以前の Apple のサンプルではサンプルのソースに simd で…

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

… とは書いているが SceneKit の機能しか使用していないため、SceneKit を使用したゲームなどでも使うことができる。 ちなみに新規性のあるネタではなく、Microsoft HoloLens でのウインドウ移動が元ネタ。 今回使用している SIMD について iOS 11 の SceneKit から SIMD 命令が使用できるようになっていた。 以前もこのブログで記事にしているが、雑に説明すると複数のデータ(レーン)を1回の処理で実行する並列化の形。 通常は SIS…

iOS 12 Programming の ARKit の章をレビュー(査読)をさせていただきました

…SpriteKit、SceneKit で先行実装されていたフォーカスのアップデートはこの本以外で語られることはないでしょう。 peaks.cc 第 I 部 Delightful Experience 第1章 Siri Shortcuts 第2章 Notifications 第3章 Password AutoFill と Authentication Services 第 II 部 Augmented Reality and Machine Learning 第4章 ARKit…

Apple A12 / A12X での Metal Feature Set Tables 更新内容

…は ARKit / SceneKit での反射や屈折のリアルさを増し、 Multiple viewports は VR のような複数のカメラでのレンダリングを想定しているように思える。 また、macOS で謎の GPUFamily が増えており、NVIDIA などの新しい Mac 向けの GPU なのか、Apple A 系のチップなのかと期待したが、どうやら今まで端末ベースで管理していたものを対応 GPU で分けるように変更したものらしい。残念。 macOS_GPUFamil…

ARKit で LUT 画像からカラーグレーディング

昨日のサンプルの方法で pointOfView の SCNCamera を取得し、LUT (look up table) 画像を使用してカラーグレーディングを行ってみる。 使い道として全体的に色味を変えたいときに使用する。 ARSCNView に直接 CIFilter で効果を入れられないので、普通なら Metal シェーダーを使うことになるが今回の方法を使用すると画像を用意するだけで変更できる。 以下、カラーグレーティングを適応した画像。 1番下は適応されていない ARKi…

ARKit で HDR や被写界深度を適応する

…してみようと思う。 SceneKit ベースの ARKit のシーン上でのカメラは、ARSCNView の pointOfView へ SCNCamera を適応しているため、 SCNCamera の HDR や被写界深度を設定するとそのまま適応されるのでかなり簡単。 SceneKit ベースの ARKit の表示とカメラについて ARKit は端末の背面ないしは前面のカメラから映像を撮り、そこから画像処理とセンサから今の場所や水平垂直などの状態を把握している。 SceneK…

Xcode 10 での Scene Editor の変更

… X, Y, Z 軸の平均で整列する。 Editor の全項目 Viewport の右クリック 上記にあったものが追加されている。 Scene Inspector の Background や Environment で Procedual Sky ちゃんと表示されるようになった。 過去記事参照 まとめ iOS SDK 12 では SceneKit の追加はほぼなかったが、Scene Editor の方は使いやすく更新がなされている。 地味な変更だかこれからも頑張ってほしい。

ARKit アプリを Unity でつくるか、SceneKit でつくるか

…ームアプリでは多分 SceneKit が使用されているケースは少ないが、 ARKit に関しては SceneKit が使用されているケースがそこそこある。 今回は SceneKit や Unity などのゲームエンジンでの違いを見ていこうと思う。 ゲームエンジンは Unity を指定しているが Unreal Engine も方のだいたい同じ感じだと思われる。 Unity で行う場合の利点 Unity でノウハウがあり、既存のコンテンツがありリソースを流用できる環境ある 豊富な…

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

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

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

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