Table of Contents

Class ARSession

네임스페이스
easyar
어셈블리
EasyAR.Sense.dll

씬에서 AR 세션을 제어하는 MonoBehaviour입니다. 세션은 ARAssembly로 조합된 컴포넌트 세트를 포함하며, 전체 라이프사이클의 데이터 흐름을 제어합니다. 이 컴포넌트는 AR의 진입점입니다. 동시에 여러 개의 활성화된 인스턴스를 허용하지 않습니다.

EasyAR 컴포넌트의 모든 기능은 StartSession() 호출 이후에야 사용 가능합니다.

Camera와 일부 AR 컴포넌트 간의 상대적인 트랜스폼(transform)은 세션에 의해 제어됩니다. 이 중 하나의 오브젝트가 CenterObject로 지정되며, 이 오브젝트는 씬에서 움직이지 않고 다른 오브젝트들이 이 CenterObject를 기준으로 움직입니다. 이 오브젝트는 CenterMode 값에 따라 선택됩니다. 더 자세한 설명은 ARSession.ARCenterMode의 설명을 참조하십시오.

[DefaultExecutionOrder(-2147483648)]
[DisallowMultipleComponent]
[RequireComponent(typeof(EasyARController), typeof(DiagnosticsController))]
[RequireComponent(typeof(FrameRecorder), typeof(FramePlayer), typeof(CameraImageRenderer))]
public class ARSession : MonoBehaviour
상속
ARSession

필드

AutoStart

MonoBehaviour.Start 시 세션이 자동으로 시작됩니다. false로 설정한 경우, 세션을 시작하려면 수동으로 StartSession()를 호출해야 합니다.

[SerializeField]
[HideInInspector]
public bool AutoStart

CenterMode

AR 중심 모드. 언제든지 수정 가능하며 즉시 적용됩니다. 지정한 모드를 사용할 수 없는 경우, 사용 가능한 모드로 자동으로 변경됩니다.

[SerializeField]
[HideInInspector]
public ARSession.ARCenterMode CenterMode

HorizontalFlip

수평 미러링 렌더링 모드. 언제든지 수정할 수 있으며 즉시 적용됩니다. 이미지 또는 오브젝트 트래킹을 사용할 때만 사용 가능합니다.

[SerializeField]
[HideInInspector]
public ARSession.FlipOptions HorizontalFlip

속성

AssembleOptions

세션의 어셈블리 옵션은 Assemble() (이전에 호출되지 않은 경우, StartSession()가 암시적으로 호출함) 전에 설정되어야 합니다.

public AssembleOptions AssembleOptions { get; }

Assembly

AR 컴포넌트의 어셈블리.

public ARAssembly Assembly { get; }

AvailableCenterMode

현재 세션에서 사용 가능한 중앙 모드.

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

CenterObject

이 세션은 현재 프레임에서 사용하는 중심 객체입니다.

이 객체는 Unity 공간에서 움직이지 않는 객체 또는 이 객체의 부모 노드를 나타냅니다. Origin, Camera 또는 특정 `target`일 수 있습니다. `Target`은 TargetController 또는 BlockRootController 컴포넌트를 포함하는 객체일 수 있습니다. 희소 공간 맵(Sparse Spatial Map)과 EasyAR Mega를 사용할 때, 실제 중심 GameObject는 루트 노드 아래에서 위치가 확인된 특정 맵 또는 블록 객체이며, CenterObject는 이 객체의 부모 노드입니다. 자세한 내용은 ARSession.ARCenterMode 설명을 참조하십시오.

public GameObject CenterObject { get; }

Diagnostics

세션 진단 구성요소.

public DiagnosticsController Diagnostics { get; }

Origin

모든 모션 추적 기능이 활성화된 세션 원점.

씬에 존재하면 자동으로 선택되며, 없을 경우 EasyAR 또는 서드파티 frame source 확장 기능에 의해 생성됩니다. 내장 frame source 사용 시, Unity XR 프레임워크의 XROrigin이 존재하면 해당 오브젝트가 선택됩니다. AR Foundation 패키지가 없을 경우, 기본 트리 구조를 유지하는 XR Origin만이 선택됩니다.

