ARKitFrameSource Class

Description

在场景中控制ARKit相机设备( ARKitCameraDevice )的 MonoBehaviour ,在Unity环境下提供功能扩展。如有需要可以直接使用 ARKitFrameSource.Device

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

如果要在运行时选择 frame source,可以deactive Camera GameObject,并设置所有frame source可用性检查所需要的数值,然后在这个frame source被选择后active Camera GameObject。


MonoBehaviour Messages

protected override void Awake()

protected override void OnEnable()

protected override void OnDisable()

protected virtual void OnDestroy()


Properties

Device

C#

public ARKitCameraDevice Device { get; }

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

IsAvailable

C#

public override Optional<bool> IsAvailable { get; }

当前frame source是否可用。

如果数值等于null,需要调用 FrameSource.CheckAvailability ,数值将在 Coroutine 结束后可以访问。这个属性会在 ARComponentPicker 选择frame source的时候使用。

WorldRoot

C#

public WorldRootController WorldRoot { get; set; }

相机运动的相对物体,如果没设置,将会自动从场景中获取或生成。

Origin

C#

public override GameObject Origin { get; }

ARSession 的原点,如果frame source可以输出运动跟踪数据。

每种运动跟踪frame source都有自己的方法来设置包含特定组件的原点物体。如果原点未设置,一些frame source会从场景中active的物体中自动选择可以使用的物体或创建一个新的物体。

AvailableCenterMode

C#

public virtual IReadOnlyList< ARSession.ARCenterMode > AvailableCenterMode { get; }

该frame source可以使用的中心模式。

Camera

C#

public virtual Camera Camera { get; set; }

在一个 ARSession 中被该frame source使用的 Camera

每种frame source都有自己的方法来检查camera是否可用,设置不可用的camera将会被拒绝。这个属性会在 ARComponentPicker 选择frame source时用来判断frame source是否可用。在这个过程中,如果数值没有设置,一些frame source会从场景中active的物体中自动选择可以使用的 Camera 。你可以在session start前设置可用的 Camera 。如果这个frame source被 ARSession 选用,这个数值将在session ready后无法修改。


Events

DeviceCreated

C#

public event Action DeviceCreated

ARKitFrameSource.Device 创建的事件。

DeviceOpened

C#

public event Action DeviceOpened

ARKitFrameSource.Device 打开的事件。

DeviceClosed

C#

public event Action DeviceClosed

ARKitFrameSource.Device 关闭的事件。


Methods

Open

C#

public void Open()

打开设备。

Close

C#

public void Close()

关闭设备。

CheckAvailability

C#

public virtual System.Collections.IEnumerator CheckAvailability()

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