태그: ARkit
- This topic has 3개 답변, 2명 참여, and was last updated 4 years, 7 months 전에 by odyflame.
-
글쓴이글
-
-
odyflame참가자
- 글작성 : 17
- 답글작성 : 21
ARkit 두번째 공부 내용
scenekit
이 내용은 UDemy강의에서 marstering ARkit for iOS라는 강의로 시작했다.
arkit을 사용하기 전 scenekit을 먼저 다루어 보는 시간을 가졌다.
scenekit으로 우리가 보는 화면에서 가상의 물체들을 생성하고, 볼 수 있다.
요즘 아이패드 프로 4세대의 카메라의 성능이 더 좋아지고, 거기다 애플이 공식적으로 라이다 센서까지 지원해주어 애플이 AR쪽에도 상당히 힘을 실을 것이라는 생각이 든다.scnenkit을 공부하면서
하루에 한 섹션을 듣자는 마인드로 강의를 듣고 있다. scnenkit을 처음 사용하면 이런 화면이 뜨는데 처음 프로젝트를 만들 경우에는 augmented reality app을 선택해서 하는 것이 좋다.
선택하고 난 후면 앱 내에서 art.scnasset이라는 파일이 있고 그 안에 ship.scn 파일이 있으며 오른쪽 사진이 바로 그 모양이다.
메인 스토리보드로 들어가면 우리가 아는 view controller 위에 ARSCNView가 있으며 이게 우리가 보는 화면에서 ar 물체들을 보여줄 수 있는 뷰이다.
이 뷰에는 여러 ar 물체들을 넣어서 우리가 보는 뷰를 다채롭게 할 수가 있다.
예를 들어 처음에 들어있는 앱 템플릿을 실행보면 이렇게 현실에서 이 scn을 볼 수가 있다.강의 내용
이번 주에는 화면을 클릭했을 때 이벤트로 화면에서 출력하게 하는 내용을 많이 공부했던 것 같다. 이를 위해서는 tapGestureRecognizer를 사용해서 해결할 수 있었다.
private func registerGestureRecognizers() { let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(tapped)) self.sceneView.addGestureRecognizer(tapGestureRecognizer) }
이 함수를 viewDidLoad 안에 넣어주면 우리의 앱에서 터치를 하면 이 tapped 함수를 실행을 시킬 수 있게 sceneView에 GestureRecognizer를 더해준다. 그러면 tapped에 원하는 함수를 입력하면 우리가 원하는 방향으로 앱을 개발할 수 있다.
@objc func tapped(recognizer :UIGestureRecognizer) { let sceneView = recognizer.view as! ARSCNView let touch = recognizer.location(in: sceneView) let hitResults = sceneView.hitTest(touch, types: .existingPlaneUsingExtent) if !hitResults.isEmpty { guard let hitResult = hitResults.first else { return } addBench(hitResult :hitResult) } }
예를 들어 위의 탭 함수처럼 만들 수 있는데 이 탭 함수 안에서도 AR을 사용하기 위한 과정이 들어가 있다.
recognizer의 view를 찾고, touch에 recognizer의 위치를 받은 뒤, hitResult에 결과를 전달받는다.sceneView 내에서 HitTesting을 진행햘 때 recognizer의 위치인 touch와 hit Testing을 진행할 때 테스트 타입을 지정할 수 있는데, existingPlaneUsingExtent은 디바이스에서 나오는 감지한 면 안에서 터치할 때 결과를 반환하는 역할을 한다.
처음엔 무슨 말인지 헷갈리고 어려우나 이 타입을 사용할 때라면 우리는 그 전에 카메라에 비치는 화면 내애서 어떤 plane, 즉 면을 감지했을 것이다. 그 plane을 감지하고, plane 내에서 gesTureRecognizer를 적용시키는 것이라고 보면 이해하기가 쉽다.다음주에는 앱 내에서 미사일 3D 객체를 화면 내에 보이게 하고, 터치를 했을 때 미사일이 발사되는 과정과, 화면에 목표물을 고정시키고, 화면을 터치할 때 총알을 쏘게 하는 앱을 포스팅하겠다.
후기
scenekit으로 내가 보는 실제 화면에서 가상의 물체들이 존재할 수 있다는 것이 신기하다. 강의는 30강의 정도 있는 것 같으며 부지런히 들어서 완강하고 싶은 생각이 든다.
+ 부스트코스를 같이 공부하는 중인데 2,4,5 단원이 남았지만 그래도 프로젝트가 완성을 향해서 한발씩 가까워지고 있다. 더 힘내면 될듯하다!출처
뉴스: https://news.joins.com/article/23567043
udemy 강의: https://www.udemy.com/course/mastering-arkit-for-ios-using-swift/learn/lecture/7340874#overview2020-04-20 오전 1:25 #6968
-
-
글쓴이글
- 답변은 로그인 후 가능합니다.