public GameObject Origin { get; }

Report

세션 보고서. 조립이 완료된 후 사용할 수 있으며 세션 상태가 변경될 때마다 업데이트됩니다. 세션 손상 세부 정보나 컴포넌트 가용성과 같은 상세 정보를 확인하는 데 사용됩니다.

public SessionReport Report { get; }

SpecificTargetCenter

수동으로 지정된 중심 객체입니다. CenterMode == SpecificTarget일 때 CenterObject가 이 객체로 설정됩니다. 언제든지 수정할 수 있으며 즉시 적용됩니다.

이 객체는 TargetController 또는 BlockRootController 컴포넌트를 포함해야 합니다.

public GameObject SpecificTargetCenter { get; set; }

State

현재 세션 상태.

public ARSession.SessionState State { get; }

TrackingStatus

모든 모션 추적 기능이 실행될 때의 모션 추적 상태입니다.

public Optional<MotionTrackingStatus> TrackingStatus { get; }

enabled

세션 실행 시 출력 활성화/비활성화. 비활성화 상태에서는 세션이 출력되지 않으며, 카메라 이미지(EasyAR가 제어하는 경우)와 모든 세션 객체의 transform이 업데이트되지 않습니다.

public bool enabled { get; set; }

메서드

Assemble()

AssembleOptions를 사용하여 세션을 조립합니다. 호출한 경우, StartSession()에서 자동으로 호출됩니다.

public IEnumerator Assemble()

ImageCoordinatesFromScreenCoordinates(Vector2)

스크린 좌표계([0, 1]^2)에서 이미지 좌표계([0, 1]^2)로 변환합니다. pointInView는 [0, 1]^2 범위로 정규화되어야 합니다. 헤드셋에서는 사용할 수 없습니다.

public Optional<Vector2> ImageCoordinatesFromScreenCoordinates(Vector2 pointInView)

매개 변수

pointInView

StartSession()

세션을 시작합니다. AutoStart가 true이면, MonoBehaviour.Start에서 자동으로 호출됩니다.

public void StartSession()

StopSession(bool)

세션 시작을 중지합니다. 모든 트랜스폼 업데이트 및 이미지 렌더링 업데이트가 중지됩니다. 정지 시 마지막 프레임 이미지를 유지하기 위해 회전을 사용할 수 있지만, EasyAR이 이미지 렌더링을 제어할 때만 유효합니다(AR Foundation 및 헤드셋 등에서는 유효하지 않음).

public void StopSession(bool keepLastFrame)

매개 변수

keepLastFrame

이벤트

AssembleUpdate

세션 Assemble() 업데이트 이벤트. 한 번의 Assemble() 호출(이전에 호출되지 않았다면 StartSession()이 암시적으로 호출함) 중에 이 이벤트는 1~2회 발생합니다. 첫 번째는 어셈블이 완료될 때입니다. 어셈블 완료 시점에 장치 목록 업데이트가 이미 완료되었다면 두 번째 호출은 없으며, 그렇지 않다면 장치 목록 업데이트가 완료될 때 두 번째 호출이 발생합니다.

public event Action<SessionReport.AvailabilityReport> AssembleUpdate

InputFrameUpdate

입력 프레임 업데이트 이벤트는 세션에 표시된 InputFrame가 변경될 때만 트리거됩니다. 헤드셋에서는 이 이벤트를 수신하지 않으며, 투시 이미지가 있는 경우 해당 렌더링은 기기에서 수행됩니다.

public event Action<InputFrame> InputFrameUpdate

PostSessionUpdate

세션 업데이트 완료 이벤트로, 이 이벤트의 빈도는 MonoBehaviour.Update 빈도와 동일합니다(VR 헤드셋에서는 확장 개발자가 올바르게 구현해야 함). 이 이벤트가 트리거될 때, 해당 프레임 내에서 EasyAR가 제어하는 모든 transform 변화는 완료된 상태입니다.

public event Action PostSessionUpdate

StateChanged

session State 변경 이벤트.

public event Action<ARSession.SessionState> StateChanged