ARKit2에서 라이드 워치의 사용 장면을 재현 해 보았습니다.
9291 단어 ARKit
글레인지에서 고객 엔지니어를하고 있습니다.
최근 ARKit2
그리고 현재 방송중인 「가면 라이더 지오」의 변신 아이템인 「라이드 워치」를 사용해 극중의 사용 장면을 재현해 보았습니다
이번에 소개하는 기능
・화상 인식(ARReferenceImage)
・물체 인식(ARReferenceObject)
기술·환경
・Swift4
・iOS12
・Xcode10
· iPhoneX
코드 쓰기 전 준비
1. 카메라 사용 권한 설정
카메라 사용 권한을 설정하지 않으면 부팅시 충돌이 발생하므로 info.plist에서 설정합니다.
2.storyboard에 ARSCNView 추가
카메라 영상은 이 View에 표시
이미지 인식(ARReferenceImage)
1. Assets.xcassets에 AR Resource Group을 추가하여 인식할 이미지를 추가합니다.
너무 복잡한 이미지라면 때로는 인식하기 어려울 수 있습니다.
2. override func viewWillAppear 내에서 이미지 인식을 위한 구성을 설정하고 실행
ViewController.swift
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
guard let images = ARReferenceImage.referenceImages(inGroupNamed: "AR Resources", bundle: Bundle.main) else {
return
}
// Create a session configuration
let configuration = ARImageTrackingConfiguration()
configuration.trackingImages = images
// Run the view's session
sceneView.session.run(configuration)
}
3. 인식할 수 있었을 때의 동작
func renderer에 필요한 처리 작성
기본적으로 SpriteKit의 처리를 작성하여 무언가를 표시하는 것이 이해하기 쉽습니다.
ViewController.swift
func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
let node = SCNNode()
let imageAnchor = anchor as? ARImageAnchor
let referenceImage = imageAnchor?.referenceImage
let imageName = referenceImage?.name
// imageNameがAR Resource Groupに追加した画像名と一致する時に、何か処理をする
return node
}
물체 인식(ARReferenceImage)
1. 인식하고 싶은 물체의 데이터(AR Object)를 작성한다
Apple 공식 샘플 앱을 사용하여 물체를 스캔하고 데이터를 만들 수 있습니다.
Scanning and Detecting 3D Objects
↑스쿠쇼대로, 물체를 각 각도로부터 스캔하여, 「.arobject」파일로서 출력한다
2. 이미지 인식과 마찬가지로 Assets.xcassets에 AR Resource Group 추가
AR ResourceGroup에 드래그 앤 드롭으로 ".arobject"파일 추가
3. override func viewWillAppear 내에서 물체 인식을 위한 구성 설정 및 실행
ViewController.swift
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// Create a session configuration
let configuration = ARWorldTrackingConfiguration()
// Object Detection
configuration.detectionObjects = ARReferenceObject.referenceObjects(inGroupNamed: "KivaObject", bundle: Bundle.main)!
// Run the view's session
sceneView.session.run(configuration)
}
4. 인식할 수 있을 때의 동작
func renderer에 필요한 처리 작성
기본적으로 SpriteKit의 처리를 작성하여 무언가를 표시하는 것이 이해하기 쉽습니다.
ViewController.swift
func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
let node = SCNNode()
if let objectAnchor = anchor as? ARObjectAnchor {
// 何か処理を書く
}
return node
}
라이드 워치 사용 장면 재현
소개한 기술을 사용해, 가면 라이더 지오의 라이드 워치로 극중의 사용 씬을 재현도 해 보았습니다만, 주위의 환경이나 빛의 관계로, 인식이 둔할 때가 상당히 있는 것은 조금의 난점 이었다
흥미있는 분은 동영상
마지막으로
ARKit2는 그 밖에도 기능이 많이 있는 것 같고, 얼굴의 인식이나 ARWorldMap이라고 하는 것도 재미있을 것 같기 때문에, 또 이번 만져 보고 싶습니다
Reference
이 문제에 관하여(ARKit2에서 라이드 워치의 사용 장면을 재현 해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/raitome/items/43996b9f42a131df9271텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)