MotionTrackerFrameSource Class

Description

在场景中控制 MotionTrackerCameraDeviceMonoBehaviour ,在Unity环境下提供功能扩展。如有需要可以直接使用 MotionTrackerFrameSource.Device

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

这个frame source 会在检查可用性时从服务器下载设备列表,超时时间为 MotionTrackerFrameSource.CalibrationDownloaderTimeout 秒。设备列表比SDK的发布更加频繁,因此一些一开始不被支持的设备可能在之后被支持,而无需重新打包应用。设置 MotionTrackerFrameSource.CalibrationDownloaderTimeout 数值小于等于 0可以关闭设备列表更新。

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


Classes

public class MotionTrackerFrameSource.MotionTrackerCameraDeviceParameters

运动跟踪参数。


MonoBehaviour Messages

protected override void Awake()

protected override void OnEnable()

protected override void OnDisable()

protected virtual void OnDestroy()


Fields

DesiredMotionTrackerParameters

C#

public MotionTrackerFrameSource.MotionTrackerCameraDeviceParameters DesiredMotionTrackerParameters

期望的运动跟踪参数,只在 MotionTrackerFrameSource.Device 启动时使用。

CalibrationDownloaderTimeout

C#

public float CalibrationDownloaderTimeout

使用 MotionTrackerFrameSource.CheckAvailability 检查设备是否支持时从服务器更新设备列表的超时时间(秒)。设置数值小于等于 0 可以跳过从服务器获取数据。

AlwaysWaitCalibrationUpdate

C#

public bool AlwaysWaitCalibrationUpdate

默认情况下,如果设备在当前列表数据下可以使用, MotionTrackerFrameSource.CheckAvailability 将立即返回,列表将在下次运行时更新。如果需要确保列表在每次运行时更新,可以打开这个选项。


Properties

Device

C#

public MotionTrackerCameraDevice Device { get; }

EasyAR Sense API,如果功能可以使用,可以在 MotionTrackerFrameSource.DeviceCreatedMotionTrackerFrameSource.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

MotionTrackerFrameSource.Device 创建的事件。

DeviceOpened

C#

public event Action DeviceOpened

MotionTrackerFrameSource.Device 打开的事件。

DeviceClosed

C#

public event Action DeviceClosed

MotionTrackerFrameSource.Device 关闭的事件。


Methods

CheckAvailability

C#

public override System.Collections.IEnumerator CheckAvailability()

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

Open

C#

public void Open()

打开设备。

Close

C#

public void Close()

关闭设备。

HitTestAgainstHorizontalPlane

C#

public List< Vector3 > HitTestAgainstHorizontalPlane( Vector2 pointInView)

在当前视野内实时检测到的水平面上进行Hit Test,点击到某个水平面后返回该平面上距离Hit Test射线最近的3D点的位置坐标。 pointInView 需要被归一化到[0, 1]^2。

HitTestAgainstPointCloud

C#

public List< Vector3 > HitTestAgainstPointCloud( Vector2 pointInView)

在当前点云中进行Hit Test,得到距离相机从近到远一条射线上的最近的一个3D点位置坐标。 pointInView 需要被归一化到[0, 1]^2。