[1편] ARKit 기초 설정 및 SCNScene 개념 소개

웰디(Well-D)·2025년 4월 14일
0

👩‍💻키노트용 코드조각 설명 (코드조각을 더 단순화 했고 설명을 줄글로 읽을 수 있습니다)

🍰 첫번째 코드조각

ARSCNView 클래스는 가상 3D 콘텐츠와 현실 세계의 기기 카메라 뷰를 혼합하는 증강 현실 경험을 만들기 위해 쓰이는 클래스입니다. 뷰에 제공된 ARSession 객체를 실행하면 sceneView는 자동으로 아이폰의 카메라 촬영장면을 앱의 배경으로 렌더링합니다. ARKit은 SceneKit의 좌표 공간을 실제 세계와 자동으로 일치시키기때문에 추후 씬킷에서 업로드하는 오브젝트와 ARKit 으로 구성된 카메라 뷰가 동적으로 반응하여 현실감을 더해줍니다. 앵커를 직접 생성하여 세션에 추가하거나 혹은 ARKit이 자동으로 생성하는 앵커를 사용하여 오브젝트를 씬에 위치할 수 있습니다. 해당 뷰를 main스토리보드에 깔고 해당 뷰를 뷰컨트롤러가 제어할수 있도록 ViewController 클래스 내부의 viewDidLoad 함수를 재정의할때 scene.delegate = self 로 설정합니다.

그리고 SCNScene 클래스의 인스턴스를 생성합니다. SCNScene 은 추후 3D 오브젝트를 올릴때 필요한 노드를 쌓기 위해 필요한 일종의 컨테이너 입니다. 노드가 올라가는 씬이라고 이해하면 좋습니다. 해당 씬이 동작하려면 SCNView의 scene 프로퍼티에 해당 씬을 설정해야합니다. scene프로퍼티는 뷰에 표시할 SceneKit 장면을 의미합니다. 따라서 sceneView.scene = scene 로 런타임에 노드들이 올라간 SCNScene씬이 표시되게 합니다.

viewWillAppear 재정의 함수 내에서는 ARkit 의 세션을 configuration으로 설정하고 run 메서드로 실행합니다. ARWorldTrackingConfiguration은 AR환경에 위치한 오브젝트와 실제 장면 요소의 인식과 관련된 설정을 진행할 수 있습니다. 여기서는 personSegmentation 시멘틱으로 설정하여 만약 두 사람이 있고 그 사이에 가상 객체가 있는 상황이라면 가상 객체 앞에 있는 사람은 가상 객체를 가리고, 가상 객체 뒤에 있는 사람은 가상 객체에 의해 가려지는 자연스러운 깊이감을 줄 수 있도록 셋팅하는 코드입니다.

해당 설정을 기반으로 세션을 실행합니다. 여기서 sceneView의 session프로퍼티는 뷰의 콘텐츠에 대한 모션 트래킹 및 카메라 이미지 처리를 관리하는 AR 세션을 의미하고 run 메서드로 실행가능합니다.

viewWillDisappear 재정의 함수내에서는 session의 pause 메서드가 실행되도록 하여 AR 세션을 일시 중지하여 불필요한 리소스 활용을 방지합니다

profile
Wellness 잘사는 것에 진심인 웰디입니다. 여러분의 몸과 마음, 통장의 건강을 수호하고싶어요. 느리더라도, 꾸준히

0개의 댓글