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; }
方法
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()
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