Table of Contents

3D 空間コンテンツ表示

ARを使用する際、通常は仮想オブジェクトを表示する必要があります。簡単なテスト例では、単純な幾何学形状を使用できますが、消費者向けの開発では、一般に高精度の3Dモデルとアニメーションを表示し、モデルのノードをクリックした際にイベントやインタラクションをトリガーすることがあります。

モデル

現在一般的な3Dモデルは、通常、三角形メッシュ(triangle mesh)で構成されます。モデルをリアルに見せるためには、各三角形にマテリアル(material)を割り当てる必要があります。マテリアルは通常、何らかのライティングモデルを実装し、その内容はテクスチャとライティングモデルパラメータで構成されます。

  • テクスチャ(texture)は、三角形内の各点のベースカラーを決定し、すべての三角形のテクスチャは1枚または複数のディフューズテクスチャに配置されます。高度な使用法では、テクスチャを使用して各点の法線方向やその他のパラメータを表現することもできます。
  • ライティングモデル(lighting model)は、オブジェクトが光とどのように相互作用するかを定義し、一般的なものにPBRがあります。ライティングモデルは通常、シェーダーを使用して実装されます。PBRライティングモデルのパラメータには、色、メタリックネス、ラフネスなどがあります。

アプリケーション開発では、通常、OpenGL / Metal / Vulkan / Direct3D上で直接3Dモデルをロードせず、3Dエンジンを使用してロードします。3Dエンジンでは、歴史が長く比較的読みやすいobj / mtlフォーマットや、現在広く使われているglTFフォーマットなど、特定の3Dモデルフォーマットの使用が求められます。

アニメーション

モデルを動かすためには、スケルタルアニメーションを使用する必要があります。スケルタルとは、3Dモデルにおいて剛体運動時に一貫した動きをする大きなモデルノードの塊を指します。

アニメーションを表示するには、実行時にモデルノードの位置と姿勢(変換行列)を継続的に更新する必要があります。ほとんどの3Dエンジンはアニメーション機能を提供しており、アニメーション制作ソフトウェアでアニメーションを編集し、3Dエンジンがサポートするフォーマットでエクスポートするだけで、3Dエンジン内で使用できます。前述のglTFフォーマットもアニメーション機能を含んでいます。

インタラクション

ユーザーがモデルノードをクリックした際に、イベントやインタラクションをトリガーする必要がある場合があります。一般的には、スケルタルアニメーション内のボーンに名前を付け、衝突検出またはレイキャストを使用して、クリック時にイベントをトリガーし、クリックされたボーンの名前を返します。イベントの処理は、スクリプトまたはアプリケーションコードを使用して行うことができます。

注記

3Dエンジンの使用経験に不安がある場合は、アプリケーション開発にUnityの使用を強くお勧めします。EasyAR Sense Unity PluginはUnityをよくサポートしています。他の3Dエンジンを使用する場合、サポートや利用可能なリソースが少なくなる可能性があります。