ARCoreARFoundationFrameSource Class

MonoBehaviour Messages

protected virtual void OnEnable()

protected virtual void OnDisable()

protected virtual void OnDestroy()


Fields

OptimizeConfigurationForTracking

C#

public bool OptimizeConfigurationForTracking

AR Foundation默认使用的配置对EasyAR Mega来说并不是最优的,这个选项可以在运行时优化ARCameraManager.currentConfiguration。

警告:部分手机自身(比如小米10)存在bug,在修改配置之后无法获取图像,EasyAR将无法使用。使用该选项时你需要避开类似的手机或进行合理处理。


Properties

IsAvailable

C#

internal protected override Optional<bool> IsAvailable { }

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

当前frame source是否可用。

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

EnableColorInput

C#

protected override bool EnableColorInput { get; }

是否使用彩色图像作为frame输入。EasyAR Mega使用彩色图像更好。

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 来获取默认的显示信息。

AvailableCenterMode

C#

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

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

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

CameraFrameStarted

C#

internal protected override bool CameraFrameStarted { }

仅当创建一个新的frame source时提供。它会在 ARSession 的整个生命周期内被访问。

相机帧是否开始输入。

DeviceCameras

C#

internal protected override List< FrameSourceCamera > DeviceCameras { }

仅当创建一个新的frame source时提供。它会在 FrameSource.CameraFrameStarted 为true时被访问。

提供相机帧数据的设备相机。如果相机帧数据由多个相机提供,列表中需要包含所有相机。

确保在 FrameSource.CameraFrameStarted 为true时数值正确。

Camera

C#

internal protected override Camera Camera { }

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

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


Events

ConfigurationChoosed

C#

public event Action ConfigurationChoosed

ARCameraManager.currentConfiguration选择的事件。使用ARCore时,EasyAR会自动选择一个优化的配置用于内部算法。


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