[코드조각] [1] AR 환경설정하기

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

👩‍💻 AR 환경을 설정하는 코드조각

class ViewController: UIViewController, ARSCNViewDelegate, UIGestureRecognizerDelegate  {    
// ARKit과 SceneKit을 결합한 뷰로, ARKit을 사용하여 실제 환경을 추적하고 SceneKit을 사용하여 3D 콘텐츠를 렌더링하는 역할    
@IBOutlet var sceneView: ARSCNView!    
// ARSession 설정 함수    
func configureARSession() {    
//ARWorldTrackingConfiguration을 사용하여 디바이스의 위치와 방향을 추적하고, AR 콘텐츠를 실제 세계와 맞추는 설정을 함        
let configuration = ARWorldTrackingConfiguration()          
// 사람을 인식해서 사람 사이의 거리를 계산하여 객체를 위치시키는 기능          
// 장면에서 사람의 깊이와 관계없이 앱의 가상 콘텐츠에 사람이 겹쳐야 함을 나타내려면 personSegmentation 프레임 시맨틱을 사용합니다.          
// 객체를 강조하기 위해 해당 코드 생략가능(객체가 최상단에 오는것처럼 보입니다) 
configuration.frameSemantics.insert(.personSegmentation)        
// - ARKit가 디바이스의 위치와 방향을 추적하는 데 필요한 정보를 `detectionObjects` (ARKit이 감지할 객체의 목록) 으로 설정        
//- "AR Resources"라는 이름의 그룹에서 객체를 검색하되, nil로 설정하여 기본 번들을 사용하였음 , referenceObject가 nil을 반환할경우(목록이 nil일때) 빈배열 [] 사용       
configuration.detectionObjects = ARReferenceObject.referenceObjects(inGroupNamed: "AR Resources", bundle: nil) ?? []        
// - 세션은 ARKit이 현재 디바이스의 카메라 피드와 센서 데이터를 처리하고, 이를 기반으로 가상 콘텐츠를 렌더링하는 데 사용, 주어진 구성과 옵션을 사용하여 AR 세션을 시작함.        
// - .removeExistingAnchors로 기존 앵커를 제거하는 옵션 제공,새로운 세션이 시작될 때 이전 세션의 앵커를 모두 제거하여 초기 상태로 시작하게 하는 옵션        
// .resetTracking : 추적 상태를 리셋하는 옵션 설정, 새로운 세션이 시작될 때 디바이스의 추적 상태를 초기화하여  이를 통해 세션이 시작될 때 정확한 위치와 방향을 다시 설정할 수 있게함.        
sceneView.session.run(configuration, options: [.removeExistingAnchors, .resetTracking])    
}    
... }

ARKit 으로 세션을 설정하고 시작하는 과정 : ARWorldTrackingConfiguration을 사용하여 객체 감지를 설정하고 ARSCNView의 세션을 시작하는 코드조각 입니다.

추가 설정으로 객체를 감지하고, 디바이스의 위치와 방향을 추적하고, 감지된 객체를 기반으로 가상 콘텐츠를 렌더링하게 됩니다. 새로운 세션이 시작된다면 기존의 앵커와 추적 정보를 초기화하는 기능을 추가했습니다.

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

0개의 댓글