[ARKit] ARSession과 ARConfiguration

silverCastle·2022년 7월 23일
0

💡 ARSession

ARSession은 motion tracking, camera passthrough, 이미지 분석과 같은 모든 AR 경험과 관련된 주요 작업을 관리하는 object이다.
AR 경험을 만들기 위해 ARKit가 사용자를 대신하여 수행하는 major process를 조정한다. 이러한 process는 하드웨어에서 데이터 읽기, device의 내장 카메라 제어, 캡처된 카메라 이미지에 대한 이미지 분석 수행을 포함한다.
즉, AR 경험을 하기 위해서는 ARSession은 매우 중요하다는 의미이다.

✍️ Session 생성

모든 AR 경험은 ARSession을 필요로 한다. 만약, 사용자가 커스텀 renderer를 구현한다면 Session을 직접 인스턴스화할 수 있다.

let session = ARSession()
session.delegate = self

사용자가 ARView, ARSCNView, ARSKView와 같은 표준 renderer 중 하나를 사용한다면 renderer는 사용자를 위한 session object를 생성한다. ARSCNView는 3차원 콘텐츠, ARSKView는 2차원 콘텐츠를 위한 View이다.
본인의 앱 session과 상호 작용하기를 원할 때, 앱의 renderer를 통해 액세스한다.

let session = myView.session

✍️ Session 실행

Session을 실행하기 위해서는 configuration이 필요하다. ARConfiguration의 하위 클래스는 실제 세계와 관련된 device의 위치와 motion을 tracking하는 방법을 결정한다.
즉, 생성하는 AR 경험의 종류를 결정한다.
예를 들어, ARWorldTrackingConfiguration은 device의 후면 카메라를 통해 주변 세계에 대한 사용자의 시각을 증대시킬 수 있다.
Session을 생성했으면 run 메소드로 실행하면 된다. 앞서 설명했듯이, 실행하기 위해 지정된 configuration과 option을 사용하여 session에 대한 AR 처리를 실행한다.

func run(
    _ configuration: ARConfiguration,
    options: ARSession.RunOptions = []
)

configuration 자리에는 Session에 대한 동작 및 장면 추적 동작을 정의하는 개체인 ARConfiguration이 들어가면 되는데 이에 대해 더 자세히 알아보자.

💡 ARConfiguration

AR Session을 구성하는 방법에 대한 정보가 포함된 기본적인 object이다. 선택한 configuration에 따라 이미지를 캡처하는 카메라와 앱에 표시되는 카메라 feed가 결정된다.
AR 앱은 관심에 대한 실제 세계 영역을 인식하므로 런타임에 ARKit는 카메라 캡처 pipeline을 관리한다.
여기서 중요한 점은 선택한 configuration에 따라 ARkit가 인식하고 앱에서 사용할 수 있는 실제 object의 종류가 결정된다는 것이다.
ARConfiguration 자기 자신을 할당하지 말고 해당 하위 클래스 중 하나를 인스턴스화를 해야할 것을 잊지 말자.
하위 클래스는 아래에서 설명하는데 아래에 있는 클래스들이 위에서 설명한 run 메소드의 configuration에 들어갈 것이다.

  • ARWorldTrackingConfiguration
    ARKit가 장치의 후면 카메라를 사용하여 찾고 추적할 수 있는 모든 표면, 사람 또는 알려진 이미지 및 개체를 기준으로 장치의 위치 및 방향을 추적한다.

  • ARGeoTrackingConfiguration
    GPS, 장치 나침반 및 지도 데이터를 사용하여 관심 있는 지리적 위치를 추적한다.

  • ARBodyTrackingConfiguration
    장치의 후면 카메라를 사용하여 사람, 비행기 및 이미지를 추적할 수 있다.

  • AROrientationTrackingConfiguration
    후면 카메라를 사용하여 장치의 방향만 추적한다.

  • ARImageTrackingConfiguration
    장치의 후면 카메라를 사용하여 이미지 tracking을 통해 제공한 알려진 이미지만 추적한다.

  • ARFaceTrackingConfiguration
    움직임과 표정을 포함하여 장치의 셀카 카메라에 있는 얼굴만 추적한다.

  • ARObjectScanningConfiguration
    후면 카메라를 사용하여 나중에 런타임에 앱이 인식할 특정 개체에 대한 고화질 데이터를 수집한다.

  • ARPositionalTrackingConfiguration
    3D 공간에서 장치의 위치만 추적한다.

필자처럼 사람을 추적하고 싶다면 ARBodyTrackingConfiguration을 사용하면 된다.

0개의 댓글