Table of Contents

Class CameraDeviceFrameSource

Namespace
easyar
Assembly
EasyAR.Sense.dll

在场景中控制easyar.CameraDeviceMonoBehaviour,在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 == PreferredTypeSpecificType时使用,在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()过程中被访问。

提供显示系统信息。你可以使用DefaultSystemDisplayDefaultHMDDisplay来获取默认的显示信息。

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()

打开设备。如果未手动调用Open()Close()ARSession启动后会自动Open()

在session启动后才能使用。

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

Event Type