사용자가 전체 공간에서 Android XR 앱을 실행하면 패스스루로 표시하거나 몰입형 가상 공간으로 환경을 재정의할 수 있습니다.
앱은 콘텐츠 또는 환경에 따라 특정 환경을 트리거할 수 있습니다. 예를 들어 앱에서 천둥번개가 언급되면 폭풍우가 몰아치는 환경을 표시하거나 역사 앱에서 검투사를 설명할 때 가상 로마 콜로세움을 표시할 수 있습니다.
환경은 앱을 맞춤설정하고 몰입도를 높이는 다용도 방법입니다. 전체 공간에서는 원하는 환경을 유연하게 만들 수 있습니다.
사용자의 관심을 끄는 독특한 시각적 요소와 오디오를 만들고 사용자에게 편안하고 안전한 느낌을 주도록 노력하세요.
공간 환경의 요소
환경은 깊이, 질감, 3D 도형을 통합할 수 있습니다. 전체 공간 모드에서는 표준 gITF 형식으로 자체 가상 환경을 제공할 수 있습니다.
공간 환경을 추가하는 방법 알아보기
다음과 같은 선택적 구성요소는 장면을 빌드하는 데 도움이 될 수 있습니다. 하나를 선택하거나 모두 결합하여 복잡한 시각적 경험을 만들어 보세요.
주변 3D 도형
환경의 도형과 텍스처의 360도 이미지가 모두 포함된 .gltf 또는 .glb 파일을 제공하여 몰입형 환경을 만들 수 있습니다. 또한 3D 객체의 사실적인 조명과 반사에 필요한 HDR EXR 이미지에서 만든 이미지 기반 조명 (IBL) 파일을 포함해야 합니다.
추가 3D 도형
공간 인식을 개선하려면 사용자 근처에 지원 도형을 전략적으로 배치합니다. 사용자로부터 1.5m 이내에 0.9m를 초과하는 물체를 배치하지 마세요. UI 요소와의 깊이 충돌이 발생할 수 있습니다.
주변 또는 추가 3D 도형의 경우 Android XR은 .gltf 또는 .glb 파일 확장자를 지원합니다. Blender, Maya, Spline과 같은 서드 파티 도구에서 이러한 파일 형식을 만들고 내보낼 수 있습니다.
안전하고 편안한 환경 만들기
이 가이드라인에 따라 사용자가 탐색하기에 안전하고 편안한 공간 환경을 만드세요.
사용자가 전체 스페이스와 홈 스페이스 간에 빠르게 전환할 수 있도록 명확한 시각적 신호를 추가합니다. 예를 들어 전환을 트리거하는 버튼에 콘텐츠 접기 및 콘텐츠 펼치기 아이콘을 사용할 수 있습니다.
충돌을 방지하려면 물체를 사용자로부터 1미터 이상 떨어뜨려 두세요.
이렇게 하면 사용자는 실제 물리적 물체를 피하면서 충분히 움직일 수 있습니다.
여러 환경을 만들고 사용자가 환경 간에 전환할 수 있는 메뉴를 추가할 수 있습니다.
성능 위주로 최적화
일부 공간 환경에서는 높은 성능이 요구되며 원활한 프레임 속도, 짧은 지연 시간, 사용자 불편을 방지하기 위한 최적화가 필요합니다.
입체 렌더링 및 실시간 상호작용의 처리 요구사항을 고려할 때 효율적인 3D 모델 설계를 따르고 텍스처와 셰이더를 현명하게 사용하는 것이 좋습니다. 이 가이드라인을 따르면 시각적으로 풍부하고 다양한 기기에서 성능이 우수한 XR 환경을 만드는 데 도움이 됩니다.
파일 최적화
폴리곤 수는 성능에 직접적인 영향을 미치므로 가능하면 최적화하세요.
효율적인 메시 구조를 사용하고 불필요한 세부정보와 겹치는 도형을 줄입니다.
복잡한 모델을 단순화하고 텍스처 아틀라스를 사용하여 그리기 호출을 줄입니다.
여러 텍스처를 하나의 파일로 결합해 보세요.
효율적인 텍스처 압축을 사용하고 애셋 크기를 줄여 GPU 오버로드를 방지하고 모델과 텍스처를 최적화합니다. 최적의 성능을 위해 권장되는 애셋 크기는 3D 배경화면 또는 glb의 경우 약 80MB, 오디오 파일의 경우 15MB입니다.
UI와 충돌하거나 사용자에게 피로감을 줄 수 있는 밝기 급증이 없는 안전한 색조 범위를 유지합니다.
접근성 높이기
모든 방향에서, 특히 사용자 시야의 중간 가로 밴드에서 UI가 읽기 쉬워야 합니다. 산만하게 만들 수 있는 복잡성이나 세부정보는 피하세요.
편안함을 위한 디자인
미드필드 대형 UI 패널을 사용하는 경우 패널과 관련된 사용자의 위치를 고려하세요. 사용자는 화면이 표시되는 표면으로부터 최소 1.5m 이상 떨어져 있어야 합니다. 이렇게 하면 위를 올려다보지 않고도 대형 가상 화면을 편안하게 중앙에 놓고 볼 수 있는 충분한 거리가 확보됩니다.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-07-27(UTC)
[null,null,["최종 업데이트: 2025-07-27(UTC)"],[],[],null,["# Spatial environments\n\nWhen a user launches your Android XR app in [Full Space](/design/ui/xr/guides/foundations#full-space), you can present it\nin passthrough or override their environment with an immersive virtual space.\nYour app can trigger certain environments based on content or experiences. For\nexample, an app could show a stormy environment when a thunderstorm is\nmentioned, or a history app could show a virtual Roman Colosseum when explaining\ngladiators.\n\nEnvironments are a versatile way to customize your app and enhance immersion. In\nFull Space, you have full flexibility to create the experience you envision.\nCreate unique visuals and audio to draw users in, while striving to make them\nfeel comfortable and safe.\n| **Preview:** For this developer preview release, spatial environments are only available in Full Space, and teleportation and interactivity aren't supported.\n| **Note:** If a user enters Full Space and you haven't defined a spatial environment, your app inherits the system environment selected in Home Space.\n\nElements of a spatial environment\n---------------------------------\n\nEnvironments can incorporate depth, texture, and 3D geometry. When in Full\nSpace, you can provide your own virtual environment in standard gITF format.\n[Learn how to add spatial environments](/develop/xr/jetpack-xr-sdk/add-environments).\n\nThese optional components can help you build your scene. Choose one, or combine\nthem all to create a complex visual experience.\n\n\n**Surrounding 3D geometry**\n\nYou can create [immersive environments](/develop/xr/jetpack-xr-sdk/add-environments#overview-spatial) by providing a `.gltf` or `.glb` file\ncontaining both the environment's geometry and a 360° image for the texture. You\nshould also include an Image Based Lighting (IBL) file created from a high\ndynamic range [EXR image](/develop/xr/jetpack-xr-sdk/add-environments#create-exr), which is necessary for realistic lighting and\nreflections on 3D objects.\n\n\u003cbr /\u003e\n\n\n**Additional 3D geometry**\n\nTo enhance spatial awareness, strategically place supportive geometry near a\nuser. Avoid placing objects above 0.9 meters within 1.5 meters of a user, as\nthis can lead to depth conflicts with UI elements.\n\n\u003cbr /\u003e\n\nFor surrounding or additional 3D geometry, Android XR supports either a `.gltf`\nor `.glb` file extension. You can create and export these file formats from\nthird-party tools such as [Blender](https://www.blender.org/), [Maya](https://www.autodesk.com/products/maya),\n[Spline](https://spline.design/), among others.\n\nCreate safe and comfortable experiences\n---------------------------------------\n\nFollow these guidelines to create a spatial environment that's safe and\ncomfortable for users to explore.\n\n- **Add clear visual cues** to let users quickly switch between Full Space and Home Space. For example, you can use [collapse content](https://fonts.google.com/icons?icon.query=collapse+content) and [expand content](https://fonts.google.com/icons?icon.query=expand+content) icons for buttons to trigger transitions.\n- **Keep objects at least 1 meter away from the user to avoid collisions**. This gives the user enough room to move around while avoiding real-world physical objects.\n- **You can create multiple environments**, and add a menu for users to switch between them.\n\nOptimize for performance\n------------------------\n\nSome spatial environments demand high performance, and require optimization to\nmaintain smooth frame rates, low latency, and avoid user discomfort.\n\nGiven the processing demands of stereoscopic rendering and real-time\ninteractions, we recommend following efficient 3D model design and judicious use\nof textures and shaders. These guidelines can help you create XR experiences\nthat are visually rich and perform well across a range of devices.\n\n**Optimize files**\n\n- Polycount will directly affect performance, try to optimize where possible.\n- Employ efficient mesh structures and reduce unnecessary detail and overlapping geometry.\n- Reduce draw calls by simplifying complex models and using texture atlases. Try combining multiple textures into a single file.\n- Use efficient texture compression and reduce asset sizes to prevent GPU overload, and to optimize models and textures. Recommended asset sizes for optimal performance are approximately 80 MB for 3D wallpaper or glb, and 15 MB for audio files.\n- Use [KTX2](https://github.khronos.org/KTX-Specification/ktxspec.v2.html) texture compression to optimize GPU performance.\n- Bake lighting information into textures where possible.\n\nConsider a 360° UI safe zone\n----------------------------\n\nStay in a safe tonal range with no spikes in brightness that could conflict with\nthe UI or fatigue users.\n\nMake it accessible\n------------------\n\nEnsure the UI is legible in all directions, especially in the middle horizontal\nband of a user's field of view. Avoid complexity or details that might distract.\n\nDesign for comfort\n------------------\n\nIf you are using mid-field large UI panels, consider the position of a user in\nrelation to it. A user should be at least 5 feet above the surface that the\nscreen floats above. This leaves enough distance for comfortable, centered\nviewing of a large virtual screen without having to look up."]]