티스토리 뷰
애플의 고퀄리티 예제 앱 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에 두가지를 넣어줍니다.
이제 앱을 돌려보면 크래쉬가 안나고 전면 카메라가 보이게 됩니다-!!
'🍏 > ARKit' 카테고리의 다른 글
[ARKit] 3D Content 직접 만들기 (scn파일 만들기) (0) | 2020.05.29 |
---|---|
[ARKit] Face Tracking 앱 만들기 (3) - eye tracking, blendShapes (0) | 2020.05.29 |
[ARKit] Face Tracking 앱 만들기 (2) - ARFaceAnchor, SCNReferenceNode, renderer (0) | 2020.05.28 |
[iOS-ARKit] SCNText, SCNBox, SCNSphere 를 띄워보자 (0) | 2019.05.18 |
[iOS-ARKit] Hello AR (0) | 2019.05.04 |
- Total
- Today
- Yesterday
- flutter build mode
- Flutter 로딩
- 장고 URL querystring
- Django Heroku Scheduler
- METAL
- 플러터 싱글톤
- PencilKit
- Sketch 누끼
- cocoapod
- 장고 Custom Management Command
- SerializerMethodField
- DRF APIException
- Flutter Text Gradient
- Watch App for iOS App vs Watch App
- Django FCM
- drf custom error
- ipad multitasking
- flutter deep link
- github actions
- 구글 Geocoding API
- ribs
- Flutter Clipboard
- Flutter Spacer
- Flutter getter setter
- flutter 앱 출시
- Dart Factory
- 플러터 얼럿
- Python Type Hint
- Django Firebase Cloud Messaging
- flutter dynamic link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |