Class CameraDeviceFrameSource
- Namespace
- easyar
- Assembly
- EasyAR.Sense.dll
在场景中控制easyar.CameraDevice的MonoBehaviour,在Unity环境下提供功能扩展。
这个frame source不是运动跟踪设备,在ARSession中不会输出运动数据。
[RequireComponent(typeof(CameraDeviceDisplay))]
public class CameraDeviceFrameSource : FrameSource
- Inheritance
-
CameraDeviceFrameSource
- Derived
- Inherited Members
Fields
CameraOpenIndex
打开相机时使用的设备索引,CameraOpenMethod == DeviceIndex时使用,在DeviceOpened事件前修改才有效。
[HideInInspector]
[SerializeField]
public int CameraOpenIndex
Field Value
CameraOpenMethod
打开相机时使用的方法,在DeviceOpened事件前修改才有效。
[HideInInspector]
[SerializeField]
public CameraDeviceFrameSource.CameraDeviceOpenMethod CameraOpenMethod
Field Value
CameraOpenType
打开相机时使用的Camera类型,CameraOpenMethod == PreferredType或SpecificType时使用,在DeviceOpened事件前修改才有效。
[HideInInspector]
[SerializeField]
public CameraDeviceType CameraOpenType
Field Value
Properties
AndroidCameraApiType
在Android上,可用于获得使用的Camera API(camera1或camera2)。。仅在Opened为true时可用。
public AndroidCameraApiType AndroidCameraApiType { get; }
Property Value
AvailableCenterMode
仅当创建一个新的frame source时提供。它仅会在Assemble()过程中被访问。
所有可以使用的中心模式。
protected override IReadOnlyList<ARSession.ARCenterMode> AvailableCenterMode { get; }
Property Value
Camera
仅当创建一个新的frame source时提供。它仅会在Assemble()过程中被访问。
在桌面设备或手机上,该相机代表现实环境中相机设备在虚拟世界中对应的Camera,其投影矩阵和位置都将与真实相机对应,受EasyAR控制。在头显上,该相机仅用于将一些诊断文字展示在眼前,不用于画面渲染,相机也不受EasyAR控制。
protected override Camera Camera { get; }
Property Value
CameraCandidate
Camera的备选,如未设置会使用Camera.main。
public Camera CameraCandidate { get; set; }
Property Value
CameraCount
获得操作系统识别到的camera数量。
public static int CameraCount { get; }
Property Value
CameraFrameStarted
仅当创建一个新的frame source时提供。它会在ARSession的整个生命周期内被访问。
相机帧是否开始输入。
protected override bool CameraFrameStarted { get; }
Property Value
CameraType
camera类型。仅在Opened为true时可用。
public CameraDeviceType CameraType { get; }
Property Value
DesiredAndroidCameraApiType
期望的Android Camera Api,在DeviceOpened事件前修改才有效。
未设置将根据DesiredCameraPreference进行选择。
public Optional<AndroidCameraApiType> DesiredAndroidCameraApiType { get; set; }
Property Value
DesiredCameraPreference
创建相机设备时使用的偏好设置,在session启动前修改才有效。
public Optional<CameraDevicePreference> DesiredCameraPreference { get; set; }
Property Value
DesiredFocusMode
期望的对焦模式,在DeviceOpened事件前修改才有效。
注意:受硬件或系统限制,对焦开关在一些设备上可能无效。未设置将根据DesiredCameraPreference进行选择。
public Optional<CameraDeviceFocusMode> DesiredFocusMode { get; set; }
Property Value
DesiredSize
期望的相机图像大小,在DeviceOpened事件前修改才有效。
会使用SupportedSize中数值最接近的大小。未设置将使用默认值。
public Optional<Vector2Int> DesiredSize { get; set; }
Property Value
DeviceCameras
仅当创建一个新的frame source时提供。它会在CameraFrameStarted为true时被访问。
提供相机帧数据的设备相机。如果相机帧数据由多个相机提供,列表中需要包含所有相机。
确保在CameraFrameStarted为true时数值正确。
protected override List<FrameSourceCamera> DeviceCameras { get; }
Property Value
Display
仅当创建一个新的frame source时提供。它仅会在Assemble()过程中被访问。
提供显示系统信息。你可以使用DefaultSystemDisplay或DefaultHMDDisplay来获取默认的显示信息。
protected override IDisplay Display { get; }
Property Value
FocusMode
对焦模式。仅在Opened为true时可用。
public CameraDeviceFocusMode FocusMode { set; }
Property Value
FrameRateRange
帧率范围。仅在Opened为true时可用。
public Vector2 FrameRateRange { get; }
Property Value
FrameRateRangeIndex
设备的当前帧率范围的索引。仅在Opened为true时可用。
public int FrameRateRangeIndex { get; set; }
Property Value
Index
camera索引。仅在Opened为true时可用。
public int Index { get; }
Property Value
IsAvailable
仅当创建一个新的frame source时提供。它仅会在Assemble()过程中被访问。
当前frame source是否可用。
如果数值等于null,CheckAvailability()会被调用,数值将在Coroutine结束后获取。
protected override Optional<bool> IsAvailable { get; }
Property Value
IsCameraUnderControl
仅当创建一个新的frame source时提供。它仅会在Assemble()过程中被访问。
当值为ture时,session 会更新相机的transform,且会渲染相机图像.
在创建头显扩展时,它应为false。你应该完全控制场景中的3D相机。你应该处理相机渲染,尤其是在VST模式下。
protected override bool IsCameraUnderControl { get; }
Property Value
IsHMD
仅当创建一个新的frame source时提供。它仅会在Assemble()过程中被访问。
当前frame source是否是头显。如果是头显,诊断信息将显示在相机前的3D板子上。
部分frame filter在设备上运行会有不同。
protected override bool IsHMD { get; }
Property Value
Opened
相机是否打开。
public bool Opened { get; }
Property Value
Parameters
camera参数。仅在Opened为true时可用。
public CameraParameters Parameters { get; set; }
Property Value
Size
当前图像大小。仅在Opened为true时可用。
set会使用SupportedSize中数值最接近的大小。
如果在FrameRecorder录制过程中修改了图像大小,录制数据将停止更新,需要关闭之后重新录制。
public Vector2Int Size { get; set; }
Property Value
SupportedFrameRateRange
当前设备支持的所有帧率范围。仅在Opened为true时可用。
public List<Vector2> SupportedFrameRateRange { get; }
Property Value
SupportedSize
当前设备支持的所有图像大小。仅在Opened为true时可用。
public List<Vector2Int> SupportedSize { get; }
Property Value
Methods
AutoFocus()
Does auto focus once. It is only available when FocusMode is Normal or Macro.
public bool AutoFocus()
Returns
Close()
关闭设备。
public void Close()
OnSessionStart(ARSession)
仅当创建一个新的frame source时提供。它仅会在StartSession()过程中被访问。
处理session启动,如果这个frame source已经组装进Assembly。这个方法设计上是用来做延迟初始化的,你可以在这个方法中做AR独有的初始化工作。
protected override void OnSessionStart(ARSession session)
Parameters
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)
Parameters
on
Returns
Events
DeviceClosed
设备关闭的事件。
public event Action DeviceClosed
Event Type
DeviceOpened
设备打开的事件,bool值表示是否成功。
public event Action<bool, PermissionStatus, string> DeviceOpened
Event Type
DeviceStateChanged
设备断开或抢占等无法使用事件(仅Windows)。
public event Action<CameraState> DeviceStateChanged