Table of Contents

Class ThreeDofCameraDeviceFrameSource

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

在場景中控制3DOF相機裝置(ThreeDofCameraDeviceFrameSource)的MonoBehaviour,於Unity環境下提供功能擴充。

此frame source屬於3DOF旋轉追蹤裝置,在ARSession中會輸出旋轉資料。

public class ThreeDofCameraDeviceFrameSource : FrameSource
繼承
ThreeDofCameraDeviceFrameSource
繼承成員

欄位

DesiredFocusMode

預期的對焦模式,需於DeviceOpened事件或OnEnable前修改方有效。

注意:受硬體或系統限制,對焦開關在部分裝置上可能失效。

public ThreeDofCameraDeviceFocusMode DesiredFocusMode

屬性

Camera

僅於建立新frame source時提供。僅在Assemble()過程中被存取。

於桌面裝置或手機上,此相機代表現實環境中相機裝置在虛擬世界對應的Camera,其投影矩陣與位置皆與真實相機對應,由EasyAR控制。在頭戴裝置上,此相機僅用於將診斷文字顯示於眼前,不參與畫面渲染,且相機不受EasyAR控制。

protected override Camera Camera { get; }

CameraCandidate

Camera的替代選項,僅在未使用Unity XR Origin時有效,未設定則採用Camera.main。

public Camera CameraCandidate { get; set; }

CameraFrameStarted

僅於建立新frame source時提供。將於ARSession整個生命週期中存取。

相機幀是否開始輸入。

protected override bool CameraFrameStarted { get; }

DesiredSize

預期相機影像尺寸,需於DeviceOpened事件前修改方有效。

將採用SupportedSize中最接近的數值大小。未設定則使用預設值。

public Optional<Vector2Int> DesiredSize { 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; }

FrameRateRange

幀率範圍。僅在Opened為true時可用。

public Vector2 FrameRateRange { get; }

IsAvailable

僅於建立新frame source時提供。僅在Assemble()過程中被存取。

當前frame source是否可用。

若值為null,將調用CheckAvailability(),並於Coroutine結束後取得數值。

protected override Optional<bool> IsAvailable { get; }

IsCameraUnderControl

僅於建立新frame source時提供。僅在Assemble()過程中被存取。

當值為true時,session將更新相機的transform並渲染相機影像。

建立頭戴裝置擴充時,此值應設為false。你需完全掌控場景中的3D相機,尤其於VST模式下需自行處理相機渲染。

protected override bool IsCameraUnderControl { get; }

IsHMD

僅於建立新frame source時提供。僅在Assemble()過程中被存取。

當前frame source是否為頭戴裝置。若為頭戴裝置,診斷資訊將顯示於相機前的3D面板上。

部分frame filter在裝置上運行會有差異。

protected override bool IsHMD { get; }

Opened

相機是否開啟。

public bool Opened { get; }

Size

當前影像尺寸。僅在Opened為true時可用。

設定時會使用SupportedSize中最接近的數值大小。

若於FrameRecorder錄製過程中修改影像尺寸,錄製資料將停止更新,需關閉後重新錄製。

public Vector2Int Size { get; set; }

SupportedSize

當前裝置支援的所有影像尺寸。僅在Opened為true時可用。

public List<Vector2Int> SupportedSize { get; }

方法

Close()

關閉裝置。

public void Close()

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先於session銷毀,此方法將不被調用且session將損毀。

protected override void OnSessionStop()

Open()

開啟裝置。若未手動調用Open()Close()ARSession啟動後將自動執行Open()

public void Open()

事件

DeviceClosed

裝置關閉事件。

public event Action DeviceClosed

DeviceOpened

裝置開啟事件,布林值表示是否成功。

public event Action<bool, PermissionStatus, string> DeviceOpened