Class CameraDeviceFrameSource
- 命名空間
- easyar
- 組件
- EasyAR.Sense.dll
在場景中控制easyar.CameraDevice的MonoBehaviour,在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 == PreferredType或SpecificType時使用,在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()過程中被訪問。
提供顯示系統信息。你可以使用DefaultSystemDisplay或DefaultHMDDisplay來獲取默認的顯示信息。
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()
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