티스토리 뷰

반응형

애플의 고퀄리티 예제 앱 Tracking and Visualizing Faces 를 따라해본 기록 ✏️

 

[1] 프로젝트 생성

Augmented Realtiy App 을 체크

 

 

content technology를 SceneKit 으로 설정

 

 

자동으로 만들어진 파일과 코드들을 삭제해주기 

 

 

ViewController도 sceneView만 남기고 일단 다 삭제! (이 상태에서는 session을 설정안해줬기 때문에 돌리면 크래쉬납니다)

 

 

[2] ARConfiguration 종류 정하기 + isSupported 이용하여 지원하지 않는 기기 안내하기

 

ARConfiguration은 현재 session에서 ARKit 기능 중 어떤 것을 쓸 건지를 정의해놓은 객체 라고 하는데,

ARConfiguration을 상속하는 여러 친구들이 있습니다.

 

 

 

 

Face Tracking을 할 것이니까 ARFaceTrackingConfiguration를 골라줍니다. (3번에서 session에 설정해주겠습니다)

 

 

 

그리고 ARConfiguration은 특정 configuration을 지원하는 디바이스인지 알려주는

 isSupported라는 프로퍼티가 있습니다.

 

 

Face-tracking은 TrueDepth Camera가 있는 (페이스 아이디가 되는) iPhone X부터 지원가능합니다. (시뮬레이터 빼고)

 

 

그러면 아래의 코드로 face tracking을 지원하는 기기인지, 시뮬레이터는 아닌지를 알아낼 수 있겠죠?! 

ARFaceTrackingConfiguration.isSupported

 

 

 

 

애플 예제 프로젝트의 이 뷰컨트롤러를 스토리보드에 복붙하고

 

 

isSupported를 이용하여서 지원하지 않는 디바이스거나 시뮬레이터면 저 화면으로 보내주겠습니다.

 

AppDelegate에 아래 코드를 추가해주세요 (참고로 XCODE 11.4로 만들었는데 SceneDelegate 안생김. ARKit은 특별취급(?) 인가봄)

 

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        if !ARFaceTrackingConfiguration.isSupported {
            let storyboard = UIStoryboard(name: "Main", bundle: nil)
            window?.rootViewController = storyboard.instantiateViewController(withIdentifier: "unsupportedDeviceMessage")
        }
        return true
    }

 

 

[3] session에 configuration과 option을 설정해주고 session을 시작하기

 

ARSession의 run 함수를 이용하여 configuration과 option을 session에 설정해주고 

AR processing을 시작할 수 있습니다. 

 

ViewController에 아래 함수를 추가해주세요

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        resetTracking()
    }

    func resetTracking() {
        let configuration = ARFaceTrackingConfiguration()
        sceneView.session.run(configuration,
                              options: [.resetTracking, .removeExistingAnchors])
    }

 

face-based앱은 session이 시작할때마다 tracking을 reset하고 존재하는 anchors를 지워줘야한다고 합니다.

그래서 options에 두가지를 넣어줍니다. 

 

이제 앱을 돌려보면 크래쉬가 안나고 전면 카메라가 보이게 됩니다-!!

반응형
댓글