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時可用。

set會使用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