Table of Contents

Class MetaXRFrameSource

命名空間
easyar
組件
EasyAR.Sense.Ext.MetaXR.dll

在場景中將 Meta XR 的輸出連接到 EasyAR 輸入的自定義 frame source。通過 EasyAR Sense 的自定義相機功能提供 Meta XR 支持。

這個 frame source 是一種運動跟蹤設備,在 ARSession 中會輸出運動數據。

爲了使用這個 frame source, Meta MRUK (Mixed Reality Utility Kit) 是必需的。你需要根據官方文檔配置 Meta MRUK。

public class MetaXRFrameSource : ExternalDeviceMotionFrameSource
繼承
MetaXRFrameSource
繼承成員

欄位

ConfigurePassthroughCamera

是否在運行時配置 Meta.XR.PassthroughCameraAccess。啓用時,frame source 會在啓動相機前選擇合適的相機位置和分辨率。禁用時,將保留 Meta.XR.PassthroughCameraAccess 上的設置。

public bool ConfigurePassthroughCamera

MaxCameraInputFrameRate

向 EasyAR 輸入相機數據的最大幀率。此設置不會改變渲染幀率或 Meta.XR.PassthroughCameraAccess 相機幀率。

受 Meta Meta.XR.PassthroughCameraAccess 接口限制,相機數據獲取會受到相機更新時序和 GPU 回讀延遲的影響,因此實際輸入幀率可能低於此值。

EasyAR 相機輸入幀率對啓用融合模式的圖像跟蹤、物體跟蹤以及其他 EasyAR 功能影響較小,但不建議將該值設爲 5 以下。

[Min(1)]
public int MaxCameraInputFrameRate

PreferPreciseCameraTimestamp

是否優先使用可用的 MRUK 精確單調相機時間戳。

目前 MRUK 尚未通過 EasyAR 可用的公共接口提供該時間戳,啓用此選項時會通過反射訪問私有字段。構建時會進行部分兼容性檢查,但無法覆蓋所有情況,未來 MRUK 版本變化仍可能導致該路徑失效。如果禁用此選項或精確路徑不可用,將回退到公開時間戳方案,時間同步精度可能降低。建議保持啓用;僅在排查兼容性問題時禁用。

public bool PreferPreciseCameraTimestamp

屬性

AvailableCenterMode

僅當創建一個新的frame source時提供。它僅會在Assemble()過程中被訪問。

所有可以使用的中心模式。

protected override IReadOnlyList<ARSession.ARCenterMode> AvailableCenterMode { get; }

Camera

僅當創建一個新的frame source時提供。它僅會在Assemble()過程中被訪問。

在桌面設備或手機上,該相機代表現實環境中相機設備在虛擬世界中對應的Camera,其投影矩陣和位置都將與真實相機對應,受EasyAR控制。在頭顯上,該相機僅用於將一些診斷文字展示在眼前,不用於畫面渲染,相機也不受EasyAR控制。

protected override Camera Camera { get; }

CameraFrameStarted

僅當創建一個新的frame source時提供。它會在ARSession的整個生命週期內被訪問。

相機幀是否開始輸入。

protected override bool CameraFrameStarted { get; }

CameraRigCandidate

用於獲取渲染相機和 tracking origin 的可選 OVRCameraRig。未指定時,frame source 會在場景中自動查找。

public OVRCameraRig CameraRigCandidate { get; set; }

DeviceCameras

僅當創建一個新的frame source時提供。它會在CameraFrameStarted爲true時被訪問。

提供相機幀數據的設備相機。如果相機幀數據由多個相機提供,列表中需要包含所有相機。

確保在CameraFrameStarted爲true時數值正確。

protected override List<FrameSourceCamera> DeviceCameras { get; }

Display

僅當創建一個新的frame source時提供。它僅會在Assemble()過程中被訪問。

提供顯示系統信息。你可以使用DefaultSystemDisplayDefaultHMDDisplay來獲取默認的顯示信息。

protected override IDisplay Display { get; }

IsAvailable

僅當創建一個新的frame source時提供。它僅會在Assemble()過程中被訪問。

當前frame source是否可用。

如果數值等於null,CheckAvailability()會被調用,數值將在Coroutine結束後獲取。

protected override Optional<bool> IsAvailable { get; }

IsHMD

僅當創建一個新的frame source時提供。它僅會在Assemble()過程中被訪問。

當前frame source是否是頭顯。如果是頭顯,診斷信息將顯示在相機前的3D板子上。

部分frame filter在設備上運行會有不同。

protected override bool IsHMD { get; }

Origin

設備原點。你需要在OriginTypeCustom時定義自己的原點,其它時候不需要重新定義。

protected override GameObject Origin { get; }

OriginType

設備原點類型。

protected override ExternalDeviceFrameSource.DeviceOriginType OriginType { get; }

PassthroughCameraAccessCandidate

可選的 PassthroughCameraAccess 組件。未指定時,frame source 會在場景中自動查找。

public PassthroughCameraAccess PassthroughCameraAccessCandidate { get; set; }

方法

OnSessionStart(ARSession)

僅當創建一個新的frame source時提供。它僅會在StartSession()過程中被訪問。

處理session啓動,如果這個frame source已經組裝進Assembly。這個方法設計上是用來做延遲初始化的,你可以在這個方法中做AR獨有的初始化工作。

protected override void OnSessionStart(ARSession session)

參數

session

OnSessionStop()

僅當創建一個新的frame source時提供。它會在StopSession(bool)或其它session停止/損壞過程中被訪問。

處理session停止,如果這個frame source已經組裝進Assembly。你可以使用這個方法銷燬StartSession()以及session運行中創建的資源並恢復內部狀態。在session銷燬之前這個方法會被保證調用。如果frame source在sessino之前銷燬,它將不會被調用,且session將損壞。

protected override void OnSessionStop()