ARFoundationFrameSource Class

Description

在场景中将AR Foundation 的输出连接到EasyAR输入的自定义frame source。通过EasyAR Sense的自定义相机功能提供AR Foundation支持。

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

为了使用这个frame source, AR Foundation 是必需的。你需要根据官方文档配置AR Foundation。

这个frame source会使用 ARFoundation.ARSession.CheckAvailability 来检查可用性。如果要在运行时选择 frame source,可以deactive AR Foundation使用的所有GameObject,并设置所有frame source可用性检查所需要的数值,然后在这个frame source被选择后active AR Foundation 的GameObject。


MonoBehaviour Messages

private void OnEnable()

private void OnDisable()

protected virtual void Awake()

protected virtual void OnApplicationPause(bool pause)

protected virtual void OnDestroy()


Fields

EnableColorInput

C#

public bool EnableColorInput

是否使用彩色图像作为frame输入。彩色图像在需要录制彩色eif文件的时候可以使用。所有EasyAR算法都不需要使用彩色图像。

AttemptUpdate

C#

public bool AttemptUpdate

如果设备支持AR Foundation但没有必要的软件,一些平台允许提示用户安装或更新软件。如果变量值为true,会尝试软件更新。如果系统中没有安装软件或软件过期,且变量值为false,这个frame source将是不可用的。


Properties

IsCameraUnderControl

C#

internal protected override bool IsCameraUnderControl { }

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

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

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

IsHMD

C#

internal protected override bool IsHMD { }

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

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

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

Display

C#

internal protected override IDisplay Display { }

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

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

IsAvailable

C#

internal protected override Optional<bool> IsAvailable { }

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

当前frame source是否可用。

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

AvailableCenterMode

C#

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

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

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

Camera

C#

internal protected override Camera Camera { }

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

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

ReceivedFrameCount

C#

public int ReceivedFrameCount { get; }

获取到的帧计数。通常在debug中使用。如果这个数值停止增长,通常是硬件问题,某些设备(比如Nreal)重新插拔可能能解决。


Methods

OnSessionStart

C#

private override void OnSessionStart( ARSession session)

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

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

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 override System.Collections.IEnumerator CheckAvailability()

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

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

TryAcquireBuffer

C#

protected Optional< Buffer > TryAcquireBuffer(int size)

尝试从内存池中获取内存块。