스트리밍은 대부분의 브라우저와
Developer 앱에서 사용할 수 있습니다.
-
공간 컴퓨팅을 위한 앱 구축 시작하기
visionOS를 위한 앱과 게임 개발을 준비해 보세요! 윈도우, 볼륨, 공간과 같이 공간 컴퓨팅을 구성하는 기본 구성 요소에 대해 살펴보고, 이 요소들을 이용해 매력적인 몰입형 경험을 구축하는 방법에 대해 알아보세요.
리소스
관련 비디오
WWDC23
-
다운로드
♪ 부드러운 기계 힙합 음악 ♪ ♪ 안녕하세요 저는 RealityKit 팀의 엔지니어 Jim입니다 오늘 저는 ARKit 팀의 Christopher와 함께 공간 컴퓨팅을 위한 앱 구축 시작 방법을 여러분들께 알려 드릴텐데요 그럼 바로 들어가 보죠! 우리는 새로운 공간 컴퓨팅 플랫폼에 대한 기대가 큽니다 이 플랫폼은 사람들이 사용하고 여러분이 앱을 개발하는 친숙한 기반에서 구축되는데요 이건 여러분의 앱과 상호작용하기 위해 자연어 입력을 사용할 뿐 아니라 현실과 가상 콘텐츠를 섞을 수 있다는 새롭고 흥미로운 가능성을 열어줍니다 그리고 전체 시스템은 사람들의 프라이버시를 보호할 수 있도록 디자인되어 여러분에게 마음의 평화를 주니 앱 경험에 더 집중할 수 있게 해주죠 공간 컴퓨팅 용어와 개념을 세우기 위한 기본 원리에 대해 조금 더 알아보겠습니다 그 다음 여러분의 앱에서 시작할 수 있는 다양한 방법을 훑어보도록 할게요 다음으로 제 동료 Christopher가 앱을 구축하는 방법을 소개하며 공간 컴퓨팅에 대해 더 깊고 상세하게 알려줄 겁니다 이제 핵심 중 일부를 살펴보겠습니다 먼저 공간 컴퓨팅에서 친숙하고도 새로운 UI 콘셉트의 의미를 살펴보겠습니다 기본적으로 앱은 공유 공간으로 실행이 되는데요 이건 앱이 함께 존재하는 곳이고 Mac 데스크톱에 있는 여러 앱들과 같은 겁니다 사람들은 패스스루를 통해 주변과의 연결성을 유지하죠 각 앱에는 하나 이상의 창이 있습니다 이건 보통의 macOS 창에서 기대할 수 있는 것처럼 크기 조절과 재흐름이 가능한 SwiftUI 씬입니다 전통적인 뷰와 컨트롤은 물론 3D 콘텐츠도 포함할 수 있어 2D와 3D를 믹스 앤 매치할 수 있게 하죠 사람들은 예상하시는 바와 같이 현재 공간에서의 선호도에 따라 창을 재배치합니다 앱은 볼륨을 통해 3D 콘텐츠를 정해진 바운드 안에서 보여주며 다른 앱들과 공간을 공유합니다 볼륨은 체스 보드와 같은 3D 콘텐츠를 보여주기에 정말 좋습니다 볼륨은 공간에 재배치될 수 있는데 볼륨은 다양한 각도에서 보여질 수 있습니다 볼륨은 SwiftUI 씬으로서 여러분이 친숙한 방식으로 레이아웃할 수 있게 해주고 3D 콘텐츠를 보여주기 위해 볼륨은 RealityKit의 힘을 사용합니다 가끔 앱의 몰입도 통제력을 더 갖고 싶으실 텐데요 영상을 보거나 게임하면서 집중하기 위해서일 겁니다 이건 전용 전체 공간을 오픈함으로써 가능해집니다 여기서는 앱의 창, 볼륨 3D 오브젝트가 뷰 전체에 나타나는 유일한 것들이죠 전체 공간에서는 ARKit의 API도 이용할 수 있습니다 예를 들어 시스템 제공 제스처 외에도 Skeletal Hand Tracking과 같은 제스처를 얻을 수 있죠 사람 손의 구조를 실제로 여러분의 경험에 통합하기 위해서요 앱은 전체 공간을 다양하게 사용할 수 있습니다 실제 세계 내 그라운드 콘텐츠로의 패스스루를 사용해 사람들이 주변과의 연결을 유지할 수 있게 해주죠 RealityKit를 통해 Spatial Audio를 재생하고 3D를 렌더링하면 디바이스가 방에 대한 이해를 지속적으로 업데이트해 사람들의 주변 환경에 시각과 소리를 혼합하여 가상 개체가 실제로 자신의 방에 있는 것처럼 느끼게 한다는 사실을 자동으로 활용합니다 뷰의 전체 필드를 채우기 위해 완전 몰입형 공간에 렌더링을 할 수도 있죠 이를 통해 앱의 유연성은 앱의 창의적인 의도를 실행합니다 가상 물체의 조명과 오디오 성격 선택 능력을 사용자화함으로써 말이죠 창, 볼륨, 공간을 공간 컴퓨팅의 핵심입니다 이들을 통해 몰입의 연속체를 포괄하는 앱 구축을 위해 유연한 툴세트를 제공하죠 후반에 Christopher가 더 자세히 알려드릴 겁니다 이제 공간 컴퓨팅의 핵심을 소개했으니 창, 볼륨, 공간과 상호작용할 수 있는 방법을 탐색해 보죠 이 플랫폼에서 우리는 눈과 손만 사용해 앱과 상호작용할 수 있습니다 가령 사람들은 버튼을 바라보고 손가락을 탭하여 버튼을 선택함으로써 상호작용이 가능합니다 3D 공간에서 동일한 버튼에 물리적으로 다가가 터치할 수도 있고요 두 종류의 상호작용 모두에 대해 탭, 길게 누르기, 드래그 회전, 확대 등과 같이 다양한 제스처들이 존재합니다 시스템은 이들을 자동 감지하여 앱이 응답할 수 있도록 터치 이벤트를 생성하죠 제스처는 SwiftUI에 잘 통합됩니다 동일한 제스처 API는 RealityKit 엔티티와도 매끄럽게 작동하죠 이를 통해 사람들은 여러분의 3D 씬 요소와 직접 손쉽게 상호작용합니다 예를 들어 이건 이 3D 모델에 깃발을 배치할 때 유용할 수 있습니다 가상 지퍼를 통제하는 걸 상상해 보세요 아니면 가상 체스 말과 상호작용하고 고르고 싶을 수도 있죠 볼링 게임을 하고 싶거나 사람들의 손을 가상 클럽으로 바꾸고 싶다면 ARKit의 Skeletal Hand Tracking을 통해 할 수 있습니다 여기서는 탭을 사용해 테이블 위에 큐브를 쌓을 수 있는 방법을 살펴 보고 손으로 테이블 위에 무너뜨려 보겠습니다 이건 앱 전용 손 입력을 경험에 가져올 수 있는 강력한 방법입니다 마지막으로 시스템은 입력을 무선 키보드, 트랙패드 접근성 하드웨어에서 여러분의 앱으로 자동으로 가져오죠 Game Controller 프레임워크는 무선 게임 컨트롤러 지원도 추가할 수 있게 해줍니다 모든 걸 함께 쓰고 탐험하는 것은 공간 컴퓨팅의 핵심 부분입니다 SharePlay와 Group Activities 프레임워크를 통해 할 수 있는 일이죠 macOS에서처럼 사람들은 이 훑어보기 경험처럼 이 플랫폼에서 창을 공유할 수 있습니다 사람들이 Quick Look 3D 모델을 공유하면 우리는 참가자 간 방향성 스케일, 애니메이션을 동기화하여 다른 위치에서 협력하는 것을 쉽게 만들어 줍니다 사람들은 그들의 공간에서 보여지고 물리적으로 가리키는 것에 관해 협력할 때 SharePlay 세션에 있는 모두가 동일한 경험을 하는 게 중요합니다 이로써 제스처와 같은 자연어 참조가 가능해지고 물리적으로 함께라는 느낌이 강렬해집니다 우리는 시스템에 공유 맥락 콘셉트를 추가했습니다 시스템에서는 여러분을 위한 이 공유 맥락을 관리하여 SharePlay 세션에 있는 참가자들이 모두 동일한 방식으로 콘텐츠를 경험할 수 있도록 도와줍니다 Spatial Persona Templates을 사용하여 사람들의 콘텐츠 경험 방식을 사용자화할 수도 있고요 더 알아보고 싶으시다면 이 플랫폼을 위한 공간 SharePlay 경험 디자인과 구축 관련 세션을 참고하세요 디바이스가 주변 환경과 사람들에 대해 잘 알고 있다는 점을 고려하면 이들의 프라이버시 보호를 위해 많은 아키텍처를 배치할 수 있습니다 더 자세히 알아보죠 프라이버시는 이 플랫폼 디자인 가이드의 핵심 원칙으로 여러분이 개발자로서 API를 이용하여 디바이스의 많은 기능을 이용할 수 있게도 해줍니다 앱이 센서로부터 데이터에 직접 접근을 허용하는 대신에 이 시스템이 여러분을 위해 이걸 해주고 앱에 이벤트와 시각적 신호를 제공합니다 가령 이 시스템은 3D 공간에서 눈의 위치와 누군가의 손 제스처를 알고 그것을 터치 이벤트로 전달합니다 또한 관심의 대상이 되면 뷰에 호버 효과를 렌더링하지만 사람이 보고 있는 앱에는 전달하지 않죠 많은 경우 시스템 제공 동작은 앱이 상호작용에 대답하기에 충분합니다 실제로 더 민감한 정보에 접근해야 하는 경우 이 시스템은 사람에게 먼저 허락을 구합니다 한 예로 벽과 가구를 감지하기 위해 씬 이해 접근성에 대한 사용자 허용을 구하고 있네요 커스텀 상호작용을 앱에 가져오기 위해 Skeletal Hand Tracking에 대한 접근성 허용을 물어보는 것도요 앱에서 이용할 수 있는 기능들을 살펴 봤으니 이제 다음으로 넘어가 그런 앱들을 개발할 수 있는 방법을 탐구해 보겠습니다 모든 건 Xcode로 시작합니다 Apple의 통합 개발 환경이죠 Xcode는 프로젝트 관리 지원 UI를 위한 시각 에디터 디버킹 툴 시뮬레이터 등 앱을 개발하기 위한 완전한 툴 세트를 제공합니다 Xcode에서 가장 중요한 것은 플랫폼 SDK인데 여기서는 여러분이 앱 개발을 위해 사용하게 될 프레임워크들과 API들을 제공한다는 겁니다 소스 파일이 SwiftUI 미리보기 제공자를 포함한다면 미리보기 캔버스가 Xcode에서 자동으로 열리죠 미리보기 캔버스는 3D 지원을 위해 확장되어 애니메이션과 커스텀 코드 등 씬을 위한 RealityKit 코드를 시각화할 수 있습니다 이를 통해 반복 시간이 더 줄어들고 라이브 코드를 편집하고 변경 내용과 트윅을 볼 수 있어 앱의 올바른 모습과 느낌을 찾을 수 있습니다 궤도 속도와 위성 크기를 바꿈으로써 위성이 지구 궤도를 회전하는 것처럼 보이도록 실험을 좀더 해보겠습니다 미리보기는 코드 변경 내용을 반영합니다 그래서 코드의 빠른 실험의 결과를 보기가 굉장히 간편합니다 Xcode Previews에도 3D 레이아웃의 훑어보기를 가능케 하는 오브젝트 모드가 있는데요 레이아웃이 뷰의 바운드 내에 맞는지 확인하는 것이 그 예입니다 기존의 UI와 새 3D 시각 효과와 함께 타이트하게 통합된 씬을 구축하기에 딱 좋죠 Xcode Preview는 앱 실행 전에 레이아웃을 올바로 볼 수 있는 환상적인 방법입니다 시뮬레이터는 앱과의 상호작용성을 테스트하는 아주 좋은 방법이고요 키보드나 마우스 호환 가능한 게임 컨트롤러를 사용하여 씬에서 움직이거나 둘러볼 수 있습니다 시뮬레이션된 시스템 제스처를 사용해 앱과의 상호작용이 쉽죠 시뮬레이터에는 세 가지 시뮬레이션 씬이 제공됩니다 각각 낮과 밤 조명의 설정이 가능하고요 그래서 다양한 환경에서도 앱을 보기가 쉬워지죠 시뮬레이터는 대부분의 앱을 실행하고 디버깅하여 개발하는 동안 매우 예측 가능한 환경에서 빠르게 반복할 수 있는 아주 좋은 방법입니다 우리는 씬을 보는 것만으로도 빠르게 이해하고 버그 추적을 도와주면서도 수많은 런타임 시각화를 지원할 수 있도록 Xcode를 확장했습니다 여기 평면 측정을 가시적으로 만들어 보았습니다 해당 평면의 시맨틱 의미들과 씬 내 콜리전 모양 등을 포함해서요 Xcode의 디버거에서 초점을 맞추고픈 시각화를 토글하는 건 쉽습니다 이 시각화는 시뮬레이터와 디바이스 모두에서 잘 작동하죠 애플리케이션 퍼포먼스와 반응성을 개선할 때라면 Instruments와 같은 친숙한 도구도 있습니다 이건 Xcode와 연관된 강력한 퍼포먼스 분석 툴인데요 Instruments를 사용해 실행 중인 앱의 작동 가능한 인사이트를 제공할 수 있습니다 공간 컴퓨팅에 관해서는 Instruments 15에 새로운 템플릿 RealityKit Trace가 포함되어 해당 플랫폼의 새로운 동작에 대해 훨씬 더 많고 깊은 인사이트를 제공하고요 RealityKit Trace 템플릿에는 개발자들이 GPU, CPU, 앱의 시스템 파워 영향을 이해하고 퍼포먼스 핫스팟을 식별할 수 있도록 하는 새로운 도구를 갖추고 있습니다 프레임 병목을 손쉽게 관찰하고 이해해 시뮬레이션된 RealityKit 엔티티의 숫자나 제출된 트라이앵글 수와 같이 필수 지표까지 거슬러 올라가죠 이를 통해 잠재적인 성능 문제를 신속하게 찾고 해결할 수 있습니다 자세한 건 'RealityKit Trace 만나기' 세션을 확인하세요 우리는 Reality Composer Pro라는 새로운 개발자 도구도 도입했는데요 이를 통해 앱을 위한 3D 콘텐츠를 미리보고 준비할 수 있습니다 Reality Composer Pro는 모든 에셋과 그들이 씬에서 어떻게 잘 맞는지 개요를 얻을 수 있게 해주죠 RealityKit에 새로 추가한 기능은 '파티클'입니다 Reality Composer Pro에서 작업 흐름을 사용할 때 파티클을 쓰고 미리볼 수 있죠 씬에 파티클을 추가하여 움직임과 생동감 등 무한한 가능성을 제공합니다 구름, 비, 번개는 짧은 시간 안에 빌드할 수 있는 몇 가지 효과일 뿐입니다 씬에 오디오를 추가하고 오브젝트와 연관짓는 것도 식은 죽 먹기고요 공간적으로 오디오를 미리 볼 수 있는데 여기서는 전체 씬의 모양과 맥락을 고려합니다 대부분의 시각 오브젝트에서는 RealityKit의 물리 기반 머티리얼을 사용하여 다양한 현실 세계 머티리얼을 나타냅니다 RealityKit는 센서 데이터를 이용해 이 머티리얼에 현실 세계 조명 정보를 주고 사람들의 주변 환경에 고정시킵니다 RealityKit에는 앱이 공통 시나리오에서 사용할 수 있는 표준 머티리얼 두 개를 가지고 있습니다 특정 요구가 있을 때 창의적인 의도를 전달하기 위해 공개 표준 MaterialX과 함께 Reality Composer Pro에서 커스텀 머티리얼을 쓸 수 있습니다 코드를 만지지 않고서도 사용이 쉬운 노드 그래프를 뷰포트에서 직접 빠르게 훑어봄으로써 할 수도 있습니다 이에 대해 더 알아보시려면 'Reality Composer Pro 내 머티리얼 탐색하기' 세션을 참고하세요 3D 콘텐츠가 괜찮다면 씬을 디바이스에 보내 콘텐츠를 직접 테스트할 수 있습니다 이건 앱을 빌드할 필요도 없기 때문에 반복 시간 줄이기에 딱이죠 더 알아보시려면 'Reality Composer Pro를 만나다' 세션을 시청해 주세요 이용 가능한 또 다른 옵션은 Unity입니다 Unity는 여러분이 친숙한 작업 흐름과 함께 어떠한 플러그인도 필요 없이 공간 컴퓨팅용 앱을 쓸 수 있는 능력을 선사합니다 기존 콘텐츠를 가져와 새로운 몰입형 경험을 불어넣을 수 있죠 더 알아보시려면 Unity로 몰입형 앱을 쓰는 방법을 다룬 다음 세션들을 참고해 주세요 핵심 개념과 이용 가능한 툴 일부에 대해 알아보았으니 앱 구축을 어떻게 시작할 수 있는지 봅시다 시작 방식에는 두 가지가 있는데요 처음부터 공간용으로 신규 앱을 디자인하던가 이 새로운 공간 플랫폼에 가지고 오고픈 기존 앱을 사용할 수 있습니다 새로운 앱 구축 방법을 탐구해 봅시다 처음부터 공간 애플리케이션을 디자인하는 것을 통해 공간 컴퓨팅의 새롭고 독특한 기능을 빠르게 이해할 수 있습니다 시작을 위해 이 플랫폼의 새로운 앱 템플릿을 사용할 수 있습니다 앱 템플릿에는 두 개의 중요한 옵션이 있죠 먼저, Initial Scene Type을 Window와 Volume 중에 선택해야 합니다 이렇게 하면 여러분을 위한 초기 시작 코드가 생성되고 이후 추가 씬을 추가하기가 쉽습니다 두 번째 옵션을 통해 여러분의 앱 몰입형 공간의 진입점을 추가할 수 있는데요 기본적으로 여러분의 앱은 공유 공간에서 실행됩니다 Immersive Scene Type을 Space로 선택하면 앱에 두 번째 씬이 추가될 겁니다 전체 공간에서 실행하는 법을 보여주는 예시 버튼과 함께 말이죠 이 단계를 끝내고 나면 RealityKit로 렌더링된 3D 오브젝트와 섞여 있는 친숙한 버튼이 SwiftUI 내 초기 작동 앱과 나타납니다 더 알아보시려면 '첫 몰입협 앱 개발하기' 세션을 시청해 주세요 우리는 코드 샘플도 공개했는데요 각각이 다른 주제를 다루고 있어 여러분의 속도를 높일 수가 있습니다 Destination Video는 3D 영상과 Spatial Audio를 통합한 공유 몰입형 플레이백 경험 구축 방법을 보여주죠 Happy Beam은 Immersive Space을 이용한 게임을 만드는 방법을 보여주는 예시입니다 커스텀 손 제스처 등 친구들과 재미있는 게임을 만들 수 있죠 Hello World는 비주얼 모드와 3D 지구본 사이를 전환하는 방식을 보여줍니다 Hello World에 대해서는 Christopher가 이후 자세히 알려드릴 겁니다 이 플랫폼에서 처음부터 앱을 구축하고 디자인하는 것은 공간 컴퓨팅 콘셉트를 손쉽게 포괄할 수 있는 기회를 제공하는데요 하지만 여러분 중 어떤 기존 앱에 공간 컴퓨팅을 가져오고 싶다고 생각한 분들도 계실 겁니다 iPad와 iPhone 앱은 처음부터 멋지게 느껴지고 그렇게 보이죠 여러분의 앱이 iPad를 지원한다면 iPhone 전용 앱을 지원한다고 하더라도 iPad 지원 앱이 iPhone보다 선호될 것입니다 시뮬레이터에 나타나는 레시피 앱을 살펴보겠습니다 이 플랫폼은 자체적인 다크 스타일이 있는 한편 iPad와 iPhone 앱에는 라이트 모드 스타일이 있는데요 사용의 용이성을 위해 창의 크기 조절도 가능하며 앱 창의 순환도 가능해 다양한 레이아웃으로 보실 수 있습니다 이에 대해 더 알아보시려면 '공유 공간에서 iPad 및 iPhone 앱 실행하기' 세션을 시청하셔서 시스템의 빌트인 동작과 기능적 차이 시뮬레이터로 테스트하는 방법에 대해 더 알아보세요 하지만 기존 iPad나 iPhone 앱을 실행하는 것은 시작에 불과합니다 이 플랫폼을 위한 Xcode 프로젝트 내 목적지 추가는 클릭 한 번만으로 가능해 상당히 쉽죠 그 후 우리는 타겟 서비스를 선정하여 다시 컴파일하고 실행하기만 하면 됩니다
다시 컴파일하고 나면 기존 간격과 크기가 나타나고 레이아웃 재배치가 이루어집니다 창과 머티리얼 모두 자동으로 해당 플랫폼의 모습과 느낌으로 이동해 어떤 조명 상태에서든 가독성을 보장하죠 앱에서 커스텀 컨트롤을 위한 하이라이트와 같이 빌트인 기능을 이용할 수 있게 됩니다 이제 Christopher가 지금까지 알아본 콘셉트로 앱을 더 발전시킬 수 있는 방법을 알려드릴 겁니다 Jim, 감사합니다 저는 여러분께 좀전에 배우신 요소들을 통합한 앱을 구축하는 법에 대해 알려드릴 건데요 Hello World와 함께 여러분이 앱에 통합할 수 있는 멋진 기능 몇 가지를 우선 탐색해 봅시다 지금 작동 중인 샘플인데요 시뮬레이터에서 앱을 실행하자마자 Hello World가 공유 공간에서 하나의 창으로 실행됩니다 우리 바로 앞에 말이죠 SwiftUI에서 만들어진 창의 모습과 유사한데요 텍스트, 이미지, 버튼과 같은 다양한 요소도 포함하고 있습니다 탭 제스처를 이용하면 앱 내 탐색이 가능한데요 새 뷰가 3D 콘텐츠를 어떻게 삽입되었는지 보세요 SwiftUI와 3D 콘텐츠는 함께 매끄럽게 작동합니다 우리의 메인 창으로 돌아가 Planet Earth를 선택하면 새로운 뷰가 나타나는데요 볼륨으로 된 새로운 요소가 나타났습니다 몇 가지 UI 요소와 함께 지구의 3D 모델을 포함하고 있네요 볼륨 위치는 윈도우 바를 움직임으로써 주변 환경 어느 곳으로든 조정될 수 있습니다
다시 메인 창으로 돌아가서 View Outer Space를 선택하면 태양계로 들어오라는 초청장이 나타납니다
여기서 우주로 들어갈 수 있는데요 '완전' 몰입형 스타일로 나타나 있네요 이 예시에서는 Planet Earth를 렌더링하고 패스스루를 희미하게 해 주변에 시선을 뺏기지 않고 콘텐츠에 집중하게 해줍니다 어떻게 작동하는지 봤으니 이제 Hello World의 기능 일부를 샅샅이 살펴보고 여러분의 앱에 이 콘셉트를 사용할 방법을 보여드리겠습니다 Jim에게서 배우신대로 창, 볼륨, 공간이라는 다양한 요소가 있죠 이건 특정 환경에서 여러분의 앱 사용자들에게 최적의 상황이 무엇인지에 따라 위아래로 움직일 수 있는 스펙트럼으로 보시면 됩니다 공유 공간에서 하나 이상의 창을 나타내는 걸 택함으로써 사람들이 더 많이 참여할 수 있게 해줍니다 사람들은 패스스루를 보고 다른 앱을 나란히 두겠다는 선택을 할 수 있습니다 아니면 앱이 공간 전체를 차지하게 함으로써 몰입도를 높이는 선택도 할 수가 있죠 주어진 순간에 여러분의 앱 경험에서 가장 적절한 요소를 찾고 그 사이를 조절하는 것이 여러분이 공간 컴퓨팅 앱을 디자인할 때 가장 중요하게 고려해야 할 사항입니다 다음으로 창을 경험의 일부로 사용하는 방법에 대해 더 살펴보겠습니다 창은 앱의 시작점 역할을 하죠 창은 씬을 사용해 SwiftUI에서 구축되고 기존의 뷰와 컨트롤을 포함하고 있습니다 이 플랫폼에서의 창은 2D, 3D 콘텐츠 조합을 지원하죠 이건 3D 콘텐츠가 창에서 2D UI와 함께 제시될 수 있다는 겁니다 창은 공간에서 크기 조절과 재배치가 가능하죠 사람들은 선호하는 바에 따라 조절할 수 있습니다 우리 예시로 돌아가 볼게요 Hello World 콘텐츠 뷰에는 더 몰입적인 콘텐츠를 얻기 위한 문구와 SwiftUI 이미지와 텍스트 그리고 버튼이 있습니다 창을 만드는 것은 씬에 WindowGroup을 추가하는 것만큼 쉽죠 WindowGroup 내에서 Content View를 보여줄 겁니다 Content View에는 3D 콘텐츠를 추가해 새로운 차원의 깊이를 앱에 가져다줄 겁니다 이를 위해 새로운 Model3D 뷰를 사용할 수 있죠 Model3D는 이미지와 비슷해 RealityKit가 렌더링된 앱에서 아름다운 3D 콘텐츠를 로딩하고 보여주는 걸 쉽게 만듭니다 Model3D를 뷰에 추가하려면 위성 모형을 패스해 Model3D를 초기화할게요 Model3D는 해당 모델을 찾아내 로딩하고 여러분의 뷰 계층에 배치할 겁니다 이 창 뷰에 이제 위성이 삽입되어 z축에서 나오는 게 보이네요 이렇게 앱에 새로운 차원의 깊이가 더해졌습니다 위성을 추가했으니 상호작용도 추가할 수 있겠죠 상호작용은 기본적으로 시스템에 구축되어 있고 SwiftUI에서 제공합니다 SwiftUI에서는 여러분께 이미 친숙한 Apple 플랫폼의 제스처 인식기를 제공합니다 Tap, onHover, RotateGesture 등이 여기에 해당되죠 이 플랫폼에서는 3D 상호작용을 위해 만들어진 새로운 제스처 인식기를 제공합니다 3D 공간에서의 회전 3D 오브젝트에 탭하기 등을요 위성과 상호작용을 작동하게 하는 코드를 살펴봅시다 공간 탭 제스처를 작동시킬 건데요 위성 주변을 잡아서 움직일 수 있도록 해볼게요 Model3D에서 시작해 제스처를 추가할 수 있습니다 이 안에 위성 엔티티를 타겟으로 하는 DragGesture를 추가할게요 그 다음 update 클로저에서 통과된 값을 사용해 위성을 이동시킬 수 있습니다 어떤 모습일지 함께 봅시다 위성이 렌더링되어 있는 위성 뷰로 돌아가면 DragGesture 덕분에 모델을 탭하고 드래그하는 게 가능하죠 제 상호작용과 함께 움직입니다 방금 보신 바와 같이 Model3D로 2D, 3D 콘텐츠를 조합하는 건 쉽습니다 이것들은 다 창으로 가능한 것들이죠 이제 다른 유형의 요소인 '볼륨'을 살펴보겠습니다 볼륨에서 제공하는 게 무엇인지 볼게요 볼륨은 창이 확장된 것으로 비슷한 기능을 선사합니다 볼륨은 3D 콘텐츠에 이상적인 새로운 스타일의 창이죠 2D 또는 3D 콘텐츠를 포함한 다양한 SwiftUI 뷰를 호스트할 수 있습니다 볼륨은 전체 공간에서 사용될 수 있지만 실제로는 공유 공간에 구축됩니다 따라서 콘텐츠는 볼륨 바운드 내에 유지되어야 하죠 볼륨을 씬에 추가하는 방법을 알아봅시다 새로운 WindowGroup을 만들어 volumetric을 windowStyle로 설정하는 것으로 시작하죠 그 다음 width, height depth 프로퍼티를 가진 defaultSize를 줘야 합니다 볼륨의 유닛은 포인트나 미터로 명시될 수 있고요 시뮬레이터에서 실행시켜 보죠 애플리케이션이 나타나면 볼륨은 사람 앞에 배치됩니다 이 볼륨은 우리가 지정한 크기를 갖추고 있습니다 플랫폼 컨트롤과 함께 말이죠 애플리케이션 타이틀 바에서는 앱 명을 보여줘서 이 볼륨이 어떤 앱에 속하는지 쉽게 확인할 수 있게 해주죠 윈도우 바는 볼륨이 배치될 수 있게 해주고요 닫기 버튼을 탭하면 앱이 중단되면서 볼륨을 닫습니다 현재 우리의 볼륨은 지구의 3D 모델을 렌더링했지만 더 많은 콘텐츠와 다양한 동작을 추가하고 싶으실텐데요 이를 위해 RealityView를 앱의 일부로 추가할 수 있습니다 RealityView는 씬에 추가가 가능한 새로운 뷰인데요 몇 개의 엔티티든 SwiftUI 내에서 직접 관리를 가능하게 합니다 SwiftUI와 RealityView는 손쉬운 앱 통합이 가능합니다 SwiftUI의 관리 상태와 엔티티 프로퍼티에 연결해서요 이를 통해 앱 데이터 모델의 진실 공급원과 함께 3D 모델의 동작을 이끌어내는 게 쉬워집니다 좌표 공간 사이의 전환은 쉽습니다 RealityView가 제공하는 변환 함수가 있거든요 RealityView는 첨부를 통해 SwiftUI 요소를 3D 씬에 배치할 수 있는 방법을 제공합니다 RealityView 내에서 첨부를 사용할 수 있는 방법을 살펴보는 시간을 가져보죠 우리가 사용할 RealityView 초기화에는 세 가지 매개변수가 있는데 make 클로저 update 클로저, attachments ViewBuilder가 바로 그것이죠 make 클로저를 통해서는 엔티티를 만들고 그 엔티티를 루트 엔티티에 첨부할 수 있습니다 update 클로저는 뷰의 상태가 바뀔 때마다 호출되죠 마지막으로 attachments 클로저는 RealityView가 뷰를 엔티티로 번역하게 해주는 태그 프로퍼티가 있는 SwiftUI 뷰를 추가하는 곳입니다 이제 예시를 통해 RealityView로 attachments를 사용하는 법을 함께 알아보죠 첨부를 추가하는 건 RealityView의 attachment 클로저 내에 SwiftUI 뷰를 배치하기만 하면 됩니다 3D 지구본에서 위치를 나타내기 위해 이 맛있어 보이는 페이스트리 아이콘을 사용할게요 각 첨부에 대해 첨부에 이름을 부여하는 태그를 추가해야 합니다 이 첨부는 "pin"이라고 할게요 첨부를 보여주기 위해 이걸 RealityView의 콘텐츠에 추가할 겁니다 씬의 루트 엔티티에 이걸 추가함으로써 update 클로저에 추가할 겁니다 여기서 우리가 이전에 만든 첨부가 보이는데요 제가 가장 좋아하는 빵집 위치를 지구본 위에 렌더링할게요 보셨다시피 RealityKit를 사용하면 Model3D, RealityView attachments 등과 같은 강력한 기능들을 일으킬 수 있습니다 앱에 통합하는 것도 쉽죠 이건 RealityKit가 할 수 있는 일의 빙산의 일각일 뿐이죠 이에 대해 더 알아보고 싶다면 'RealityKit로 공간 경험 빌드하기' 'RealityKit로 공간 컴퓨팅 앱 개선하기' 세션을 시청해 보시길 바랍니다 지금까지 알아본 것들을 다시 한번 정리하죠 볼륨은 2D, 3D 콘텐츠에 이상적인 컨테이너입니다 볼륨은 공유 공간에 구축되고 창과 공존할 수 있으며 지정된 크기로 제한되어 있습니다 다음으로 마지막 요소인 공간을 보겠습니다 일단 앱이 전용 전체 공간을 열면 시스템은 다른 모든 앱을 숨기고 그 앱만 보이게 합니다 주변 어디에든 앱의 창, 볼륨, 콘텐츠를 배치할 수가 있게 되죠 ARKit와 RealityKit 덕분에 가상 콘텐츠가 주변 환경과 상호작용할 수도 있습니다 방에 가상 공을 던지면 이게 벽을 맞고 튕겨나와 바닥으로 굴러가는 것을 볼 수가 있죠 손 추적 기능을 추가하면 커스텀 제스처와 상호작용을 빌드하거나 콘텐츠를 사람의 손과 연관성 있게 배치할 수 있죠 이 기능 중 많은 것들이 ARKit에서 온 것입니다 앱에서 그걸 이용할 수 있는 방법을 더 깊이 알아보시려면 '공간 컴퓨팅을 위한 ARKit를 만나다' 세션을 확인해 보시길 바랍니다 앱은 공간에 대해서 만들 때 어떤 스타일을 선택했는지에 따라 다양한 수준의 몰입도를 제공할 수 있습니다 Jim이 전체 공간에서 이용 가능한 몰입 스펙트럼에 대해 이야기했었죠 앱에 몰입도를 추가하는 법을 더 알아보도록 하겠습니다 Immersion Style은 전체 공간에서 통과될 수 있는 매개변수입니다 두 가지 기본 스타일로는 .mixed와 .full이 있죠 혼합 몰입형은 패스스루 위에 앱 콘텐츠를 레이어링합니다 완전 몰입형은 패스스루를 숨겨 콘텐츠만 보여주죠 점진형을 선택하여 두 가지를 결합할 수도 있고요 이 스타일은 초기에 패스스루를 허용하지만 디바이스 상단에 배치된 Digital Crown을 돌림으로써 완전 몰입까지 높일 수도 있습니다 예시로 돌아가서 몰입형에 대해 더 알아보죠 혼합형부터 어떤지 살펴보겠습니다 전체 공간은 SwiftUI 씬이기 때문에 RealityView를 사용해 지구를 보여줄 수 있죠 높은 궤도에서 바라본 지구의 모습입니다 이 씬을 앱에서 이렇게 보여준 건데요 몰입형을 지정하지는 않은 게 보이실 겁니다 몰입형 공간을 만들 때 SwiftUI가 혼합형을 기본으로 가정하기 때문이죠 다양한 몰입형을 추가하여 여러분의 앱을 완전히 몰입형으로 만들어 봅시다 이번에는 완전 몰입형을 사용해 보겠습니다 ImmersiveSpace 끝에 몰입형을 추가하는 건 어렵지 않습니다 상태 변수에 몰입형을 저장하고 그 유형을 full로 설정할게요 사람들이 몰입형 경험에 언제 들어갈지 선택할 수 있기를 바라기에 이 몰입형에 들어가고 싶을 때 들어갈 수 있게 해주는 버튼을 하나 추가하는 게 좋을 것 같네요 이번에는 새로운 몰입형을 작동시켜 보죠 앱으로 돌아가보면 Hello World를 단일 창에서 완전 몰입형으로 바꿔 우리가 모든 각도에서 Planet Earth를 볼 수 있게 했는데요 이건 공간 앱으로 할 수 있는 것들의 시작에 불과합니다 또 어떤 걸 할 수 있을지 확인해 보자고요 이번 세션에서는 시작 방법이라는 핵심 내용을 다뤘는데요 그 다음 앱 구축 기본 내용을 알려드렸습니다 여러분의 다음 정거장이 될 공간 디자인의 원리에 대한 멋진 세션들이 많은데요 SwiftUI와 RealityKit로 앱을 구축하는 방법이나 3D 콘텐츠 생성 시작에 대해 알아보세요 공간 컴퓨팅으로 앱을 만듦으로써 여러분의 독창성이 이끄는 새롭고 멋진 길로 나아갈 수 있을 것입니다 시청해 주셔서 감사합니다! ♪
-
-
찾고 계신 콘텐츠가 있나요? 위에 주제를 입력하고 원하는 내용을 바로 검색해 보세요.
쿼리를 제출하는 중에 오류가 발생했습니다. 인터넷 연결을 확인하고 다시 시도해 주세요.