Table of Contents

3D 空間コンテンツ表示

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

モデル

現在一般的な 3D モデルは、通常 triangle mesh で構成されます。モデルをリアルに見せるには、各三角形に material を割り当てる必要があります。Material は通常、ある lighting model を実装し、その内容は texture と lighting model パラメータで構成されます。

  • Texture は三角形内の各点の基本色を決定します。すべての三角形の texture は 1 枚または複数の diffuse texture に配置されます。高度な用途では、各点の法線方向やその他のパラメータを表すために texture を使用することもできます。
  • Lighting model は、物体が光とどのように相互作用するかを定義します。一般的なものに PBR があります。Lighting model は通常 shader で実装されます。PBR lighting model のパラメータには色、metallic、roughness などがあります。

アプリケーション開発では、通常 OpenGL / Metal / Vulkan / Direct3D 上で 3D モデルを直接読み込むのではなく、3D engine を使用して読み込みます。3D engine は、歴史が長く比較的読みやすい obj / mtl 形式や、現在人気の glTF 形式など、特定の 3D モデル形式を要求します。

アニメーション

モデルを動かすには skeletal animation が必要です。Bones とは、3D モデル内で rigid-body 運動時に一貫した動きを保つ大きなモデルノードを指します。

アニメーションを表示するには、実行時にモデルノードの位置と pose(transformation matrix)を継続的に更新する必要があります。ほとんどの 3D engine はアニメーション機能を提供しています。アニメーション制作ソフトでアニメーションを編集し、3D engine がサポートする形式でエクスポートすれば、3D engine で使用できます。上記の glTF 形式にもアニメーション機能が含まれています。

インタラクション

ユーザーがモデルノードをクリックしたとき、イベントやインタラクションを発生させる必要がある場合があります。通常、skeletal animation 内の bones に名前を付け、collision detection または ray detection を使用してクリック時にイベントを発生させ、クリックされた bone 名を返します。イベント処理は script またはアプリケーションコードで行えます。

注記

3D engine の使用経験が不足している場合は、Unity を使用してアプリケーションを開発することを強く推奨します。EasyAR Sense Unity Plugin は Unity を良好にサポートしています。他の 3D engine を使用する場合、サポートや利用可能なリソースが少ない問題に直面する可能性があります。