View in English

  • 메뉴 열기 메뉴 닫기
  • Apple Developer
검색
검색 닫기
  • Apple Developer
  • 뉴스
  • 둘러보기
  • 디자인
  • 개발
  • 배포
  • 지원
  • 계정
페이지에서만 검색

빠른 링크

5 빠른 링크

비디오

메뉴 열기 메뉴 닫기
  • 컬렉션
  • 주제
  • 전체 비디오
  • 소개

WWDC25 컬렉션으로 돌아가기

  • 소개
  • 요약
  • 자막 전문
  • visionOS에 대한 맞춤형 환경 최적화하기

    절차적 도구를 사용하여 visionOS 앱이나 게임을 위한 아름다운 몰입형 환경을 구축하는 방법을 알아보세요. 고품질 환경을 만드는 구성 요소를 알아본 다음 최적화 프로세스에 대해 자세히 살펴보겠습니다. Houdini용 Apple 기반 워크플로를 사용하여 장면의 폴리곤 수를 줄이고, 지오메트리를 정리하며, UV 맵을 패키징하고, Reality Composer Pro 또는 선택한 게임 엔진으로 가져올 USD 애셋을 생성하는 방법을 확인하세요.

    챕터

    • 0:00 - 서론
    • 3:51 - Vision Pro를 위해 준비하기
    • 7:35 - 지오메트리 최적화하기
    • 17:22 - UV 투영
    • 24:20 - 텍스처 베이킹
    • 25:38 - USD 설정
    • 28:35 - 요약

    리소스

    • Construct an immersive environment for visionOS
    • Download immersive environment optimization toolkit for Houdini
    • Enabling video reflections in an immersive environment
      • HD 비디오
      • SD 비디오

    관련 비디오

    WWDC24

    • 공간 컴퓨팅을 위해 3D 애셋 최적화하기
    • 맞춤형 환경에서 더욱 몰입감 넘치는 미디어 시청 경험 만들기
    • 몰입감 넘치는 visionOS 앱을 위한 맞춤형 환경 만들기

    WWDC23

    • USD 생태계 살펴보기
  • 비디오 검색…

    visionOS 환경 최적화 세션에 오신 걸 환영합니다 저는 Apple의 Technical Artist Alex입니다 본 세션에선 Apple Vision Pro 의 몰입형 환경을 구축하는 더욱 실감 나는 스토리텔링 방법을 배웁니다 이 플랫폼에서는 초고해상도와 빠른 프레임 속도 실시간 상호작용이 가능합니다 이를 통해 현장감 넘치는 경험 제공이 가능한 고유한 환경을 구축할 수 있습니다 제대로 구현된다면 사람들은 마치 다른 곳에 온 듯한 느낌을 받죠 이를 위해선 시네마틱 수준의 비주얼을 목표로 해야 합니다 그래야 이전과는 차별화된 방식의 이야기를 전달할 수 있게 되죠 하지만 고품질의 실시간 렌더링은 많은 리소스를 요구합니다 소프트 섀도, 전역 조명 복잡한 음영과 같은 기능은 모두 비용이 많이 드는 요소들입니다 그럼 격차를 어떻게 매울까요? 하나의 기술만으로는 어렵습니다 기술적 제약 안에서도 유연한 전략적 접근이 필요하죠 시각적 품질은 최대한 유지하면서요 이때 최적화된 워크플로가 그 해답이 될 수 있습니다 먼저 영화 같은 조명과 세부 묘사를 담은 사전 렌더링된 이미지를 준비하고 실제 사용자의 시야와 경험을 바탕으로 지오메트리와 텍스처를 최적화합니다 그런 다음 최적화된 환경에 사전 렌더링 이미지를 적용해 고급 렌더링 수준의 비주얼을 구현합니다 마지막으로, 모든 것을 실시간 에디터에서 통합합니다 Reality Composer나 Unity와 같은 에디터에서 말이죠 그 결과, 진정한 몰입감을 주는 비주얼이 완성됩니다 이 영상에서는 전체 워크플로 중 두 가지 핵심 요소를 다룹니다 애셋을 최적화하고 베이킹하여 Vision Pro 앱에서 사용할 완성도 높은 환경을 제작하는 방법입니다 수작업으로도 가능하지만 시간이 많이 걸립니다 당연히 오늘 세션 시간보다 더 걸리죠 그 대신 워크플로 구축 프로세스의 대부분을 자동화하는 절차적 툴들의 사용 방법을 안내하겠습니다 3D 콘텐츠 최적화 툴중엔 Houdini가 매우 효과적이죠 노드 기반 워크플로를 중심으로 구축된 강력한 앱입니다 비주얼 스크립팅 시스템을 활용해 복잡한 작업을 자동화하고 계산하는 절차적 레시피를 만들 수 있습니다 Houdini에서는 HDA라 불리는 사용자 제작 툴도 사용가능 하죠 HDA는 Houdini Digital Assets 의 약자로 비주얼 스크립팅과 백엔드 코드를 결합한 구조입니다 사용자 정의 인터페이스를 통해 핵심 제어 매개변수를 제공하여 직관적인 방식으로 최적화 과정을 조정할 수 있죠 우리는 총 14개의 강력한 다용도 툴을 개발했습니다 이 툴들은 다운로드해서 예술적 비전을 최대한 살리면서 프로덕션 전반에 걸쳐 정밀한 제어를 가능하게 합니다 이 워크플로가 모든 환경에 맞지는 않지만 몰입형 콘텐츠 제작에 필요한 탄탄한 기반이 되어줍니다

    이 영상에서는 달 환경을 사례로 활용합니다 단계별 과정을 통해 Vision Pro의 실시간 성능 기준에 맞는 애셋 준비 방법을 알아보죠 Vision Pro용 애셋 제작이 처음이라면 그래픽 관점에서 간단히 개요를 설명하고 몰입형 콘텐츠를 제작할 때 알아야 할 점을 안내하겠습니다 그 다음엔 최적화 과정을 단계별로 소개할게요 먼저 Immersive Boundary를 활용해 기존 방식보다 더 효율적으로 지오메트리를 최적화하는 방법을 살펴보겠습니다 다음엔 같은 원리를 텍스처에도 적용하여 UV 레이아웃과 텍스처 베이킹 기법을 통해 최적화하는 방법을 설명하죠 모든 최적화가 완료되면 이 환경을 USD로 준비해 실시간 엔진으로 가져올 수 있게 됩니다 자, 시작해봅시다 제 동료 Scott이 WWDC24 영상 “공간 컴퓨팅을 위해 3D 애셋 최적화하기”에서 말했듯이 Vision Pro의 콘텐츠 제작은 다릅니다 이 기기를 위한 콘텐츠를 제작할 때는 사용자가 이를 어떻게 경험할지를 반드시 이해해야 합니다 개발 중에 내리는 모든 결정에 영향을 미칠 수 있기 때문입니다

    이는 완전 몰입형 장면에서 Vision Pro가 얼마나 많은 렌더링을 수행하는지를 고려할 때 더욱 중요합니다 혼합 몰입형 환경에서는 패스스루 영상 위에 일부 디스플레이만 렌더링됩니다 하지만 완전 몰입형 환경에서는 모든 픽셀이 렌더링되기 때문에 성능 요구가 훨씬 더 높아집니다 사용자는 완전 몰입형 환경에서 고정된 이동 공간에 있게 됩니다 이때 사용자는 물리적으로 모든 방향으로 몇 미터 정도만 이동 가능하고 그 범위를 벗어나면 몰입이 깨지고 현실로 돌아옵니다 이 공간이 바로 Vision Pro의 Immersive Boundary입니다 이 시스템은 사용자를 주변 환경으로부터 보호하고 그래픽 리소스를 최대한 활용할 수 있는 기회도 줍니다

    사람이 어디까지 움직일 수 있고 바라볼 수 있는지를 이해하면 모든 것을 최고 품질로 렌더링할 필요 없이 중요한 부분만 최적의 품질로 처리하면 됩니다 더할필요 없이 말이죠. 이것이 바로 환경 최적화의 핵심입니다 고품질 환경은 종종 엄청난 디테일과 수많은 폴리곤을 포함하기 때문에 우리가 미리 렌더링한 달 표면 콘텐츠만 해도 폴리곤이 1억 개를 넘습니다 이 정도는 실시간에서 제대로 작동하기 어렵죠. 하지만 이는 Houdini 툴이 얼마나 강력한지 확인할 완벽한 기회죠 그럼 이제 툴 패키지를 열고 장면을 세팅하면서 전체 최적화 워크플로를 하나씩 살펴보겠습니다

    먼저 Houdini 샘플을 다운로드하고 프로젝트 폴더를 엽니다 이 안에는 영상을 따라가기 위해 필요한 모든 파일이 들어 있죠 루트에는 메인 Houdini 파일인 optimize.hip이 있습니다 이 파일에는 우리가 알아볼 전체 설정이 담겨 있습니다 바로 옆에는 이 워크플로에 사용되는 모든 사용자 지정 도구가 있는 HDA 폴더가 있습니다 이 HDA는 메인 파일에 이미 참고되어 있지만 다른 Houdini 프로젝트에서도 재사용할 수 있습니다 이제 이 장면이 로드된 Houdini로 이동해 보겠습니다 이 프로젝트는 크게 세 부분으로 나뉘며 각 파트는 고유의 네트워크와 노드를 포함하고 있습니다 첫 번째는 소스 네트워크입니다 전체 해상도 레이아웃이며 고밀도 고품질 지오메트리를 사용하죠 샘플 파일에는 간단한 절차적 설정이 나와 있습니다 이 데모에서는 달 환경을 예시로 활용할 예정입니다 다음은 optimized입니다

    영상에서 소개된 기법들을 활용해 실시간 성능을 위한 장면으로 재구성합니다

    마지막으로 모든 요소가 USD로 조립되는 파트입니다 Reality Composer나 Unity처럼 런타임 편집기로 보낼 수 있죠 이제 첫 번째 커스텀 HDA를 살펴보죠. 이 툴은 워크플로 전반에 걸쳐 유용하게 사용됩니다 바로 Boundary Camera HDA입니다 몰입형 콘텐츠가 실제로 어떻게 보이는지 시각화하도록 만들어져

    Immersive Boundary의 가장자리를 정의할 수 있도록 기준 프레임을 제공합니다 다양한 카메라 세팅도 포함되어 콘텐츠를 실제 시점에서 쉽게 확인할 수 있습니다

    또 카메라를 쉽게 조정 가능한 매개변수도 제공되어 콘텐츠를 최적화하는 동안 장면을 자유롭게 탐색할 수 있습니다

    이제 프로젝트가 준비되었으니 지오메트리를 최적화하기 위한 첫 번째 툴 세트를 살펴봅시다 앞서 언급했듯이 이 장면에는 엄청난 수의 폴리곤이 존재합니다 수백 개의 바위와 수 킬로미터의 지형이 사방에 펼쳐져 있죠 이처럼 방대한 복잡도를 어떻게 줄일 수 있을까요? 애셋 하나하나를 단순화하는 Level of Detail 시스템을 사용할 수도 있죠. 그리고 일부 콘텐츠에는 이 방법이 적합합니다 하지만 우리는 일반적인 방식을 넘어 Immersive Boundary를 최대한 활용해 보겠습니다 이제 세 가지 기법을 활용해 동일한 장면을 단순화하고 총 폴리곤 수를 줄이는 과정을 보여드리겠습니다 먼저 Adaptive Polygon Reduction 입니다. 애셋을 하나씩 줄이는 대신 모든 삼각형을 최적화 대상으로 시선이 닿는 영역만을 기준으로 줄입니다 삼각형 크기의 시각화는 빨간색은 고밀도, 파란색은 더 크고 단순화된 영역을 나타냅니다 이 설정에서는 필요한 부분만 복잡도를 유지하며 디테일이 점진적으로 감소합니다 갑자기 툭 끊기는 방식이 아니라 자연스럽게 페이드아웃되죠 이렇게 하면 중요한 디테일은 또렷하게 유지되며 몰입감을 해치는 저품질 폴리곤 아티팩트를 피할 수 있습니다 개념은 이렇고 이제 어떻게 구축하는지 살펴보죠 여기서 중요한 역할을 하는 것이 바로 커스텀 툴입니다 이 툴들은 계산을 수행하고 전체 프로세스를 자동화합니다 속성 기반 매개변수를 사용하여 어떤 요소를 유지하고 어떤 부분을 줄일지 온전히 절차적 로직으로 지정할 수 있습니다 툴은 Houdini의 기본 기능인 PolyReduce가 기반이며 여러 시점에서 작동하도록 설정되어 있습니다 이 시각화에서 녹색 구체는 윤곽선의 중요도를 측정하기 위한 잠재적인 시점을 나타냅니다 이 HDA는 Immersive Boundary를 따라 배포된 샘플 포인트 세트를 기반으로 작동합니다 사용자가 경험할 수 있는 모든 시야 지오메트리 품질이 보장되죠

    이제 이 파이프라인에서 이 툴이 어디에 위치하는지 살펴봅시다 고폴리콘 소스 애셋을 불러온 다음 첫 번째 단계는 콘텐츠를 분할하는 것입니다. 이는 유형별 처리를 더 쉽게 만들죠 Houdini로 이동해서 이 HDA 중 하나를 설정하는 예시를 살펴보겠습니다 샘플 파일에서는 모든 바위를 한 번에 줄이기 위해 단일 Adaptive Reduce HDA로 처리합니다 하지만 이 작업은 상당히 무거운 연산입니다 왜냐하면 소스 바위의 삼각형만 2천2백만 개가 넘기 때문이죠 빠른 반복 작업을 위해 저는 바위의 일부만 따로 떼어 단일 HDA가 어떻게 설정되는지 좀 더 간단하게 보여드리겠습니다 이 바위들을 시작점으로 해서 Adaptive Reduce HDA 인스턴스를 하나 새로 추가하고 연결합니다

    그런 다음 Immersive 카메라로 전환해 Immersive Boundary 내부 시점에서 작업을 진행합니다

    이제 HDA를 활성화하고 실행하면

    감소된 후의 표면 밀도를 바로 확인할 수 있는 피드백을 제공하는 히트맵이 오버레이됩니다 전체 삼각형 수는 위쪽 매개변수에서 조정할 수 있으며

    이 값을 변경해 원하는 결과를 얻을 수 있습니다 앞서 언급했듯, 이 툴중 다수는 샘플 포인트에 의존하여 다양한 시점에서 지오메트리를 평가합니다 이 작업을 위한 전용 HDA가 바로 Boundary Samples입니다 Immersive Boundary 내부에 포인트를 생성하죠

    이제 이 HDA를 새로 만들고

    Adaptive Reduce HDA에 할당해 보겠습니다

    포인트를 지정하면 이 툴은 해당 위치 기반 감소 처리를 수행하죠 이제 실루엣 가장자리를 따라 더 많은 삼각형이 유지되며 전체 삼각형 수는 그대로 유지됩니다 이는 실루엣 매개변수로 제어됩니다

    이 값을 조정하면 이러한 기능의 삼각형 할당량을 정할 수 있죠 이제 좀 더 멀리 떨어진 바위의 경우를 보죠 거리 가중치를 조정해 더 적은 지오메트리를 유지하면서도 실루엣은 충분히 보존되도록 설정합니다

    대부분의 툴은 이와 유사한 방식으로 설정됩니다 HDA를 생성하고 샘플 포인트 지정 후 매개변수 조정으로 결과를 도출하는 식이죠

    이 툴을 지형에 한 번 바위 전체에 한 번 적용하면 주변 1킬로미터 내의 모든 지오메트리가 최적화됩니다 지형은 거리 기반으로 좀 더 급격하게 줄어들고 삼각형 밀도가 지평선을 향해 점진적으로 줄어들며 바위는 거의 모든 실루엣을 유지하며 나머지는 단순화됩니다 이렇게 주변 1킬로미터는 최적화됩니다 그럼 나머지 거리는 어떻게 할까요? 원거리 오브젝트에는 게임개발에서 자주 쓰이는 기법을 사용할 수 있습니다 바로 빌보드 활용이죠 멀리 떨어진 거리에서는 시차의 깊이 인지가 자연스럽게 한계에 도달하기 때문에 먼 오브젝트에는 굳이 3D 지오메트리 유지가 필요 없죠 Immersive Boundary 기준으로 볼 때 대략 1~3킬로미터 거리부터는 평면처럼 느껴지기 시작하죠 그래서 이 영역은 평면 이미지로 대체해도 깊이에 대한 체감 손실이 거의 없습니다 이는 복잡한 3D 오브젝트의 평면 지오메트리 렌더링이며 Immersive Boundary를 기준으로 방향을 맞춥니다 대규모 환경에서는 이 기법을 파노라마 스트립 형태로 설정해 나머지 장면과 자연스럽게 이어지도록 만들 수 있습니다 이번 달 환경에서는 1킬로미터 지점을 기준으로 설정했습니다 이로서 가까운 애셋에 더 많은 삼각형을 할당할 수 있게 되었죠

    빌보드 기법은 종종 투명도를 활용해 지오메트리를 간단하게 유지하지만 이번 툴은 실제 지오메트리를 이용해 실루엣을 구성합니다 즉, 외곽선은 원본 소스와 꼭짓점 단위로 정확히 일치하므로 투명 머티리얼이 필요하지 않습니다 이 기법은 다양한 오브젝트에 적용할 수 있습니다 단단한 표면의 바위부터 유기적 식생까지 모두 가능하죠 작동 방식은 각 꼭짓점에서 고정 위치로의 레이 캐스팅을 활용 구나 실린더 같은 단순한 형태에 충돌하도록 구성합니다 이들은 미리 정해진 거리에 위치하죠 처음에는 지오메트리가 엉망처럼 보일 수 있지만 포인트를 다시 삼각형으로 재구성하면 사용자 시점 기준에선 여전히 깔끔한 실루엣이 완성됩니다 Vista Billboard HDA는 전체 작업을 프로시저로 처리하죠 이 툴은 소스 레이아웃에서 지형을 불러온 직후에 배치됩니다

    이를 사용하면 1킬로미터 너머의 지오메트리가 수백만 개의 폴리곤에서 수천 개 수준으로 줄어듭니다 이 단순화된 메시가 앞서 수행한 최적화와 결합되어 전체 뷰 환경이 완전히 최적화됩니다

    지금까지의 절감 효과를 확인해볼까요? 어댑티브 메시 감소 기법과 멀리 있는 지오메트리를 빌보드로 변환한 덕분에 삼각형 개수는 이미 35만 개 수준까지 줄었습니다 초기 1억 개가 넘는 폴리곤 레이아웃에 비해 엄청난 감소죠 이제 보이는 모든 요소가 훨씬 효율적으로 구성된 상태입니다 다음 단계는 보이지 않는 요소 최적화, 오클루전 컬링입니다 오클루전 컬링은 완전히 가려진 지오메트리를 제거함으로써 렌더링과 텍스처링에 들어가는 리소스를 절약해줍니다 사용자가 실제로 볼 일이 없는 곳에 투자된 리소스를 말이죠 일부 컬링은 런타임에서 발생하며 이때 시야에 없는 전체 메시가 제거되기도 합니다 하지만 여기서는 렌더링을 더 쉽게 만들기 위해 보이지 않는 삼각형을 아예 지오메트리에서 제거해보겠습니다 다음 HDA는 삼각형을 제거하는 역할을 하며 모든 방향으로 수백만 개의 포인트를 레이 캐스팅해 어떤 폴리곤이 보이는지를 테스트합니다 삼각형의 어느 부분이라도 레이가 닿으면 유지 대상으로 표시되지만 그 외는 제거되며 여기선 빨간색으로 표시됩니다 이 툴셋에는 두 가지 종류의 컬링이 포함되어 있습니다 백페이스 제거와 오클루전 컬링입니다 이 두 기법은 폴리곤 감소 이후 함께 실행됩니다

    먼저 백페이스 제거입니다 도트 곱 비교를 사용해 Immersive Boundary에서 항상 반대 방향을 향하는 폴리곤을 찾아냅니다 빠르고 안정적인 방식으로 1차 제거에 적합하죠 제거된 폴리곤은 와이어프레임으로 표시되며 삼각형 절감 수치는 각 HDA 아래에 표시됩니다 달 환경에서는 약 6만 개가 제거되었습니다

    이제 두 번째 툴인 오클루전 컬링을 살펴보죠 이 툴은 각 샘플 위치에서 래이 캐스팅을 수행합니다 정확도는 사용 샘플 포인트 수와 각 포인트에서 쏘는 레이 수에 따라 달라집니다 이 예시에서는 약 11만 개의 삼각형이 컬링되었습니다 이는 백페이스 컬링으로 절감된 수치에 더해 추가로 발생한 결과죠 이 두 가지 툴을 함께 사용하면 강력한 조합이 됩니다 남아 있던 삼각형 중 약 50%가 이 단계에서 제거되며 파란색으로 시각화된 영역에서 업데이트된 지오메트리 경계를 볼 수 있습니다 그리고 실제 시점에서 보면 아무 일도 없었던 것 같습니다 최종 수치를 확인해 보겠습니다

    이제 삼각형 수는 단 18만 개입니다 이 정도 수준의 복잡도를 가진 환경에서라면 정말 이상적인 결과입니다 심도 맵을 활용한 시각화 비교를 보면 실루엣은 동일하고 거의 차이가 없지만 지오메트리는 원래의 극히 일부만 사용되고 있습니다

    이런 방식의 워크플로 구축 이점은 단순 수치 뿐이 아닙니다 최적화 과정을 전 단계에 걸쳐 정밀 조정할 수 있는 능력이죠 더 높은 품질이 필요할 땐 수치를 높이고 더 높은 성능이 필요할 땐 낮추면 됩니다 프로시저 기반 툴 체인으로 전적인 프로세스 통제가 가능하죠 이제 지오메트리 최적화가 완료되었으니 UV 레이아웃과 텍스처도 동일하게 최적화해 봅시다 겉보기에는 단순한 풍경처럼 보이지만 이런 황량한 지형조차 독특한 디테일로 가득 차 있죠 수십 기가바이트에 달하는 고해상도 PBR 맵이 광선 추적 기반 라이팅으로 전체 표면에 렌더링되어 있습니다 이는 모든 픽셀이 모든 시점에서 고유하다는 의미입니다 이 모든 데이터의 처리는 엄청난 과제입니다

    모든 데이터를 최적화된 지오메트리에 유지하려면 어떻게 해야 할까요? UV에서부터 시작해야 합니다 UV는 텍스처 지오메트리 매핑 방식을 제어하는 2D 좌표계죠 여기서도 Immersive Boundary를 활용해 텍스처 데이터를 구성하는 방식을 다시 생각할 수 있습니다 Immersive Boundary의 경계부터 시작해 처음 5미터 구간만 분리해 보겠습니다 이 영역의 애셋은 거의 모든 각도에서 관찰될 수 있으므로 텍셀 밀도는 모든 표면에서 일정하게 유지되어야 합니다 이 그리드 패턴은 그 개념을 보여 줍니다 면적 기반 UV 매핑시 근거리도 모든 표면이 선명하게 유지됩니다 이제 Boundary 바깥으로 나가면 상황이 흥미로워집니다 이 구간의 애셋은 제한된 각도와 거리에서만 보이기 때문에 일반적인 면적 기반 매핑으로는 한계가 있습니다 접근 불가능한 영역에도 많은 텍셀을 낭비하게 되죠 따라서 전략을 바꿔야 합니다 면적 기반 UV 대신 투영 기반 매핑으로 전환해 Immersive Boundary 안의 화면 영역에 텍스처를 정렬합니다

    이것이 바로 스크린 공간 매핑이며 텍셀 밀도가 실제 사용자 시야에 따라 자연스럽게 조정됩니다 먼 거리에 있는 표면에는 더 적은 텍셀이 할당되고 가깝고 잘 보이는 영역에는 더 높은 해상도를 할당합니다 스크린 공간 매핑을 적용하려면 다음 툴은 구면 투영 이라는 기술을 사용합니다 사용자를 중심으로 구체를 감싸고 그 표면에 환경을 투영한다고 생각해보세요 이 방식이 작동하려면 UV와 미리 렌더링된 이미지가 동일한 기준을 사용해야 합니다 그래서 소스 환경을 렌더링할 때 동일한 구면 투영이 카메라에 적용됩니다 이미지가 UV 레이아웃과 정확히 일치하게 되는 것이죠 이 설정을 최적화된 지오메트리에 적용해봅시다

    첫 인상은 꽤 좋아 보입니다 와이어프레임을 활성화하니 지오메트리와 렌더링된 이미지가 완벽하게 맞물려 연결됩니다 하지만 일어나서 주변을 살펴보면 어떻게 될까요?

    어라, 뭔가 이상해 보입니다

    사실, 풍경의 모든 부분이 텍스처에서 누락되어 있습니다 표면이 앞에 있는 무엇이든 끌어다가 붙잡고 작은 바위를 큰 바위에 큰 바위를 산에 덧씌웁니다

    이처럼 몰입형 경험을 위해서 장면을 모든 각도에서 커버하려면 더 많은 정보가 필요합니다 하지만 여기에 몇 가지 어려움이 있습니다 첫 번째는 UV 중첩으로 여기서는 빨간색으로 표시됩니다 비스듬한 각도에서 보면 표면이 UV 공간 내에서 압축되어 삼각형이 서로 겹쳐지고 뒤쪽 지오메트리 위로 겹치게 됩니다 즉, 렌더링에 해당 표면이 있어도 해당 데이터를 저장할 공간이 없습니다 다음 문제는 텍셀 스케일링입니다 이는 실제 투영 위치에서만 정확합니다 위치가 조금이라도 바뀌면 텍셀 밀도가 무너지기 시작합니다

    세 번째는 렌더 자체입니다 단일 파노라마 캡처로는 모든 것을 볼 수 없습니다 일부 표면은 디테일이 부족하거나 아예 누락되죠 이 문제를 해결하려면 여러 각도에서 UV를 투영해 각 표면에 최적인 위치를 찾고 모든 시점에서 텍셀 밀도를 조정해야 하며 겹치는 UV를 풀어줘야 합니다 꽤 복잡해 보이지만 하나씩 단계별로 접근하면 여러 개의 관리 가능한 작업으로 나눌 수 있습니다 복잡도를 낮출 필요는 없습니다 단지 이를 통제할 수 있는 올바른 시스템이 필요할 뿐입니다

    먼저, Immersive Boundary 내부의 지오메트리를 분리하고 그 외의 환경에 집중해보겠습니다

    이 기법은 두 단계로 이루어집니다 첫 번째는 메시를 더 작은 섹션으로 분할해 하나의 UV 투영에만 의존하지 않도록 하는 것입니다 이는 마치 UV 아일랜드를 미리 정의하는 것과 같습니다 실제 UV 생성 전에 경계가 정의되죠 다음으로 각 섹션은 고유한 UV 투영을 받습니다 가시성이 극대화되는 임의 위치에서 투영됩니다 달 표면에서는 다시 가장 어려운 바위를 중심으로 살펴보겠습니다 모든 면이 하나의 시점에서 보이는 것은 아니기 때문입니다 이를 돕기 위해 사용하는 것이 Mesh Partition HDA입니다 이 툴은 메시를 가능한 적은 수의 섬으로 나누려 시도하며 각 섹션이 최소 하나의 위치에서 명확히 보이도록 해줍니다 예를 들어 이 대표 바위에서는 표면이 분할되어 UV를 한쪽 면에서 투영한 다음 반대편에서도 투영할 수 있어 양쪽에 필요한 해상도가 확보되죠 이 Multi-Partition HDA는 지오메트리 최적화 바로 다음 단계에서 워크플로에 통합됩니다 파티션이 설정되면 Multi-Projection HDA를 사용해 모두 같이 처리할 수 있습니다

    이 툴은 앞서 HDA가 생성한 각 파티션을 점검합니다 해당 조각이 화면 공간에서 가장 크게 보이는 지점에 UV를

    투영하고 각 투영의 기준점을 향해 선을 그려 UV가 어디서부터 생성되었는지를 정확히 보여 줍니다 처음에는 조금 복잡하게 보일 수 있지만 일단 실행되면 어려운 작업은 이미 끝난 상태입니다 결과를 살펴보면

    모든 UV 아일랜드가 서로 겹쳐 쌓여 있는데 각각이 자신의 투영 중심에 정렬되었기 때문입니다 이제 이들을 정리하고 최종 UV 아틀라스로 패킹하면 됩니다

    이게 전체 설정입니다 바위와 지형 각각에 대해 한 번씩 처리하며 먼저 메시를 절차적으로 분할합니다 그다음 각 섹션에 새 UV를 투영합니다 결과는 더 정확한 텍셀 스케일링 최소한의 겹침 및 왜곡이죠 이 설정을 통해 전체 환경은 단 두 개의 텍스처로 구성됩니다 Immersive Boundary 내부인 면적 기준으로 스케일링된 하나 그 외부가 또 하나입니다 스크린 공간 스케일링 덕분에 텍스처 크기가 비슷하게 유지되죠 이는 매우 강력한 압축입니다 수 킬로미터의 지형이 불과 몇 미터 분량의 공간으로 응축된 셈이죠

    최적화가 완료되면 이제 달 환경은 미리 렌더링된 이미지를 베이크할 준비가 됩니다 렌더링과 베이크는 그 자체로도 깊은 주제이지만 여기서는 모든 작업을 정리하는 데 필요한 몇 가지 핵심 개념만을 다루겠습니다 Houdini에서는 구면 렌더링을 활용해 베이크할 수 있습니다 작동 방식은 다음과 같습니다 임시 구면 투영으로 렌더링을 지오메트리에 매핑한 뒤 그 투영을 최종 UV 레이아웃에 베이크합니다 하지만 이 방식은 단 하나의 시점만을 캡처한다는 점을 명심해야 합니다 누락된 데이터를 채우기 위해 시점에 의존하지 않는 투영 방식을 사용할 수도 있습니다

    게임 개발을 해보셨다면 이 방식을 경험해 보셨을 텐데요 하이 폴리 디테일을 로우 폴리 메시에 베이크하는 작업과 같죠 이번에도 마찬가지로 소스 지오메트리의 표면에서 최적화된 UV 아틀라스로 직접 투영합니다 이 방식은 모든 표면에 대해 완전한 커버리지를 보장합니다

    이러한 기법을 조합한 후 최적화된 지오메트리에 언릿 머티리얼로 적용하면 텍스처가 완전히 적용된 환경이 완성됩니다 수십 기가바이트에 달하던 고해상도 텍스처들이 이제는 훨씬 작게 압축됩니다 심지어 대규모 환경도 수백 메가바이트 이내로 압축이 가능하며 여전히 고급 비주얼을 유지할 수 있습니다 이제 모든 준비가 완료되어 Vision Pro로 보내보죠 마지막 단계는 USD 설정입니다 하지만 잘 설계된 USD는 단지 구조를 정리하는 데 그치지 않고 성능을 한층 더 향상할 수 있는 최종 최적화 기회를 제공합니다 최적화 이후, 환경은 이제 하나의 고유한 메시로 구성됩니다 이 상태로 내보내면 시야에 들어오지 않더라도 모든 삼각형이 런타임 중 GPU로 전송됩니다 이 비용을 줄이려면 효율적인 Frustum Culling설정이 필요합니다 USD 계층 구조를 활용하면 장면을 파트별로 나눌 수 있고 렌더러가 각 엔티티의 바운딩 박스를 기준으로 지오메트리를 자동으로 제거할 수 있게 됩니다 이는 카메라 시야에 보이지 않는 객체를 렌더링 대상에서 제거하여 성능을 향상시켜줍니다

    작동 방식을 보여드릴께요 파란색 와이어프레임이 GPU에서 언로드되는 엔티티를 보여주며 사용자가 장면을 둘러볼 때 실시간으로 업데이트됩니다 이 워크플로에서는 Immersive Boundary 내부인지 외부인지에 따라 두 가지 유형의 파티셔닝을 사용합니다 각각을 위한 커스텀 HDA가 존재하며 두 HDA 모두 새로운 파티션을 정의하기 위한 속성을 생성합니다 USD 레이아웃 기반을 형성하며 Boundary 내부 지오메트리는 Boundary Partition HDA를 사용해 분할되며 발 아래의 밀집된 지오메트리를 제거하는 데 최적화되어 있습니다 Boundary 외부의 모든 요소는 Frustum Partition HDA가 처리하며 이 툴은 메시를 점점 더 큰 타일로 나누되 각 타일이 화면 공간에서 비슷한 크기를 가지도록 최적화합니다 지금까지의 최적화는 모두 표면 수준에서 이루어진 것으로 진짜 객체가 아니라 포인트와 프리미티브의 데이터 테이블을 수정한 것입니다. 하지만 USD는 계층 구조를 요구합니다 변환, 메시 프리미티브 그리고 지오메트리 서브셋으로 구성된 조직화된 구조가 필요합니다 내보내기 전에 지오메트리를 정리하고 USD가 해석 가능한 구조로 구성해야 합니다 이 설정에서는 몇 가지 속성만 그대로 전달하면 됩니다 name 속성은 USD 계층 구조에서 프리미티브 이름이 되고 그룹 지정은 Frustum Culling에 사용되는 서브셋을 정의합니다 두 개의 파티션 HDA가 이미 이 그룹들을 생성했으므로 USD로 전달하기만 하면 됩니다 이 속성들이 설정되면 나머지 작업은 간단합니다 지오메트리를 Solaris로 가져오고 Subset Groups를 활성화한 다음 커스텀 그룹 이름을 선언하면 됩니다. 이제 각 파티션은 지오메트리 서브셋이 되어 실시간 Frustum Culling에 사용 가능하죠 달 환경은 매우 밀도 높은 지오메트리로 시작했습니다 거대한 텍스처와 복잡한 음영까지 포함되어 있었죠 하지만 이제 최적화가 완료되었습니다 처음에는 시네마틱 렌더였던 장면이 이제는 실시간으로 구동 가능 상태에 몰입형 콘텐츠를 위한 절차적 툴셋으로 구동되죠 이제 정리하면서 이러한 최적화가 얼마나 다양한 몰입형 경험을 만들 수 있게 해 주는지 살펴보겠습니다

    달 장면은 처음에 삼각형이 1억 개가 넘었지만 최종적으로는 20만 개 이하로 줄었고 화면에 한 번에 보이는 건 10만 개도 되지 않습니다 Frustum Culling 덕분이죠 정적인 장면이라면 이 수치를 더 높일 수도 있습니다 하지만 고려해야 할 다른 비용도 있습니다. 예로는 복잡한 음영 애니메이션 캐릭터 그리고 인터랙티브 요소들이죠 따라서 삼각형 수를 낮게 유지하는 것은 가장 중요한 콘텐츠용 리소스를 확보하는 데 도움이 됩니다 텍스처 측면에서는 구면 투영이 큰 영향을 주었습니다 전체 환경을 250MB 이하의 텍스처 메모리로 줄일 수 있었죠 이 수치는 프로젝트마다 다르겠지만 대부분의 표면이 화면 공간에 맞춰 스케일되기 때문에 비교적 일관되게 유지할 수 있죠 보너스로, 원본 입력에 얼마든지 고유한 텍스처 사용이 가능하죠 왜냐하면 결국 모두 단일 텍스처 아틀라스로 베이킹되기 때문입니다

    오브젝트 측면 전체 엔티티 수가 200개 미만으로 유지되며 일반적인 프레임에서는 드로우 콜이 100개 미만 발생합니다 이게 가능한 이유는 모든 애셋이 병합되고 베이킹되어 일관된 메시 파티션으로 구성되기 때문입니다 초기 몇 개의 고유한 오브젝트로 시작했는지는 중요하지 않습니다 이 영상에서 사용된 툴들은 가능한 범용적으로 설계되어 있어 다양한 상황에 재사용할 수 있습니다

    예를 들어, 포털 기반 경험을 구축 중이라면 매개변수 조정으로 거의 동일한 툴셋을 사용할 수 있습니다 여기서는 Occlusion Culling HDA를 수정해 포털 범위에서 보이지 않는 삼각형을 제거할 수 있습니다 일부 환경에서는 여러 개의 Immersive Boundary가 필요할 수 있습니다 각 위치마다 장면 재구축 대신 여러 세트의 샘플 포인트를 사용해서 각 몰입형 경험에 맞춰 최적화할 수 있습니다 약간의 수정만으로도 대부분의 툴이 동일하게 작동하며 두 Boundary 모두에 대해 삼각형을 스케일링하고 각각에 필요한 최소 텍셀 밀도로 UV를 투영할 수 있습니다 이렇게 하면 단일 메시, 텍스처 세트로 두 시점 모두 지원 가능하죠 작업 환경은 모두 다릅니다 모든 상황에 맞는 단 하나의 워크플로는 존재하지 않죠 하지만 여러 툴을 갖춰둔다면 각 프로젝트에 가장 적합한 접근 방식을 선택할 수 있습니다 예를 들어, 달이나 조슈아트리와 같은 암석 지형 후드산이나 할레아칼라산같은 분위기 있는 장면 또는 회의실, 극장의 단단한 표면의 실내 공간같은 경험들은 여기서 다룬 기술로 구축 가능하며 더 다양한 기술도 적용 가능합니다 어떤 장면은 셰이더 복잡도가 높아 실시간 성능 유지를 위해 지오메트리를 줄여야 할 수 있고 반대로 회의실 같은 장면은 처음부터 효율성을 고려해 수작업 모델링되므로 과한 최적화는 오히려 과잉일 수 있습니다 기술적 설정을 더 깊이 탐구하고 싶다면 제공된 샘플 프로젝트부터 시작해보세요 이 영상의 워크플로와 동일한 툴이 포함되어 있으며 자유롭게 사용하고 수정할 수 있습니다 README 파일에는 각 툴에 대한 설명과 영상에서 다루지 않은 추가 HDA도 포함되어 있습니다 플랫폼별 최적화 지침을 더 확인하려면 “공간 컴퓨팅을 위해 3D 애셋 최적화하기”를 참고하세요 핵심은 고품질 콘텐츠가 반드시 높은 비용을 요구하진 않는다는 것입니다. 초기에는 개발자들이 모든 디테일을 렌더링할 수 없었기에, 더 적은 리소스로 더 많은 것을 구현할 수 있는 창의적인 기술을 만들어야 했습니다. 그러한 원칙은 지금의 워크플로에도 힘을 실어줍니다 핵심은 의도적인 최적화이며 이는 창의적인 과정과 나란히 진행되어야 합니다. 훌륭한 툴은 가능성의 한계를 넓혀 더 깊은 몰입과 강한 존재감 전달이 가능한 환경을 만들 수 있습니다. 감사합니다

    • 0:00 - 서론
    • 절차적 도구를 사용하여 visionOS 앱이나 게임을 위한 아름다운 몰입형 환경을 구축하는 방법을 알아보세요. 고품질 환경을 만드는 구성 요소를 알아본 다음 최적화 프로세스에 대해 자세히 살펴보겠습니다. Houdini용 Apple 기반 워크플로를 사용하여 장면의 폴리곤 수를 줄이고, 지오메트리를 정리하며, UV 맵을 패키징하고, Reality Composer Pro 또는 선택한 게임 엔진으로 가져올 USD 애셋을 생성하는 방법을 확인하세요.

    • 3:51 - Vision Pro를 위해 준비하기
    • Apple Vision Pro를 위한 콘텐츠를 만들려면 공간 컴퓨팅 기능 때문에 독특한 접근 방식이 필요합니다. 기기의 렌더링 요구 사항을 고려해야 하는데, 특히 모든 픽셀이 렌더링되는 완전 몰입형 환경에서는 더욱 그렇습니다. 완전 몰입형 환경에서 사용자는 3미터의 이동 공간인 Immersive Boundary에 있게 됩니다. 이 경계를 사용하면 해당 영역 내에서 사용자가 보고 이동할 수 있는 환경 부분만 렌더링하여 그래픽 리소스를 최대한 활용할 수 있습니다.

    • 7:35 - 지오메트리 최적화하기
    • Immersive Boundary를 활용하고 Houdini의 기술을 적용하여 환경 디자인의 품질을 유지하면서 장면의 폴리곤 수를 줄이는 방법을 알아보세요.

    • 17:22 - UV 투영
    • 환경의 텍스처를 효율적으로 포함시키고 렌더링 비용을 더욱 줄이기 위해 텍스처 매핑과 데이터 구성을 최적화하는 방법을 알아보세요.

    • 24:20 - 텍스처 베이킹
    • 구면 렌더를 사용하고, 렌더를 소스 지오메트리에서 최적화된 UV 아틀라스로 직접 투영하여 모든 표면에 대해 완전한 커버리지를 보장하는 방법을 알아보세요.

    • 25:38 - USD 설정
    • Reality Composer Pro나 다른 엔진에서 가져올 수 있도록 최적화된 환경을 USD로 내보내는 방법을 알아보세요.

    • 28:35 - 요약
    • 이러한 기술을 활용하여 포털 기반 경험, 여러 개의 Immersive Boundary가 있는 환경과 같은 다양한 환경을 만드는 방법을 알아보세요.

