Table of Contents

Class CameraDeviceFrameSource

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

在場景中控制easyar.CameraDeviceMonoBehaviour,在Unity環境下提供功能擴展。

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

[RequireComponent(typeof(CameraDeviceDisplay))]
public class CameraDeviceFrameSource : FrameSource
繼承
CameraDeviceFrameSource
Derived
繼承成員

欄位

CameraOpenIndex

開啟相機時使用的設備索引,CameraOpenMethod == DeviceIndex時使用,在DeviceOpened事件前修改才有效。

[HideInInspector]
[SerializeField]
public int CameraOpenIndex

CameraOpenMethod

開啟相機時使用的方法,在DeviceOpened事件前修改才有效。

[HideInInspector]
[SerializeField]
public CameraDeviceFrameSource.CameraDeviceOpenMethod CameraOpenMethod

CameraOpenType

開啟相機時使用的Camera類型,CameraOpenMethod == PreferredTypeSpecificType時使用,在DeviceOpened事件前修改才有效。

[HideInInspector]
[SerializeField]
public CameraDeviceType CameraOpenType

屬性

AndroidCameraApiType

在Android上,可用於獲得使用的Camera API(camera1或camera2)。。僅在Opened為true時可用。

public AndroidCameraApiType AndroidCameraApiType { get; }

AvailableCenterMode

僅當建立一個新的frame source時提供。它僅會在Assemble()過程中被存取。

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

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

Camera

僅當建立一個新的frame source時提供。它僅會在Assemble()過程中被存取。

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

protected override Camera Camera { get; }

CameraCandidate

Camera的備選方案,若未設定則使用Camera.main。

public Camera CameraCandidate { get; set; }

CameraCount

獲得操作系統識別到的camera數量。

public static int CameraCount { get; }

CameraFrameStarted

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

相機幀是否開始輸入。

protected override bool CameraFrameStarted { get; }

CameraType

camera類型。僅在Opened為true時可用。

public CameraDeviceType CameraType { get; }

DesiredAndroidCameraApiType

期望的Android Camera Api,需在DeviceOpened事件前修改才有效。

未設定將根據DesiredCameraPreference進行選擇。

public Optional<AndroidCameraApiType> DesiredAndroidCameraApiType { get; set; }

DesiredCameraPreference

建立相機裝置時使用的偏好設定,需在session啟動前修改才有效。

public Optional<CameraDevicePreference> DesiredCameraPreference { get; set; }

DesiredFocusMode

期望的對焦模式,需在DeviceOpened事件前修改才有效。

注意:受硬體或系統限制,對焦開關在部分裝置上可能無效。未設定將根據DesiredCameraPreference進行選擇。

public Optional<CameraDeviceFocusMode> DesiredFocusMode { get; set; }

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; }

FocusMode

對焦模式。僅在Opened為true時可用。

public CameraDeviceFocusMode FocusMode { set; }

FrameRateRange

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

public Vector2 FrameRateRange { get; }

FrameRateRangeIndex

裝置的目前幀率範圍索引。僅在Opened為true時可用。

public int FrameRateRangeIndex { get; set; }

Index

camera索引。僅在Opened為true時可用。

public int Index { 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; }

Parameters

camera參數。僅在Opened為true時可用。

public CameraParameters Parameters { get; set; }

Size

目前影像大小。僅在Opened為true時可用。

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

若在FrameRecorder錄製過程中修改了影像大小,錄製資料將停止更新,需關閉後重新錄製。

public Vector2Int Size { get; set; }

SupportedFrameRateRange

當前裝置支援的所有幀率範圍。僅在Opened為true時可用。

public List<Vector2> SupportedFrameRateRange { get; }

SupportedSize

當前設備支援的所有圖像大小。僅在Opened為true時可用。

public List<Vector2Int> SupportedSize { get; }

enabled

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

public bool enabled { get; set; }

方法

AutoFocus()

Does auto focus once. It is only available when FocusMode is Normal or Macro.

public bool AutoFocus()

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()

須待session啟動後方可使用。

public void Open()

SetFlashTorch(bool)

設定flash torch模式。僅在Opened為true時可用。

public bool SetFlashTorch(bool on)

參數

on

事件

DeviceClosed

裝置關閉的事件。

public event Action DeviceClosed

DeviceOpened

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

public event Action<bool, PermissionStatus, string> DeviceOpened

DeviceStateChanged

設備斷開或搶佔等無法使用事件(僅Windows)。

public event Action<CameraState> DeviceStateChanged