SceneKit
条件は iPhone の一部機種のみだが、Xcode 12.2 の SceneKit の Game テンプレートを新規作成し、ビルドすると上下に黒い枠が出る。 (ランドスケープは左右にでる) UIWindowScene のデフォルトサイズなので、なんかなと思っていたら、LaunchScreen.storybo…
RealityKit が AR 向けとして出ているが、SceneKit はこれかも続くだろうと淡い期待をしている。 RealityKit が AR 向けと書いているように、現状は SceneKit を置き換えるにはかなり機能が少ない。 そもそも SceneKit は汎用的な 3DCG を表示するためにつく…
Xcode 11 での SceneKit でマテリアルのライティングモデル (Lighting Model/Shading) では新しくShadow Only が追加された。 使用用途としては AR の際に影だけ描画したい場合など。 現状では AR の現実空間の表示は画像に過ぎないので、影を落とすことがで…
マテリアルにクリアコートが追加された。 車のボディ、プラモデルの塗装やネイルなどで使用される通常の塗装の上に透明な塗料を塗ることで塗装の光沢が変わる見た目を表す。 光沢を足すため暗いマテリアルのカラーだったり、クリアコートの Intensity の数値…
カメラで3つの機能が追加された。 Scene Editor で3つ目の機能を使用し操作すると現状では Xcode が 100% クラッシュするので注意。 プロパティやメソッドは過去記事参照。 Bloom の追加機能 Scene Editor 上でカメラの Bloom に Iteration と Spread のパラ…
スクリーンスペースリフレクション (Screen-Space Reflection) とは 前回のリフレクションプローブと異なりカメラから反射を推定する。 そのため正確な反射にならない場合が多いが、それっぽい感じの表現をすることができる。 リフレクションプローブはライ…
リフレクションプローブ(Reflection Probe)とは? ライトプローブ同様に周囲の光(色)をキューブマップとして焼き込み、周りの反射するマテリアルに適応する。設定方法はライトプローブと変わらない。 ARKit の environmentTexturing プロパティ、AREnvir…
エリアライト (Area Light) が追加された。 ライトタイプを area に変更するだけ。 let light = SCNLight() light.type = .area プロパティやメソッドなどは過去記事参照。 エリアライト いわゆる面光源。 diffuse に柔らかに光を当て、面光源の形状のハイラ…
リリース版が出たので詳細を書いていこうと思う。 コードのプロパティやメソッドは過去記事参照。 Scene Editor の変更 エリアライトの追加 リフレクションプローブの追加 シーン全体のスクリーンスペースリフレクションの追加 カメラの Bloom のプロパティ…
変更されたものは2つ。 simd framework から Swift Standard Liblary の SIMD Vector Types に変更された。 SCNVector3 init が float3 から SIMD3 double3 から SIMD3 に変更された。 init(SIMD3<Float>) init(SIMD3<Double>) SCNVector4 init が float4 から SIMD4 double</double></float>…
追加 SCNMaterial、LightingModel で shadowOnly が追加された。 多分、AR などで影だけ表示するためのジオメトリのマテリアル用に追加されたのだろうと思う。 developer.apple.com 変更 修飾子 が unowned(unsafe) から weak に変更されたもの。 SCNParticl…
以下の変更が行われた。 記事のままでは動かず、書き直すのが面倒なので、 リンク先のサンプルコードの ContentView.swift を参照。 Beta 4 BindableObject が ObservableObject に変更 BindableObject が didChange から willChange へ変更 List や ForEach…
今回も SceneKit のセッションがなく、ドキュメントの説明もないのでメソッドやプロパティ名から予想。 間違っていたらすみません。 ちなみに、Scene Editor の変更がそれなりにありそうなのだが NDA 的に紹介できないのでそのうち。 長いので最初にまとめ …
3DCG レンダリングと AR 補助機能を持った RealityKit が発表された。 RealityKit の説明をしつつ、最後に SceneKit との違いを考えてみる。 今回はコードでの説明はないので注意。 現状 Beta 版であるため公開されている情報からのまとめ。 以下の情報に関…
SCNView の snapshot() メソッドでシーン自体のスクリーンショットを取得できる。 スレッドセーフでいつでも呼べるとはドキュメントには書いてあるが処理時間がかかるので連続で呼ぶとフレームが落ちる。 そのため、別の方法を使い Metal の命令から SceneKi…
今までに自分が作成してきたサンプルはジオメトリの影をテクスチャで表現してきたが、ライトを置きジオメトリの影を描画したい時があるかもしれない。 ARKit の場合、現実空間と仮想のジオメトリを合成するため、平面認識後アンカーノードとしてジオメトリを…
SCNCamera にフリンジの設定があるので、 colorFringeStrength と colorFringeIntensity を調整するだけ。 let mainCamera = sceneView.pointOfView?.camera mainCamera?.colorFringeStrength = 5 mainCamera?.colorFringeIntensity = 0.5 Strength はフリン…
上の画像の様な感じ。 カメラから対象物となるジオメトリがフォーカスから外れるとジオメトリがある方向に、端末を回転する様に促す矢印の UI が出る。 今回はサクッとつくったため、あまり精度はないのでご了承いただきたい。 流れ overlayScene に左右矢印…
画像の色情報とともにジオメトリを配置 上の画像の様な感じでピクセル分だけジオメトリを複製してマテリアルに色を付ける。 各ジオメトリのマテリアルの色が変わる可能性があり、GPU による Geometry Instancing が働かず、 ドローコールが画像のピクセル分…
前回の横に流れる文字の続き。 SpriteKit の SKScene でラベルをアニメーションさせたものを円筒状のジオメトリのマテリアルにテクスチャとして貼り付けて を流すとARKit で寿司を回る。 寿司を回す ARBoardSK からの変更 ジオメトリ ジオメトリを平面から…
横に流れる文字(SceneKit) AR 空間で文字数の多いテキストを表示する場合、 紙のように板ポリゴン一面や空間にするケースがあると思われる。 AR は現実空間と密接になっているため、サイズが小さいと近くに寄る必要があり、逆に大きいと全体を見る為に遠ざ…
以前の記事で SpriteKit の SKVideoNode を使用して SceneKit のテクスチャに動画をループ再生する記事を書いた。 SpriteKit のシーンを貼り付けているため、基本的には SpriteKit で使用している機能を使いアニメーションや インタラクションをテクスチャと…
Xcode の多分 10.1 から Metal のシェーダーファイルを Material Inspetor > Propaties > Shading で設定できるようになった。 内容的には SCNProgram が Scene Editor でできるようになった感じ。 Metal のカスタムシェーダーファイルを作成する 新規ファイ…
今回、更新はない。 Swift の場合は、Swift 5 へのアップデートに伴い構造体のイニシャライズで変更 (Modified) があるため、ARKit、SceneKit、SpriteKit でも広範囲で更新がかかっている。 更新はかかっているが機能的な変更はない。 まとめ 多分、今回更新…
SCNScene から USDA が書きだせたので調べながら手書きで書いてみる。 今回は Apple 製品で動くものなので、実際の USD の仕様と異なるので注意。 本来は公式ページから GitHub へ行きツール群をビルドしそこから振る舞いを調べるべきなのだが、自分の環境だ…
Model I/O framework は Metal で使用する一連をアセット操作するものがああり、ファイルを読み込んでアセットにしたり、アセットを別のファイル形式に書き出すことができる。 アセットの設定は Model I/O の MDLAsset を使用するのだが、MDLAsset では Scen…
原因不明。 現象 Automatically manage signing で Team を設定し実機にビルド。 最初は実機で動作したが、scnassets フォルダにファイルを追加すると 「Command CodeSign failed with a nonzero exit code」でビルドが止まる。 対処法 scnassets フォルダを…
SceneKit でグローなパーティクルのサンプルがなかったのでつくってみることにした。 つくってから気がついたが Apple 謹製のサンプルファイル Fox 2 での背景の火の粉のパーティクルがそれに当たる。 パーティクルにグローができる原理 デフォルト / HDR + …
今回はクォータニオンで使用する線形補間の関数について。 基本的には球状での回転の補間となる。 用意されている関数は以下のもの。 simd_slerp simd_slerp_longest simd_spline simd_bezier ちなみに線形補間に関しては iOS でサンプルアプリがあるのでそ…
今回はクォータニオンで使用する関数について。 線形補間関連の関数はまたいずれ。 演算子と関数について書くが、基本的にはプロパティと関数が対になっている。 演算子 等価演算子と四則演算が可能。 +, - に関しては値が加算、減算されるため、正規化しな…