EditorCameraDeviceFrameSource Class

Description

在编辑器中控制 CameraDeviceMonoBehaviour ,仅用来提供开发诊断使用。通常当这个frame source在使用的时候,你看到的所有效果都和设备上运行是不同的。你可以使用它做一些AR效果无关的应用逻辑开发,但不能凭它判断AR运行(检测、跟踪、定位等)的效果。

这个frame source不是运动跟踪设备,在 ARSession 中不会输出运动数据。


Fields

FocusMode

C#

public CameraDeviceFocusMode FocusMode

创建 CameraDeviceFrameSource.Device 时使用的聚焦模式,只在创建时使用。注意:受硬件或系统限制,对焦开关在一些设备上可能无效。

CameraSize

C#

public Vector2 CameraSize

创建 CameraDeviceFrameSource.Device 时使用的图像大小,只在创建时使用。

CameraOpenMethod

C#

public CameraDeviceFrameSource.CameraDeviceOpenMethod CameraOpenMethod

创建 CameraDeviceFrameSource.Device 时使用的方法,只在创建时使用。

CameraType

C#

public CameraDeviceType CameraType

创建 CameraDeviceFrameSource.Device 时使用的Camera类型,只在创建时 CameraDeviceFrameSource.CameraOpenMethod == CameraDeviceFrameSource.CameraDeviceOpenMethod.DeviceType 的时候使用。

CameraIndex

C#

public int CameraIndex

创建 CameraDeviceFrameSource.Device 时使用的设备索引,只在创建时 CameraDeviceFrameSource.CameraOpenMethod == CameraDeviceFrameSource.CameraDeviceOpenMethod.DeviceIndex 的时候使用。


Properties

IsAvailable

C#

internal protected override Optional<bool> IsAvailable { }

仅当创建一个新的frame source时提供。它仅会在 ARSession.Assemble 过程中被访问。

当前frame source是否可用。

如果数值等于null, FrameSource.CheckAvailability 会被调用,数值将在 Coroutine 结束后获取。

Device

C#

public CameraDevice Device { get; }

EasyAR Sense API,如果功能可以使用,可以在 CameraDeviceFrameSource.DeviceCreatedCameraDeviceFrameSource.DeviceClosed 事件之间访问。

CameraPreference

C#

public CameraDevicePreference CameraPreference { get; set; }

创建 CameraDeviceFrameSource.Device 时使用的Camera偏好设置,只在创建时使用。它会同时控制对焦模式到推荐使用值,如果需要使用特定对焦模式,需要在修改这个值之后重新设置对焦模式。

Parameters

C#

public CameraParameters Parameters { get; set; }

创建 CameraDeviceFrameSource.Device 时使用的相机参数,只在创建时使用。这个参数是高级设置,会覆盖 CameraDeviceFrameSource.CameraSize 等其它值。

Index

C#

public Optional<int> Index { get; }

cameras索引。

CameraCandidate

C#

public Camera CameraCandidate { get; set; }

CameraDeviceFrameSource.Camera 的备选,如果没设置,将会自动从场景中获取或生成。

IsHMD

C#

internal protected override bool IsHMD { }

仅当创建一个新的frame source时提供。它仅会在 ARSession.Assemble 过程中被访问。

当前frame source是否是头显。如果是头显,诊断信息将显示在相机前的3D板子上。

部分frame filter在设备上运行会有不同。

Camera

C#

internal protected override Camera Camera { }

仅当创建一个新的frame source时提供。它仅会在 ARSession.Assemble 过程中被访问。

在桌面设备或手机上,该相机代表现实环境中相机设备在虚拟世界中对应的 Camera ,其投影矩阵和位置都将与真实相机对应,受EasyAR控制。在头显上,该相机仅用于将一些诊断文字展示在眼前,不用于画面渲染,相机也不受EasyAR控制。

Display

C#

internal protected override IDisplay Display { }

仅当创建一个新的frame source时提供。它仅会在 ARSession.Assemble 过程中被访问。

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

IsCameraUnderControl

C#

internal protected override bool IsCameraUnderControl { }

仅当创建一个新的frame source时提供。它仅会在 ARSession.Assemble 过程中被访问。

当值为ture时,session 会更新相机的transform,且会渲染相机图像.

在创建头显扩展时,它应为false。你应该完全控制场景中的3D相机。你应该处理相机渲染,尤其是在VST模式下。

AvailableCenterMode

C#

internal protected override IReadOnlyList< ARSession.ARCenterMode > AvailableCenterMode { }

仅当创建一个新的frame source时提供。它仅会在 ARSession.Assemble 过程中被访问。

所有可以使用的中心模式。


Events

DeviceCreated

C#

public event Action DeviceCreated

CameraDeviceFrameSource.Device 创建的事件。

DeviceOpened

C#

public event Action DeviceOpened

CameraDeviceFrameSource.Device 打开的事件。

DeviceClosed

C#

public event Action DeviceClosed

CameraDeviceFrameSource.Device 关闭的事件。


Methods

OnSessionStart

C#

private override void OnSessionStart( ARSession session)

仅当创建一个新的frame source时提供。它仅会在 ARSession.StartSession 过程中被访问。

处理session启动,如果这个frame source已经组装进 ARSession.Assembly 。这个方法设计上是用来做延迟初始化的,你可以在这个方法中做AR独有的初始化工作。

Open

C#

public void Open()

打开设备。

Close

C#

public void Close()

关闭设备。

OnSessionStop

C#

private override void OnSessionStop()

仅当创建一个新的frame source时提供。它会在 ARSession.StopSession 或其它session停止/损坏过程中被访问。

处理session停止,如果这个frame source已经组装进 ARSession.Assembly 。你可以使用这个方法销毁 ARSession.StartSession 以及session运行中创建的资源并恢复内部状态。在session销毁之前这个方法会被保证调用。如果frame source在sessino之前销毁,它将不会被调用,且session将损坏。

CheckAvailability

C#

private virtual System.Collections.IEnumerator CheckAvailability()

仅当创建一个新的frame source时提供。它仅会在 ARSession.Assemble 过程中被访问。

FrameSource.IsAvailable 等于null时用于检查frame source是否可用的 Coroutine