拡張現実開発の前に 3D エンジンを選択する
AR 開発の第一歩は、適切な 3D エンジンを選択することです。この章では、3D エンジンが必要な理由、AR 開発で一般的な 3D エンジン、およびそれぞれの長所と短所について説明します。
AR に 3D エンジンが必要な理由
拡張現実は、カメラ映像に 2D または 3D 画像を単純に重ねるものではなく、リアルタイム 3D システムです。その中核機能には、次のようなものも含まれます。
実カメラのモデリング
レンダリングされた仮想オブジェクトを現実世界でより自然に見せるには、実際のカメラ映像で使用されるパラメータ、たとえば内部パラメータ、外部パラメータ、歪みモデルなどに基づいて、レンダリングに使用する 3D エンジン内のカメラの投影行列を調整する必要があります。
空間座標系の管理
デバイス、環境、AR コンテンツなどの位置と姿勢を統一的に管理し、ワールド座標、カメラ座標、デバイス座標の選択、設定、変換を担当します。
リアルタイム 3D レンダリング
リアルタイムに推定されたシーン深度または再構築された mesh に基づいて、仮想オブジェクトと環境のリアルな遮蔽効果を実現し、照明推定アルゴリズムに基づいて影をシミュレートして、仮想と現実の自然な融合効果を実現します。
リソースと lifecycle の管理
仮想 AR リソースとコンテンツを管理し、その読み込み、表示、アンロードなどの lifecycle 管理を行います。
これらの機能は、典型的な 3D エンジンの中核的な責務を構成します。そのため、具体的なプロジェクト要件に応じて適切な 3D エンジンを選択することは、AR 効果を迅速に実現するための必要な前提条件の 1 つです。
一般的な 3D エンジン
EasyAR は、Unity、Unreal、native 開発など、複数の一般的な 3D エンジンをサポートしています。EasyAR は Unity と Native 向けのサンプルおよび開発ドキュメントを提供しています。
Unity
Unity は汎用リアルタイム 3D エンジンとして位置付けられており、現在ほとんどの AR 開発者にとって第一の選択肢です。Unity は Windows/macOS および iOS/Android/visionOS などのクロスプラットフォーム開発をネイティブにサポートしています。Unity エコシステムは成熟しており、ドキュメントとサンプルも充実しています。
Native
Unity などの高レベルにラップされたエンジンを使用する場合と比べ、OpenGL、Vulkan、Metal などの native グラフィックス API を直接使用して AR 開発を行う利点は、システム依存が少なく、実行環境を極めて簡素化でき、カメラモデルや低レベルアルゴリズムを深くカスタマイズできることです。一方で native API 開発は、開発コストと保守コストが高く、成熟したエディターやデバッグツールが不足し、反復効率が低く、クロスプラットフォーム化が難しいため、製品レベルの迅速な提供には不向きであり、通常は単純な機能の実装に使用されます。
Web
Web はインストール不要でブラウザー上ですぐに使用でき、配布とユーザー到達のコストが非常に低くなります。自然にクロスプラットフォームであり、素早い公開や大規模ユーザーアクセスに適しており、成熟した frontend エコシステムにより開発のハードルも比較的低いです。
現在、Web は AR アプリケーションにおいて依然として比較的制限されています。主な制限は、パフォーマンスがブラウザーと security sandbox に制約されること、motion tracking、occlusion、正確な照明などの AR 中核機能へのサポートが不十分であること、デバイス機能へのアクセスが制限されること、安定性と一貫性を保証しにくいことです。 したがって Web AR は、軽量な展示やマーケティングには適していますが、高精度で強いインタラクションを必要とする複雑な AR アプリケーションには適していません。