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()過程中被存取。

當值為ture時,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時可用。

set會使用SupportedSize中數值最接近的尺寸。

如果在FrameRecorder錄製過程中修改了影像尺寸,錄製數據將停止更新,需要關閉之後重新錄製。

public Vector2Int Size { get; set; }

SupportedSize

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

public List<Vector2Int> SupportedSize { get; }

enabled

ARSession執行時開始/停止採集視訊流資料。在session啟動後,MonoBehaviour.enabled為true時才會開始採集。

public bool enabled { get; set; }

方法

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在sessino之前銷毀,它將不會被呼叫,且session將損壞。

protected override void OnSessionStop()

Open()

開啟設備。如果未手動呼叫Open()Close()ARSession啟動後會自動Open()

public void Open()

事件

DeviceClosed

裝置關閉的事件。

public event Action DeviceClosed

DeviceOpened

裝置開啟的事件,bool值表示是否成功。

public event Action<bool, PermissionStatus, string> DeviceOpened