ARFoundation之路-ARSession&ARSessionOrigin

  プロジェクトの前に、我々は最初のARSessionとARSessionOrigin二つのオブジェクトに階層ウィンドウを追加し、ARアプリケーションの最も基本的なのための枠組みを構築し、これらの二つのオブジェクトは、他のすべてのスタッフは、この基盤を展開し、次にこのARアプリケーション全体からの二つのオブジェクトの役割は何ですか?

ここに画像を挿入説明

(A)ARSession

  二つの成分は、図に示すように、1つは、ARSession、セッションマネージャ、他のAR入力マネージャー、管理情報が入力される含むARSessionオブジェクト。ARアプリケーションの状態管理にセッションでAR(セッションのために中国語の翻訳)、アプリケーション・ライフサイクル・プロセスAR、AR APIのメインエントランス、ARは、その制御により、ターゲットプラットフォーム上で有効化または無効化。ライフサイクルの対応ユニティセッションに対処するためのライフサイクル・アプローチでは、このようなARアプリケーションを起動したり、キャプチャカメラフレーム、初期化を一時停止したり、関連するリソースを解放する必要性に基づいて行われます。ARシーンARSessionアセンブリが含まれている必要がありますが、ARSessionは通常、管理上の目的のために、我々はARSessionオブジェクトにマウントされ、任意のシーンオブジェクトに掛けることができます。

  AR入力Managerコンポーネントは、このコンポーネントを追跡、有効になっていない、必要なコンポーネントを追跡するために世界を可能にすることにある機器の姿勢を得ることができない(トラッキングドライバポーズ)ドライバのポーズ。
ここに画像を挿入説明
  あなたがアプリケーションの実行中にARSessionを無効にした場合、システムはもはや自分の環境と関連する機能で特徴点を追跡しませんが、後でそれを再有効にした場合、システムは、以前に検出された特徴点情報を回復しようとします。デバイスは、プラットフォームに依存し、可能な場合は、この機能をサポートしているARソフトウェアをインストールするには、のAndriodプラットフォーム上で、Arcoreのの最新バージョンをインストールしようと試みるだろう、「アップデートを試み」を選択し、iOSのプラットフォーム上で、最新版をインストールしようとしますARKit。

  特に注目すべきは、これらのコンポーネントがで管理しようとすること、複数のARSessionシーンがあるので、もしARアプリケーションのいずれかで、そこに1であり、唯一のセッションを許可され、Unityはそのためのセッションは、グローバルコンポーネントに設定することARSessionですセッション。同様に、AR入力Managerコンポーネントは、唯一のことができます。

  すべての種類の多くの携帯電話プラットフォームの機器ではなく、すべてのプラットフォームではARFoundationをサポートしていますので、私たちはそのステップの操作時やデバイスがARアプリケーションをサポートしていませんが、セッションに応じた状態での代替の方式を提供することができるように、いくつかのセッションの状態は、プラットフォームの可用性を示します必要があります。

  (例えば、デバイスがサポートしており、ソフトウェアがインストールされているかどうかARセッションが動作している場合)は、現在のセッション状態を決定するには、ARSessionState列挙型を使用することができます、また、セッション状態のサブスクリプションARSession.stateChangedイベントを変更することができます。ARSessionState列挙は次の種類が含まれています。

ARSessionState 説明
利用可能かチェックしている アプリケーションは、機器の可用性をテストしています。
装着 ARソフトウェアは、(電話やARKitこの場合Arcoreの端に)設置されています。
NeedsInstall デバイスは、ARがサポートされていますが(電話やARKitのArcoreのエンドと呼ぶ)は、適切なソフトウェアをインストールする必要があります。
無し アプリケーションがまだ初期化を完了していない、デバイスの可用性は不明です。
レディ 利用可能と準備AR。
SessionInitializing ARセッションは、デバイスで使用可能な通常のAR、初期化されますが、ARアプリケーションは、まだ十分な環境情報を収集していません。
SessionTracking 通常の動作や通常のトラッキング状態でのセッション。
非対応 デバイスは、ARをサポートしていません。

  したがって、我々は次のコードでARアプリケーションの現在の状態を検出することができます。

        if (ARSession.state == ARSessionState.None || ARSession.state == ARSessionState.CheckingAvailability)
        {
            //设备状态未知
        }
        if (ARSession.state == ARSessionState.Unsupported)
        {
            // 设备不支持AR
        }
        else
        {
            // 设备支持AR
        }

(二)ARSessionOrigin

  以下に示すように、ARセッションオリジン・オブジェクトは、デフォルトTransfrom ARセッション起源アセンブリおよびコンポーネントを有します。