Developer Footer

  • 비디오
  • WWDC25
  • visionOS에 대한 맞춤형 환경 최적화하기
  • 메뉴 열기 메뉴 닫기
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    메뉴 열기 메뉴 닫기
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    메뉴 열기 메뉴 닫기
    • 손쉬운 사용
    • 액세서리
    • 앱 확장 프로그램
    • App Store
    • 오디오 및 비디오(영문)
    • 증강 현실
    • 디자인
    • 배포
    • 교육
    • 서체(영문)
    • 게임
    • 건강 및 피트니스
    • 앱 내 구입
    • 현지화
    • 지도 및 위치
    • 머신 러닝 및 AI
    • 오픈 소스(영문)
    • 보안
    • Safari 및 웹(영문)
    메뉴 열기 메뉴 닫기
    • 문서(영문)
    • 튜토리얼
    • 다운로드(영문)
    • 포럼(영문)
    • 비디오
    메뉴 열기 메뉴 닫기
    • 지원 문서
    • 문의하기
    • 버그 보고
    • 시스템 상태(영문)
    메뉴 열기 메뉴 닫기
    • Apple Developer
    • App Store Connect
    • 인증서, 식별자 및 프로파일(영문)
    • 피드백 지원
    메뉴 열기 메뉴 닫기
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program(영문)
    • News Partner Program(영문)
    • Video Partner Program(영문)
    • Security Bounty Program(영문)
    • Security Research Device Program(영문)
    메뉴 열기 메뉴 닫기
    • Apple과의 만남
    • Apple Developer Center
    • App Store 어워드(영문)
    • Apple 디자인 어워드
    • Apple Developer Academy(영문)
    • WWDC
    Apple Developer 앱 받기
    Copyright © 2025 Apple Inc. 모든 권리 보유.
    약관 개인정보 처리방침 계약 및 지침