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

方法

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

protected override void OnSessionStop()

Open()

開啟裝置。若未手動呼叫Open()Close()ARSession啟動後會自動Open()

在session啟動後才能使用。

public void Open()

SetFlashTorch(bool)

設定閃光燈模式。僅在Opened為true時可用。

public bool SetFlashTorch(bool on)

參數

on

事件

DeviceClosed

設備關閉的事件。

public event Action DeviceClosed

DeviceOpened

設備開啟的事件,布林值表示是否成功。

public event Action<bool, PermissionStatus, string> DeviceOpened

DeviceStateChanged

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

public event Action<CameraState> DeviceStateChanged