ここに画像を挿入説明
  ARセッションオリジン・アクション・アセンブリは、ポーズUnityのシーンの終了位置、向き及びスケールにオブジェクト(例えば、平面と特徴点)情報を追跡します。セッションマネージャによってAR装置なぜなら、このようARセッション原点座標空間変換を実行するように相対ノンスケール空間ARセッションが開始されており、姿勢情報「セッション空間(セッション・スペース)」を取得し、その座標空間を変換するために団結、これはモデルのすべての部分が比較的独自の座標系を構築している、私たちはモデルを作る際に、たとえば、モデルは、我々は通常、独自の座標系を持って、ローカル空間からワールド空間への変換モデルに似ています私たちが所有するモデルは、Unityにこれらのモデルは、すべての頂点の位置情報モデルはワールド空間で参照座標のユニティ原点に変換する「モデル空間」または「ローカル空間」と呼ばれるシステムを、座標。また、追跡装置は、「セッション・スペース」でARデバイスによって生成されたポーズを、したがって、座標変換を行うことができますワールド座標空間にUnityに変換することです。

  ARセッションオリジンもカメラパラメータを受け取り、カメラがARカメラであり、ユーザ機器カメラとARカメラを追跡することによって整列させることができるARセッション空間と位置合わせしながら、特定の場所での仮想物体の視点レンダリングを補正することができるように、ドライバコンポーネントポーズ。

  仮想オブジェクトをレンダリングするためのより便利な、ARセッション起源は、仮想物体とカメラの相対オフセットをスケーリングできます。あなたがズーム機能を使用するか、オフセットされている場合は、子オブジェクトは(デフォルトはサブオブジェクトである)、カメラがセッションによって駆動されている場合、カメラはように配置、セッションの起源をARなければなりませんし、ARセッション原点オフセットスケーリング、カメラが検出し、追跡することができますスケーリングは、オブジェクトと一緒にシフトしています。

  要将缩放应用于AR Session Origin,只需设置其Transform 中的Scale值,将偏移应用于AR Session Origin,只需设置其Transform 中的Position值,这里设置的缩放与偏移会影响所有虚拟物体的渲染,较大的Scale值将会使AR虚拟内容显示得更小,例如,10倍的Scale将使虚拟对象显示小10倍,而0.1将使虚拟对象显示大10倍。在需要整体缩放虚拟物体时可以考虑调整该值。

  AR Session Origin对象还有一个子对象AR Camera,AR Camera默认挂载Tracked Pose Driver 、AR Camera Manager、AR Camera Background,如下图所示。
ここに画像を挿入説明
  Tracked Pose Driver 组件主要作用是将Unity中的场景摄像机与设备的真实摄像机对齐,即是根据设备真实摄像机的位置与方向来调整Unity中的场景摄像机姿态,通过与真实摄像机对齐匹配,Unity中场景摄像机与设备真实摄像机所有参数均一致(即拥有相同的投影矩阵),这样设置后真实摄像机与AR Session Space也是匹配的,由此来保证从Unity中渲染的虚拟物体在真实世界中的位置与姿态正确。反而言之,如果没有该组件,Unity渲染的虚拟物体将会在真实世界中杂乱无章。Tracked Pose Driver 组件还有一些控制参数,可以根据工程需要进行选择,甚至可以自己写姿态控制脚本。

  AR Camera Manage组件负责处理控制摄像机的一些细节参数,如表示纹理和控制光照估计模式。其有两个参数Focus Mode 和 Light Estimation Mode,相关意义如下表所示:

参数 选项
Focus Mode 摄像机对焦模式,可以为“Auto”或“Fixed”,Auto即允许摄像机自动对焦,一般我们会选择此模式,Fixed即为固定焦距,固定焦距不会改变设备摄像机焦距,因此,与被拍摄物体距离不合适时就是出现模糊的现象。
Light Estimation Mode 光照估计模式,可以为“Disable”或“Ambient Intesity”,选择Ambient Intesity将启用光照估计功能,ARFoundation将根据真实世界中的光照信息来评估当前环境中的光照强度、光照颜色、光照方向等信息,这个评估每一帧都要进行,所以如果不需要光照估计功能时选择Disable可以节约资源。

  在AR中,我们以真实环境做为背景,因此我们需要将摄像机捕捉到的图像渲染成背景,使用AR Camera Background组件就可以轻松实现这个功能。AR Camera Background组件还有两个参数Use Custom Material和Use Custom Render Asset ,这两个参数均为可选项。Use Custom Material、Use Custom Material一般情况下我们都不用勾选,这个默认会由Unity根据平台来进行背景渲染,但如果勾选,我们就要提供背景渲染的材质、Shader,利用这两个选项可以实现一些高级功能,如背景模糊、描边等。

  如果在场景中只有一个AR Session Origin,我们可以简单的为其添加一个AR Camera Background就可以将摄像机的图像渲染成背景,但如果有多个AR Session Origin,有多个摄像机(例如在不同的缩放尺度上渲染场景),那么这时我们就要为每一个AR Session Origin、每一个摄像机指定一个AR Camera Background组件并进行相应设置。

  ARSessionとARSessionOriginすべてのARアプリケーションが必要とされているアプリケーション全体のライフサイクル管理AR、ARカメラヘッドと処理バックグラウンドレンダリング関連の仕事を担当するが、これらの努力は、ハードウェアデバイスと対話する必要があり、通常、非常に複雑になります。2つの機能モジュールは、優れたカプセル化処理を行っていると、ユーザーは、もはや大幅にARアプリケーション開発の難しさを簡素化しており、具体的な詳細を心配する必要はありません。

リファレンス

  AR財団についてAR財団について

おすすめ

転載: blog.csdn.net/yolon3000/article/details/93914012