스트리밍은 대부분의 브라우저와
Developer 앱에서 사용할 수 있습니다.
-
ARKit 앱을 공간 경험에 맞게 개선하기
앱의 AR 경험을 visionOS로 가져오는 방법을 알아보세요. ARKit과 RealityKit이 공간 컴퓨팅을 위해 어떻게 발전해 왔는지 알아봅니다. iPadOS와 iOS 개발자를 위해 개념과 API 변화를 짚어 보고 여러분의 AR 경험을 이 플랫폼에서 구현하는 데 도움이 될 내용을 더욱 자세히 다루는 세션도 안내해 드리겠습니다.
리소스
관련 비디오
WWDC23
-
다운로드
♪ 감미로운 인스트루멘탈 힙합 ♪ ♪ 안녕하세요 저는 오미드입니다 올리버와 저는 ARKit 팀 소속 엔지니어죠 여러 개념을 살펴보려니 기대되는군요 일부는 친숙하고 일부는 새로운 개념으로 저희의 새로운 플랫폼에 iOS AR 앱을 구현할 때 아셔야 할 내용입니다 ARKit가 iOS에 도입된 건 2017년입니다 증강 현실 응용 프로그램을 빌드하기 위한 핵심 개념 세 가지를 함께 소개했죠 월드 추적을 사용하면 ARKit는 월드 내에서 여섯 단계의 자유도로 기기 위치를 추적할 수 있습니다 이걸로 가상 콘텐츠를 현실의 위치와 방향으로 앵커링할 수 있죠 씬 이해는 사용자를 둘러싼 현실을 이해하게 해 줍니다 제공된 지오메트리와 시맨틱 지식을 활용하면 콘텐츠는 지능적으로 배치되고 주변 환경과 사실적으로 상호 작용할 수 있습니다 마지막으로 렌더링 엔진은 가상 콘텐츠를 캡처된 이미지 위에 정확하게 등록하고 합성합니다 ARKit가 제공하는 카메라 트랜스폼과 intrinsics를 활용해서요 처음에는 SceneKit 뷰로 시작해서 ARKit의 카메라 트랜스폼을 썼고 3D 콘텐츠를 iOS에 렌더링했는데요 이후 RealityKit를 도입해서 엔진의 기초를 닦았습니다 이 엔진으로는 고도로 사실적인 물리 기반 렌더링이 가능하며 객체를 주변 환경에 정확하게 시뮬레이션할 수 있죠 ARKit와 RealityKit는 공간 컴퓨팅이 가능하도록 발달해 왔으며 운영 체제에 깊이 통합되었습니다 가령 ARKit의 추적과 씬 이해는 이제 시스템 서비스로 실행되어서 윈도우 배치부터 공간 음향까지 모든 걸 받쳐 주죠 과거 응용 프로그램의 책임을 시스템이 맡고 있는 겁니다 카메라 passthrough와 사용자 손의 매팅이 내장되어 있으므로 이런 기능은 응용 프로그램에 무료로 제공됩니다 다른 내장 기능으로는 ARKit 월드 맵이 시스템 서비스로 지속된다는 게 있습니다 그래서 응용 프로그램은 이 작업을 할 필요가 없죠 이걸로 여러분은 한결 자유롭게 플랫폼에 최적인 응용 프로그램과 가능한 콘텐츠를 빌드하는 데 집중할 수 있을 겁니다 기술을 시연할 예시를 준비했습니다 이 플랫폼에 도입된 새로운 기술도 같이 보시죠 이제 ARKit가 앱에 손 추적을 제공하니 사람들은 손을 뻗어서 가상 콘텐츠와 직접 상호 작용할 수 있습니다 그 가상 콘텐츠는 주변 환경과 상호 작용하고요 새로운 기능을 모두 활용하고 이 플랫폼이 제공하는 몰입형 경험을 이용하려면 iOS의 ARKit 기반 경험을 업데이트해야 합니다 여러분의 앱과 AR 경험을 공간 컴퓨팅에 맞게 재창조할 절호의 기회입니다 그 전환의 일부로 ARKit와 RealityKit에서 도입된 익숙한 개념도 쓰게 되실 겁니다 이런 개념이 어떻게 이어지고 발전해 왔는지를 이야기하고 이 개념을 활용할 방법도 알아보겠습니다 시작해 보죠 우선 공간 컴퓨팅에 맞춰서 여러분의 앱을 보여 줄 새로운 방법을 살펴보면서 사용 가능한 새 콘텐츠 도구를 소개하겠습니다 다음으로는 RealityKit를 이야기해 보죠 여러분의 콘텐츠를 렌더링하고 그 콘텐츠와 상호 작용할 때 사용하는 엔진입니다 RealityView로 iOS의 ARView와 유사하게 앱에서 공간 컴퓨팅을 사용하는 법도 알아볼 겁니다 앱이 주변 환경에 콘텐츠를 구현할 여러 가지 방법도 이어서 이야기하겠습니다 iOS 응용 프로그램 다수가 레이캐스팅을 콘텐츠 배치에 사용하는데요 ARKit 데이터와 RealityKit를 결합해서 공간 컴퓨팅에 맞게 레이캐스팅을 활성화하는 법을 예를 들어 보여 드리겠습니다 마지막으로는 ARKit 업데이트를 검토하면서 익숙한 iOS 개념을 새롭게 활용할 방법을 보겠습니다 여러분의 경험을 공간 컴퓨팅에 맞게 마이그레이션할 준비를 해 보죠 공간 컴퓨팅으로는 iOS AR 경험을 윈도우 너머로 확장할 수 있습니다 이 플랫폼에서는 응용 프로그램을 새롭게 선보일 수 있는데요 iOS 경험을 가져올 때 이런 방법을 고려하시면 좋겠죠 샘플로 만든 Hello World 앱 예시입니다 이 디스플레이에서는 윈도우와 3D 콘텐츠를 포함한 UI를 주변 어디에나 보여 줄 수 있습니다 기본적으로 이 플랫폼의 응용 프로그램은 Shared Space에서 실행됩니다 Shared Space에서는 앱이 나란히 존재합니다 Mac 데스크탑에서 여러 앱을 여는 것과 비슷하죠 Shared Space에서 앱은 하나 이상의 윈도우로 콘텐츠를 보여 줄 수 있습니다 추가로 앱에서는 3D 볼륨도 만들 수 있습니다 사용 가능한 보드게임 목록을 한 윈도우에 보여 주고 규칙은 다른 윈도우에 보여 주면서 선택한 게임을 자체 볼륨에서 열 수 있죠 게임을 플레이하면서 Safari 윈도우를 열어 놓고 게임 공략을 공부할 수 있는 겁니다 윈도우와 볼륨에 추가하는 콘텐츠는 바운드를 벗어나지 않아서 다른 응용 프로그램과 공간을 같이 쓸 수 있습니다 어떤 경우에는 경험의 몰입 수준을 앱으로 더 제어하기를 바랄 수도 있을 텐데요 사용자의 방과 상호 작용하는 게임을 플레이할 수도 있겠죠 그러려면 앱에서 전용 Full Space를 열면 됩니다 여기에는 여러분 앱의 윈도우와 볼륨, 3D 객체만 나타나죠 일단 Full Space에 들어오면 응용 프로그램은 더 많은 기능에 접근할 수 있습니다 RealityKit의 앵커 엔티티를 쓰면 객체를 타깃해서 주변 환경에 부착할 수 있습니다 탁자와 바닥은 물론이고 여러분의 손바닥과 손목 등에도 가능하죠 앵커 엔티티는 사용자 권한 요청 없이 작동합니다 ARKit 데이터도 Full Space에서만 앱 접근이 가능합니다 권한이 있으면 ARKit에서 현실 표면 데이터와 씬 지오메트리 그리고 손 스켈레톤 추적 데이터를 받을 수 있으니 앱의 기능이 확장되어 사실적인 물리 효과와 자연스러운 상호 작용을 구현할 수 있죠 윈도우와 볼륨, 공간은 모두 SwiftUI 씬 유형입니다 여기에 대해서는 알아볼 내용이 무척 많습니다 우선 지금 화면에 나오는 세션을 확인해 보세요 이제 공간 컴퓨팅으로 콘텐츠를 구현하려 할 때 거쳐야 할 주요 단계를 검토해 봅시다 인상적인 iOS AR 경험은 멋진 3D 콘텐츠에서 비롯되는데요 이 플랫폼의 공간 경험에서도 마찬가지입니다 3D 콘텐츠에 대해서는 개방형 표준을 바탕으로 하면 좋습니다 그중 하나가 USD라고 축약되는 Universal Scene Description이죠 USD는 검증된 프로덕션이며 그 규모는 단일 에셋을 만드는 제작자부터 AAA 게임과 영화를 작업하는 대형 스튜디오까지 아우릅니다 Apple은 USD를 일찍 도입해서 2017년에 저희 플랫폼에 추가했고 이후 꾸준히 지원을 늘려 왔습니다 오늘날 USD는 공간 컴퓨팅을 위한 3D 콘텐츠의 중심입니다 USD 에셋이 준비되면 새로운 개발자 도구인 Reality Composer Pro로 에셋을 가져와서 3D 콘텐츠를 구성하고 편집하며 미리 볼 수 있습니다 CustomMaterial을 사용한 iOS 3D 콘텐츠는 셰이더 그래프로 다시 빌드해야 합니다 RealityKit 컴포넌트를 UI를 통해서 직접 편집할 수도 있습니다 Reality Composer Pro 프로젝트를 Xcode로 바로 가져오는 것도 가능하기 때문에 USD 에셋과 머티리얼 사용자 지정 컴포넌트를 모두 번들로 만들어 Xcode 프로젝트로 보내기 쉽습니다 아래의 훌륭한 세션을 보시면 Reality Composer Pro를 알아보고 공간 컴퓨팅에 맞게 사용자 지정 머티리얼을 빌드하는 법을 익히실 수 있습니다 응용 프로그램을 보여 주는 다양한 방법을 살펴봤으니 여러분의 경험을 가져올 때 RealityView가 어떤 기능을 제공하는지를 더 알아봅시다 앱이 공간 컴퓨팅으로 콘텐츠를 공간에 나타내는 방식을 봤는데요 iOS와 달라지는 핵심적인 차이 한 가지는 다른 엘리먼트들이 나란히 보이는 방식입니다 3D 콘텐츠와 2D 엘리먼트가 표시되어서 나란히 작동하는 데 주목해 주세요 iOS에서 왔으니 이들 각각을 만드는 데는 익숙한 프레임워크를 사용하게 됩니다 SwiftUI를 사용해서 최적의 2D UI를 만들고 iOS에서 그랬듯 시스템 제스처 이벤트를 받습니다 공간 경험을 위해 3D 콘텐츠를 렌더링하는 데는 RealityKit를 사용하죠 이 두 가지에 동시에 접속하려면 RealityView를 통해야 합니다 공간 컴퓨팅만의 요구 사항에 맞도록 저희가 도입한 새로운 SwiftUI 뷰죠 SwiftUI와 RealityKit를 RealityView가 제대로 이어 주니 2D와 3D 엘리먼트를 결합하고 인상적인 공간 경험을 만들 수 있습니다 디스플레이와 상호 작용을 원하는 모든 엔티티는 RealityView로 잡아 둡니다 제스처 이벤트를 받고 뷰에 있는 엔티티에 연결해 제어할 수 있죠 ARKit의 씬 이해에 접근하면 RealityKit의 충돌 컴포넌트로 사람들의 주변 환경과 손까지 나오는 사실적인 시뮬레이션이 가능해집니다 RealityKit 사용이 iOS에서부터 어떻게 이어지는지 보기 전에 RealityKit에서 엔티티 컴포넌트 시스템을 사용하는 법부터 복습해 보죠 Reality Kit 엔티티 컴포넌트 시스템에서 각 엔티티는 3D 콘텐츠의 컨테이너입니다 엔티티에는 여러 컴포넌트가 추가되어서 형태와 동작이 정의되죠 렌더링 방식에 대한 모델 컴포넌트나 엔티티 간 충돌에 대한 충돌 컴포넌트를 비롯해 여러 가지가 들어갈 수 있습니다 Reality Composer Pro로 충돌 컴포넌트 같은 RealityKit 컴포넌트를 준비해서 엔티티에 추가할 수 있습니다 필요한 컴포넌트를 보유한 엔티티에 작용할 코드는 시스템에 들어 있습니다 예를 들어 제스처 지원에 필요한 시스템은 CollisionComponent와 InputTargetComponent가 있는 엔티티에만 작동합니다 RealityView가 공간 컴퓨팅에서 쓰는 개념은 iOS의 ARView 개념이 넘어온 게 다수인데요 두 가지를 비교해 봅시다 두 가지 뷰 모두 이벤트를 인식하는 컨테이너로 앱에 나타내고 싶은 엔티티를 잡고 있습니다 뷰에 제스처 지원을 추가해서 엔티티 선택과 상호 작용을 활성화할 수 있죠 공간 컴퓨팅을 위한 SwiftUI를 쓰면 손을 뻗어서 엔티티를 선택하거나 드래그할 수 있습니다 ARView와 RealityView는 모두 엔티티 컬렉션을 제공합니다 ARView에서는 Scene이 사용되고 RealityView에서는 Content에 엔티티가 추가되죠 여기에 AnchorEntity를 추가하면 콘텐츠를 현실에 앵커링할 수 있습니다 두 플랫폼에서는 모두 엔티티를 만들어서 모델 콘텐츠를 로드하고 이를 AnchorEntity에 배치합니다 플랫폼 간의 주요 차이점은 앵커 엔티티의 동작입니다 iOS의 ARView는 ARSession을 사용하며 앱은 반드시 허가를 받아야만 앵커 엔티티 작동에 필요한 씬 이해 알고리즘을 실행할 수 있습니다 RealityView는 시스템 서비스로 앵커 엔티티를 활성화합니다 공간 경험에서 주변 환경에 콘텐츠를 앵커링할 때 허가가 필요하지 않다는 의미죠 이 방식을 사용하는 앱은 기본 씬 이해 데이터나 트랜스폼을 받지 않습니다 앱의 콘텐츠 배치를 위한 트랜스폼 데이터가 없다는 게 어떤 의미인지는 올리버가 뒷부분에서 이야기할 예정입니다 지금까지 알아봤듯 익숙한 개념 다수가 iOS에서부터 이어집니다 하지만 공간 컴퓨팅을 위해 RealityKit가 제공하는 새로운 기능도 있죠 여기서 말씀드린 내용은 새로운 플랫폼에서 RealityKit로 할 수 있는 작업의 일부일 뿐입니다 내용을 더 알아보시려면 아래 세션을 확인하세요 이제 올리버가 RealityView에 대해 더 이야기하면서 iOS에서 콘텐츠를 가져오는 방법을 말씀드릴 겁니다 고마워요, 오미드 이어서 여러분의 기존 컨텐츠를 공간 컴퓨팅 환경으로 가져오는 다양한 방법을 살펴보겠습니다 Shared Space에서 시작해 보죠 윈도우나 볼륨에 3D 콘텐츠를 추가할 수 있고 콘텐츠와 상호 작용할 시스템 제스처를 쓸 수 있는데요 에셋을 보여 주려면 RealityView의 Content에 이걸 바로 추가하세요 모델 컴포넌트를 잡을 엔티티를 만들고 트랜스폼 컴포넌트를 설정해서 엔티티 위치를 정하면 됩니다 제스처 지원을 설정해서 트랜스폼 컴포넌트를 수정할 수도 있죠 뷰의 콘텐츠에 추가된 모든 엔티티는 공간 원점에 대해서 같은 공간에 존재하므로 상호 작용을 할 수 있다는 데 주목하세요 Shared Space에서 콘텐츠는 주변 환경에 앵커링될 수 없습니다 Full Space로 앱을 전환할 때 생기는 선택지를 살펴봅시다 Shared Space와 다른 핵심적인 차이 한 가지는 이제 앱이 콘텐츠를 주변 환경에 추가로 앵커링할 수 있다는 겁니다 콘텐츠 앵커링은 두 가지 방법으로 가능합니다 먼저 RealityKit의 AnchorEntity를 쓰는 방법을 보죠 앱 ARKit 데이터의 사용 허가 요청 없이 콘텐츠를 배치할 수 있는데요 RealityKit의 AnchorEntity로는 시스템이 콘텐츠를 자동으로 앵커링하도록 찾아야 할 타깃을 지정할 수 있습니다 가령 앞에 있는 탁자의 표면에 3D 모델을 배치하려면 RealityKit에서 탁자로 타깃이 설정된 AnchorEntity를 쓰면 되죠 iOS와 달리 AnchorEntity는 사용자 권한 요청을 띄우지 않고도 사용할 수 있습니다 사람들의 프라이버시는 보호됩니다 AnchorEntity의 기본 트랜스폼은 응용 프로그램과 공유되지 않거든요 그러니 다른 앵커 엔티티의 자식은 서로를 인식하지 못한다는 걸 알아 두세요 이제 AnchorEntity에서는 손도 타깃이 될 수 있어서 흥미로운 상호 작용이 가능해지는 완전히 새로운 영역이 열렸습니다 예를 들어 콘텐츠를 손바닥에 앵커링하고 움직이는 손을 따라가게 할 수 있죠 모두 시스템에서 수행되니 손의 실제 위치는 앱에 전달되지 않습니다 AnchorEntity로는 신속하면서도 프라이버시를 보호하는 방식으로 앱에서 콘텐츠를 주변 환경에 앵커링할 수 있죠 Full Space로 돌아오면 ARKit를 활용해서 주변 환경에 대한 시스템 레벨의 지식을 넣을 수 있는데요 그러면 사용자 지정 배치 로직을 빌드할 수 있습니다 어떤 방식인지 살펴보죠 응용 프로그램은 iOS와 유사하게 씬 이해 데이터의 앵커링 업데이트를 받습니다 이런 앵커 데이터를 앱 로직에 통합해서 각종 놀라운 경험을 만들어 낼 수 있는데요 평면의 바운드를 사용해서 콘텐츠를 중심에 두고 분포시키거나 평면과 그 분류를 사용해서 방의 모서리를 찾을 수 있죠 두 벽면과 바닥이 교차하는 지점을 확인해서요 콘텐츠를 배치할 위치를 결정했다면 추적용 월드 앵커를 ARKit에 추가해서 엔티티의 트랜스폼 컴포넌트를 업데이트하는 데 사용하세요 그러면 여러분의 콘텐츠는 기본 월드 맵이 업데이트되는 동안에도 현실에 계속 앵커링되어 있을 뿐 아니라 앵커 지속성 측면에서도 새로운 가능성이 생깁니다 이건 잠시 후에 살펴보죠 여러분의 공간에 추가된 엔티티는 주변 환경은 물론 서로와도 상호 작용할 수 있습니다 공간 원점에 대한 트랜스폼과 더불어 씬 이해 앵커가 전달되었기에 가능한 일이죠 ARKit 기능을 쓰려면 사용자 권한이 필요합니다 이렇듯 ARKit 데이터를 앱 로직에 통합하면 고급 기능을 더 활성화할 수 있습니다 지금까지는 앱이 콘텐츠를 어떻게 배치하는지 알아봤는데요 사람이 배치를 관리하는 방법을 살펴봅시다 iOS에서는 레이캐스팅으로 2D 입력을 3D 위치로 변환할 수 있습니다 하지만 이 새로운 플랫폼에서는 2D와 3D의 연결이 더는 필요하지 않죠 손을 사용해서 경험과 바로 자연스럽게 상호 작용할 수 있으니까요 레이캐스팅은 여전히 강력합니다 이걸 쓰면 팔 길이 이상으로 손을 뻗을 수 있거든요 레이캐스팅 설정은 다양한 방법으로 가능합니다 기본적으로는 레이캐스팅 대상이 될 RealityKit의 충돌 컴포넌트를 설정해야 합니다 ARKit의 메시 앵커에서도 주변 환경에 대해 레이캐스팅을 수행할 충돌 컴포넌트를 만들 수 있죠 공간 컴퓨팅에 맞는 레이캐스팅을 두 가지 예시를 통해 살펴보겠습니다 하나는 시스템 제스처를 사용하고 다른 하나는 손 데이터를 사용합니다 위칫값을 얻은 뒤에는 ARKit worldAnchor를 배치해서 콘텐츠의 앵커링을 유지합니다 다음 예시를 살펴보죠 앱이 회전하면서 모델러에 멋진 3D 에셋을 배치한다고 해 봅시다 이번 시나리오는 모델링 프로젝트를 위해 저희 앱으로 가상의 배를 작업대에 배치하려는 상황으로 설정해 보겠습니다 이 작업대에 배를 배치하려고 하는데요 비어 있는 RealityView로 시작해 보죠 ARKit의 씬 이해에서 메시 앵커가 제공되는데 이 앵커로 주변 환경을 표현합니다 사용 가능한 지오메트리와 시맨틱 정보가 제공되죠 씬 재구성 데이터를 위한 메시는 일련의 청크로 전달된다는 걸 기억해 주세요 메시 청크를 나타낼 엔티티를 만들고 이 엔티티를 Full Space에 바르게 배치하겠습니다 메시 앵커의 트랜스폼을 사용해서요 그러면 엔티티에는 적중 테스트를 수행할 충돌 컴포넌트가 필요해집니다 RealityKit의 ShapeResources 메서드로 저희 엔티티에 필요한 충돌 모양을 메시 앵커에서 생성하고 바르게 배치된 엔티티를 추가하겠습니다 이 엔티티가 적중 테스트를 지원하죠 엔티티와 충돌 컴포넌트를 들어오는 메시 청크마다 빌드해서 주변 환경을 모두 표현하겠습니다 씬 재구성이 정제되면서 메시에 업데이트가 생기거나 청크가 삭제될 수 있습니다 이런 변경에 대해서 엔티티를 업데이트할 준비도 해야 합니다 이제 엔티티 컬렉션으로 주변 환경이 표현됩니다 이 엔티티는 모두 충돌 컴포넌트를 지니고 레이캐스팅 테스트를 지원합니다 시스템 제스처를 쓴 레이캐스팅을 먼저 살펴보고 손 데이터를 쓴 예시를 이어서 보겠습니다 시스템 제스처로 레이캐스팅을 실행하고 배를 배치할 위치를 얻을 수 있는데요 제스처가 상호 작용하는 엔티티는 CollisionComponent와 InputTargetComponent를 모두 지닌 엔티티뿐이니 이걸 메시 엔티티마다 하나씩 추가해 줍니다 SpatialTapGesture를 RealityView에 추가하면 엔티티를 보고 탭하는 동작으로 레이캐스팅을 실행할 수 있습니다 결과로 생기는 이벤트는 월드 공간에 위치해서 탭할 때 봤던 지점을 표시합니다 시스템 제스처를 사용하는 대신 레이 빌드에 ARKit의 손 앵커를 사용할 수도 있습니다 한 단계 전으로 돌아가서 이 방법을 살펴보겠습니다 먼저 사람의 손이 표현되어야 그 손이 어디를 가리키는지도 알 수 있을 텐데요 ARKit의 새로운 손 앵커에는 필요한 게 전부 들어 있죠 쿼리를 위해 레이의 원점과 방향을 빌드할 때 손가락 관절 정보를 사용할 수 있습니다 레이의 원점과 방향이 잡혔으니 씬의 엔티티에 대해 레이캐스팅을 실행할 수 있겠네요 결과로 나오는 CollisionCastHit은 적중한 엔티티를 알려 주고 위치와 표면 법선도 제공합니다 월드에서 콘텐츠를 배치할 위치를 확인했으니 ARKit가 이 위치를 계속 추적할 수 있도록 월드 앵커를 추가하겠습니다 ARKit는 월드 맵이 정제되는 대로 이 월드 앵커의 트랜스폼을 업데이트합니다 배의 모델을 로드할 새 엔티티를 만들고 월드 앵커 업데이트로 트랜스폼을 설정해서 사용자가 원하는 위치에 엔티티를 둘 수 있죠 마지막으로 콘텐츠에 이 엔티티를 추가해서 작업대 위에 렌더링하면 됩니다 추가해 둔 월드 앵커가 ARKit에서 업데이트될 때마다 배 엔티티의 트랜스폼 컴포넌트도 업데이트되어서 현실에 앵커링된 상태가 유지됩니다 이걸로 끝입니다 주변 환경에서 한 지점을 손으로 가리키고 거기에 콘텐츠를 배치했습니다 레이캐스팅은 콘텐츠 배치에는 물론이고 상호 작용에도 유용합니다 가상의 배에 레이캐스팅을 하려면 무엇이 필요한지를 알아봅시다 RealityKit의 충돌 컴포넌트는 아주 강력합니다 배 엔티티가 충돌에 참여하게 하려면 적절한 충돌 컴포넌트를 추가하기만 하면 되죠 이때 Reality Composer Pro가 유용하게 쓰입니다 배의 충돌 컴포넌트를 활성화하고 최신 손 관절 위치에서 새 레이를 빌드한 다음에 레이캐스팅을 다시 실행해서 사용자가 배와 탁자 중 무엇을 가리키는지 판별할 수 있죠 앞의 예시에서 RealityKit 기능과 ARKit의 씬 이해를 결합하면 강력하고 다양한 방식으로 매력적인 경험을 빌드할 수 있다는 걸 보셨는데요 ARKit 사용이 공간 컴퓨팅에 맞춰 어떻게 달라졌는지를 알아봅시다 기본적으로는 iOS에서와 마찬가지로 ARKit는 여전히 세션을 실행해서 앵커 업데이트를 받는 방식으로 작동합니다 세션을 설정하고 실행하며 앵커 업데이트를 받고 월드 앵커를 지속하는 방법이 새 플랫폼에서 달라졌는데요 같이 살펴보시죠 iOS의 ARKit에서는 여러 구성을 선택할 수 있습니다 각 구성은 경험에 필요한 기능을 번들로 묶어 주죠 이 예시에서는 ARWorldTrackingConfiguration을 선택했습니다 메시에서는 sceneReconstruction을 활성화하고 평면에서는 planeDetection을 활성화해 보죠 그러면 ARSession을 만들고 선택한 구성으로 실행할 수 있습니다 ARKit는 이 새로운 플랫폼에서 씬 이해 기능마다 데이터 공급자를 표시합니다 손 추적은 ARKit가 제공하는 새 기능으로 공급자를 따로 받습니다 각 데이터 공급자의 이니셜라이저는 공급자 인스턴스 설정에 필요한 매개변수를 취합니다 프리셋 구성 카탈로그에서 선택하는 대신 여러분의 응용 프로그램에 필요한 공급자를 개별적으로 선택할 수 있습니다 SceneReconstructionProvider를 예시로 선택해서 메시 앵커를 받고 PlaneDetectionProvider로 평면 앵커를 받겠습니다 공급자를 만들고 받고 싶은 메시 분류와 평면 유형을 초기화한 다음 ARKitSession을 만들어서 인스턴스화된 공급자로 실행합니다 세션 설정이 단순화된 걸 보셨으니 이제 새로운 데이터 공급자로 앱의 ARKit 데이터 수신 방식이 어떻게 달라졌는지 알아봅시다 iOS에서는 단일 대리자가 앵커와 프레임 업데이트를 받았습니다 모인 앵커들은 ARFrame과 함께 전달되어 카메라 프레임과 앵커의 동기화가 유지됩니다 응용 프로그램은 카메라 픽셀 버퍼를 나타내고 카메라 트랜스폼을 사용해서 추적된 가상 콘텐츠를 등록하고 렌더링해야 합니다 메시와 평면 앵커는 기본 앵커로 전달되며 둘을 명확화하고 구분하는 일은 여러분의 몫입니다 저희의 새로운 플랫폼에서는 데이터 공급자가 앵커 업데이트를 전달합니다 앞서 이렇게 공급자를 설정했는데요 ARKitSession을 실행하면 각 공급자는 앵커 업데이트를 비동기적으로 즉각 발행하기 시작합니다 SceneReconstructionProvider가 메시 앵커를 주고 PlaneDetectionProvider가 평면 앵커를 주네요 명확화는 필요하지 않습니다 앵커 업데이트는 사용이 가능해지는 즉시 들어오며 다른 데이터 공급자의 업데이트와 분리됩니다 ARFrame이 더는 제공되지 않는 걸 알아 두셔야 합니다 공간 컴퓨팅 응용 프로그램은 프레임이나 카메라 데이터 없이도 콘텐츠를 보여 줍니다 이 작업은 이제 시스템에서 자동으로 수행되니까요 앵커 업데이트 패키지를 ARFrame으로 만들지 않아도 ARKit가 업데이트를 즉시 전달해서 지연을 줄이니 여러분의 응용 프로그램은 주변 환경의 업데이트에 신속히 반응하게 됩니다 이제 worldAnchor 지속성을 이야기해 보죠 변경 사항이 마음에 드실 겁니다 레이캐스팅 예시에서는 월드 앵커로 현실 위치에 가상 콘텐츠를 배치하고 앵커링했죠 앱은 이 앵커를 지속해서 기기가 같은 환경으로 돌아갔을 때 앵커를 자동으로 다시 받을 수 있게 합니다 iOS에서 작용하는 지속성을 먼저 빠르게 정리해 보죠 iOS에서는 응용 프로그램이 월드 맵과 앵커 지속성을 처리해야 합니다 추가된 앵커가 있는 ARKit 월드 맵을 요청하고 저장하는 과정과 알맞은 월드 맵을 적절한 시간에 다시 로드할 로직을 추가하고 재현지화 완료까지 대기한 다음 앞서 지속된 앵커를 받고 응용 프로그램 경험을 이어 가는 과정이 포함되죠 새로운 플랫폼에서는 시스템이 월드 맵을 백그라운드에서 지속합니다 사람들의 움직임에 따라 기존 맵에 맞춰 매끄럽게 로드하고 언로드하며 생성하고 재현지화하죠 이제 응용 프로그램은 맵을 처리할 필요가 없습니다 시스템이 대신해 주니까요 여러분은 월드 앵커를 사용해서 가상 콘텐츠의 위치를 지속하는 데 집중하세요 콘텐츠를 배치할 때는 새 WorldTrackingProvider를 사용해서 월드 맵에 worldAnchor를 추가하게 됩니다 저장은 시스템에서 자동으로 수행하죠 WorldTrackingProvider가 월드 앵커의 추적 상태와 트랜스폼을 업데이트합니다 worldAnchor 식별자로 일치하는 가상 콘텐츠를 로드하거나 언로드할 수 있고요 iOS에서 아셨던 ARKit의 원리에 업데이트된 내용을 짚어 드렸습니다만 더 살펴볼 내용이 무척 많습니다 샘플 코드를 보시며 깊게 파고드실 분들에게 추천하는 세션이 있습니다 '공간 컴퓨팅을 위한 ARKit 알아보기'입니다 세션을 갈무리하겠습니다 이번 세션에서는 ARKit와 RealityKit의 개념이 iOS에서부터 어떻게 발전해 왔는지 높은 수준으로 설명해 드렸습니다 고려하실 변경 사항과 더 자세한 내용이 담긴 세션도 알려 드렸죠 iOS 앱이 처리해야 했던 많은 작업을 이 플랫폼이 도맡아 주니 여러분은 아름다운 콘텐츠와 경험을 빌드하는 데 제대로 집중할 수 있습니다 이미 친숙한 프레임워크와 개념을 사용하면서요 여러분이 공간 컴퓨팅과 놀라운 기능들을 활용해서 앱을 어떻게 발전시킬지 얼른 보고 싶습니다 시청해 주셔서 감사합니다 ♪
-
-
찾고 계신 콘텐츠가 있나요? 위에 주제를 입력하고 원하는 내용을 바로 검색해 보세요.
쿼리를 제출하는 중에 오류가 발생했습니다. 인터넷 연결을 확인하고 다시 시도해 주세요.