Machineboy空
RealityKit SceneReconstruction, 환경 인식 관련 본문
오늘의 목표
RealityKit에서 기본으로 제공하는 Detection 기능들을 파헤쳐 보자.
저번에 만든 캐릭터가 환경을 인식하여 장애물을 피해서 이동하도록 만들어야 한다.
ARWorldTrackingConfiguration
- ARView.debugOptions 활용
- ARWorldTrackingConfiguration의 다양한 함수들 활용
supportsSceneReconstruction(.meshWithClassification)을 활용해서 환경 인식을 실행해봤다.
import SwiftUI
import RealityKit
import ARKit
struct ContentView: View {
var body: some View {
ARViewContainer().edgesIgnoringSafeArea(.all)
}
}
struct ARViewContainer: UIViewRepresentable {
func makeUIView(context: Context) -> ARView {
let arView = ARView(frame: .zero)
arView.addCoaching()
// Debug Options 설정
arView.debugOptions = [.showFeaturePoints,.showSceneUnderstanding,.showWorldOrigin]
let configuration = ARWorldTrackingConfiguration()
configuration.planeDetection = .vertical
// Scene Reconstruction 활성화
if ARWorldTrackingConfiguration.supportsSceneReconstruction(.meshWithClassification) {
configuration.sceneReconstruction = .meshWithClassification
} else if ARWorldTrackingConfiguration.supportsSceneReconstruction(.mesh) {
configuration.sceneReconstruction = .mesh
}
arView.session.run(configuration)
return arView
}
func updateUIView(_ uiView: ARView, context: Context) {
}
}
#Preview {
ContentView()
}
ARKitSession 과 ARSession의 차이
visionOS용 ARKitSession과 iOS용 ARSession에서 제공하는게 일단 다르다.
ARKitSession의 기본 기능이 훨씬 많다. Anchor도 PlaneAnchor가 따로 있고 뭔가 더 정교하게 분석하고 기능하는 듯 하다..
이제 환경 인식한 정보 바탕으로 캐릭터가 장애물을 피해 움직이도록 구현해보겠다..
'언어 > iOS' 카테고리의 다른 글
Core Location을 파헤쳐 보자! (3) | 2024.10.09 |
---|---|
특정 건물을 인식해보자! - Vision Framework, CreateML 흘겨 보기 (5) | 2024.10.03 |
Reality Composer Pro Animations, 애니메이션 있는 usdz파일 넣기 (2) | 2024.10.01 |
Augmented Reality: ARKit의 대략적 원리(VIO, 평면 감지, 오브젝트 분류) (0) | 2024.07.07 |
Augmented Reality: RealityKit VS SceneKit 비교 (3) 기본 구성 (Entity, Node) (0) | 2024.06.24 |