Apple Engine

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

開発

ARKit や SceneKit で寿司を回す

前回の横に流れる文字の続き。 SpriteKit の SKScene でラベルをアニメーションさせたものを円筒状のジオメトリのマテリアルにテクスチャとして貼り付けて を流すとARKit で寿司を回る。 寿司を回す ARBoardSK からの変更 ジオメトリ ジオメトリを平面から…

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

横に流れる文字(SceneKit) AR 空間で文字数の多いテキストを表示する場合、 紙のように板ポリゴン一面や空間にするケースがあると思われる。 AR は現実空間と密接になっているため、サイズが小さいと近くに寄る必要があり、逆に大きいと全体を見る為に遠ざ…

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

以前の記事で SpriteKit の SKVideoNode を使用して SceneKit のテクスチャに動画をループ再生する記事を書いた。 SpriteKit のシーンを貼り付けているため、基本的には SpriteKit で使用している機能を使いアニメーションや インタラクションをテクスチャと…

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 の…

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

昨日のサンプルの方法で pointOfView の SCNCamera を取得し、LUT (look up table) 画像を使用してカラーグレーディングを行ってみる。 使い道として全体的に色味を変えたいときに使用する。 ARSCNView に直接 CIFilter で効果を入れられないので、普通なら …

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

ARKit で HDR や被写界深度を適応してみようと思う。 SceneKit ベースの ARKit のシーン上でのカメラは、ARSCNView の pointOfView へ SCNCamera を適応しているため、 SCNCamera の HDR や被写界深度を設定するとそのまま適応されるのでかなり簡単。 SceneK…

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」で表示していたが、 該当部分とショートカットキーがなくなった。 ヘッダー…

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

ゲームアプリでは多分 SceneKit が使用されているケースは少ないが、 ARKit に関しては SceneKit が使用されているケースがそこそこある。 今回は SceneKit や Unity などのゲームエンジンでの違いを見ていこうと思う。 ゲームエンジンは Unity を指定してい…

ARKit 2 の AREnvironmentProbeAnchor をマニュアル設定で配置する

Beta 版から記事を起こしているため今後変更される可能性あり。 先回、AREnvironmentProbeAnchor を automatic にして自動的に置いたので、今回はマニュアル設定で設置してみる。 どうやら、反射設定を行ったマテリアルの近辺に 複数 AREnvironmentProbeAnch…

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 4 の ARKit 2 変更内容

Beta 版から記事を起こしているため今後変更される可能性あり。 ARKit 1.0 や 1.5 は Beta 中は、ほぼほぼ変更はなかったが 今回はテストしながら必要な機能を少しずつ増やしている模様。 Beta 4 は以下のような更新。 変更数 追加 (Added) 1 変更 (Modified…

iOS 12 SDK Bata 3 の ARKit 2 変更内容

Beta 版から記事を起こしているため今後変更される可能性あり。 物体認識のクラス ARReferenceObject で参照オブジェクトの情報をマージできるようになった。 それに伴いマージ失敗のエラーが追加されている。 追加 ARSessionObserver ARError.Code objectMe…

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

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