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時可用。
設定會使用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