ARSession Class

Description

在场景中控制AR会话的 MonoBehaviour 。一个会话包含一组组装成 ARAssembly 的组件,并控制整个生命周期的数据流。这个组件是AR的入口,如果要实现完全不同的AR工作流可以创建一个新的会话类并在场景中替换这个类。

Camera 和一部分AR组件之间的相对transform是受session控制的,其中的一个物体被称为 ARSession.CenterObject ,它在场景中不动,其它物体相对这个 ARSession.CenterObject 运动。这个物体是根据 ARSession.CenterMode 的数值进行选择的。更详细的说明可以查看 ARSession.ARCenterMode 的描述。


Enums

public enum ARSession.ARCenterMode

AR中心模式。

public enum ARSession.ARHorizontalFlipMode

水平镜像渲染模式。

public enum ARSession.SessionState

Session的状态。


MonoBehaviour Messages

private void Start()

private void OnDestroy()


Fields

CenterMode

C#

public ARSession.ARCenterMode CenterMode

AR中心模式。可随时修改,立即生效。如果指定的模式不可用,它将会被自动修改为可用的模式。

HorizontalFlipNormal

C#

public ARSession.ARHorizontalFlipMode HorizontalFlipNormal

正常相机的水平镜像渲染模式。可随时修改,立即生效。仅在使用图像或物体跟踪时可用。

HorizontalFlipFront

C#

public ARSession.ARHorizontalFlipMode HorizontalFlipFront

前置相机的水平镜像渲染模式。可随时修改,立即生效。仅在使用图像或物体跟踪时可用。


Properties

SpecificTargetCenter

C#

public GameObject SpecificTargetCenter { get; set; }

手动指定的中心物体。 ARSession.CenterMode == ARSession.ARCenterMode.SpecificTargetARSession.CenterObject 将被设成这个物体。可随时修改,立即生效。

该物体必须包含以下任一组件: TargetController , SparseSpatialMapRootController 或 SpatialMapRootController 。

CenterObject

C#

public GameObject CenterObject { get; }

这个session在当前帧使用的中心物体。

这个物体表示在Unity空间中不运动的物体或这个物体的父节点。它可能是 ARSession.OriginARAssembly.Camera 或某个 targetTarget 可以是包含以下任一组件的物体: TargetController , SparseSpatialMapRootController 或 SpatialMapRootController 。在使用稀疏空间地图和云空间地图的时候,实际的中心 GameObject 是root节点下具体定位到的map物体, ARSession.CenterObject 是这个物体的父节点。更详细的说明可以查看 ARSession.ARCenterMode 的描述。

Assembly

C#

public ARAssembly Assembly { get; }

AR组件的组装体。

FrameCameraParameters

C#

public Optional< CameraParameters > FrameCameraParameters { get; }

当前帧的 CameraParameters

AvailableCenterMode

C#

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

当前session可用的中心模式。

Origin

C#

public GameObject Origin { get; }

在任一运动跟踪功能运行时的session原点。

TrackingStatus

C#

public Optional< MotionTrackingStatus > TrackingStatus { get; }

在任一运动跟踪功能运行时的运动跟踪状态。

State

C#

public ARSession.SessionState State { get; }

当前session的状态。


Delegates

FrameChangeAction

C#

public delegate void FrameChangeAction( OutputFrame outputFrame, Quaternion displayCompensation)

输出帧发生改变的委托。


Events

FrameChange

C#

public event ARSession.FrameChangeAction FrameChange

输出帧发生改变的事件。该事件会在数据本身产生变化的时候发生,频率受 FrameSource 数据变化(比如 CameraDevice 帧率)影响。

FrameUpdate

C#

public event Action< OutputFrame > FrameUpdate

输出帧更新事件,该更新频率和MonoBehaviour Update频率相同。

StateChanged

C#

public event Action< ARSession.SessionState > StateChanged

session状态改变的事件。


Methods

ImageCoordinatesFromScreenCoordinates

C#

public Optional< Vector2 > ImageCoordinatesFromScreenCoordinates( Vector2 pointInView)

从屏幕坐标系([0, 1]^2)变换到图像坐标系([0, 1]^2)。 pointInView 需要被归一化到[0, 1]^2。