第2章 ARKit 堤 修一/@shu223


図2.17 認識結果のタグ付け

 『ARKitはコアな処理のみを行い、実際の描画はSceneKitやSpriteKit、Metalが担当する』ということを本章の冒頭で述べました。Metalを用いたカスタムレンダリングについてはAppleからも"Displaying an AR Experience with Metal"注28)というドキュメントが公開されています。

 しかしこのドキュメントでいう「Metalを用いたカスタムレンダリング」は、「SceneKitやSpriteKitを用いる"代わりに"、自前でMetalを用いてレンダリング処理を実装することもできる」という話で、つまりSceneKit/SpriteKitに相当する3D/2Dレンダリングエンジンを自作することを意味します。たとえばSceneKitでは実現できない機能やパフォーマンスを達成したいような場合には有効な選択肢ですが、実装の量も難度も非常に高くなってしまいます。

 これとは別に、すべてをMetalで代替するのではなく、3D空間の扱いは基本的にSceneKitを利用し、シーン内ノードのマテリアルの描画にMetalを利用する、という選択肢もあります。

 たとえば図2.18のような表現が可能です。この例ではARKitを用いて現実空間の水平面上に設置した仮想オブジェクト(のノードのマテリアル)を、Metalのシェーダを用いて描画しています。

図2.18 SCNNodeのマテリアルの描画にMetalを利用

 もっとARらしく現実空間と仮想オブジェクトを融合させた図2.19のような表現も、Metalを用いることで実現できます。

iOS 11 Programming

  • 著者:堤 修一,吉田 悠一,池田 翔,坂田 晃一,加藤 尋樹,川邉 雄介,岸川 克己,所 友太,永野 哲久,
  • 製本版,電子版
  • 続きを読む