Version: 2019.2
공간 매핑 콜라이더
공간 매핑 저수준 API

공간 매핑 렌더러

공간 매핑 렌더러(Spatial Mapping Renderer) 컴포넌트는 공간 매핑 표면을 시각적으로 보여줍니다. 표면을 시각적으로 디버깅하고 환경에 시각적 효과를 추가할 때 매우 유용합니다.

시스템은 물리 공간의 변화에 대해 공간 매핑 렌더러 컴포넌트에 주기적으로 데이터를 전송합니다. 컴포넌트는 공간 매핑 시스템으로부터 이러한 데이터를 받을 때마다 반환된 표면 데이터를 메시 필터(Mesh Filter)메시 렌더러(Mesh Renderer) 컴포넌트가 모두 포함된 게임 오브젝트로 베이크합니다. 공간 매핑 렌더러 컴포넌트는 이러한 표면 게임 오브젝트의 수명 주기를 관리합니다. 다시 말해, 씬 내에서 표면 게임 오브젝트 메시 렌더러의 생성, 업데이트 및 삭제를 처리합니다.

Unity 에디터에 나타나는 공간 매핑 렌더러 컴포넌트
Unity 에디터에 나타나는 공간 매핑 렌더러 컴포넌트

렌더 설정

아래 테이블에는 공간 매핑 렌더러 컴포넌트에 사용 가능한 모든 고유 렌더 설정이 나와 있습니다.

Setting Description
Render State 모든 표면 게임 오브젝트는 Render State 설정으로부터 머티리얼을 받습니다. 예를 들어 런타임 시점에서 스크립트가 Render State 설정을 변경하면 모든 표면 게임 오브젝트의 렌더 머티리얼이 선택한 Render State 설정으로 변경됩니다. 이렇게 하면 드로우 콜 수가 줄어들어 렌더링 성능이 향상됩니다. 또한 공유 머티리얼을 사용하여 렌더링 동안 애플리케이션에서 사용하는 메모리 사용량을 줄일 수도 있습니다. 세 가지 옵션 중 하나를 선택하여 표면을 렌더링하십시오.

자세한 내용은 아래의 공간 매핑 렌더러 사용을 참조하십시오.
오클루전(Occlusion) Occlusion Material 에 정의된 머티리얼을 적용합니다. 이 투명 머티리얼은 게임 오브젝트를 현실 표면 뒤에 숨깁니다. 자세한 내용은 아래의 공간 매핑 렌더러 사용을 참조하십시오.

참고: 표면의 메시 렌더러를 모두 활성화하여 다른 설정을 오버라이드합니다.
시각화(Visualisation) Visualisation Material 에 정의된 머티리얼을 적용하여 환경의 공간 매핑 표면(대개 와이어프레임 머티리얼)을 시각화합니다. 자세한 내용은 아래의 공간 매핑 렌더러 사용을 참조하십시오.

참고: 표면의 메시 렌더러를 모두 활성화하여 다른 설정을 오버라이드합니다.
None 이 옵션을 선택하면 공간 매핑 표면에 할당된 모든 메시 렌더러를 비활성화합니다.
Occlusion Material 공간 매핑 렌더러의 렌더 상태(Render State)오클루전(Occlusion) 으로 설정하면 여기에서 선택하는 머티리얼이 적용됩니다. 기본 설정은 빌트인 SpatialMappingOcclusion 머티리얼입니다.
Visual Material 공간 매핑 렌더러의 렌더 상태(Render State)시각화(Visualisation) 로 설정하면 여기에서 선택하는 시각 머티리얼이 적용됩니다. 기본 설정은 빌트인 SpatialMappingWireframe 머티리얼입니다.

일반 설정

SpatialMapping 일반 설정을 참조하십시오.

공간 매핑 렌더러 사용

이 컴포넌트를 이용하면 동적으로 생성된 모든 표면의 머티리얼을 쉽게 변경할 수 있습니다. Unity는 두 개의 미리 빌드된 머티리얼 타입을 제공합니다.

Occlusion Material

게임 오브젝트가 투명하게 표시되게 만들지만, 홀로그램이 게임 오브젝트를 통해 보이지 않습니다. 예를 들어 실제 책상이 그 아래에 배치된 게임 내 홀로그래픽 오브젝트를 가리도록 할 때 유용합니다.

Visual Material

Unity가 공간 매핑 렌더러 컴포넌트의 모든 표면에 적용하는 와이어프레임 머티리얼입니다. 기본 와이어프레임 셰이더를 사용하면 와이어프레임의 컬러가 실제 거리를 나타냅니다. 이 옵션은 디버깅 작업 시 매우 유용하지만, 시각 효과에도 사용할 수 있습니다. 셰이더는 컬러 매핑을 통해 거리를 표시합니다. 아래 테이블에는 컬러 매핑이 나와 있습니다.

HoloLens부터의 거리(Distance from HoloLens) Color
0–1미터 검은색
1–2미터 빨간색
2–3미터 초록색
3–4미터 파란색
4–5미터 노란색
5–6미터 시안색
6–7미터 자홍색
7–8미터 고동색
8–9미터 청록색
9–10미터 주황색
10미터 이상 흰색
Spatial Mapping Renderer 컴포넌트에서 시각화 머티리얼로 사용되는 기본 와이어프레임 셰이더(와이어프레임의 컬러는 거리를 나타냄)
Spatial Mapping Renderer 컴포넌트에서 시각화 머티리얼로 사용되는 기본 와이어프레임 셰이더(와이어프레임의 컬러는 거리를 나타냄)

새 머티리얼을 시각 머티리얼(Visual Material) 또는 오클루전 머티리얼(Occlusion Material) 에 할당해도 표면 게임 오브젝트는 자동으로 변경되지 않습니다. 새 머티리얼을 모든 표면에 적용하려면 렌더 상태(Render State) 를 변경한 머티리얼 즉, 시각 머티리얼(Visual Material) 또는 오클루전 머티리얼(Occlusion Material) 로 설정해야 합니다.

Unity 에디터의 렌더 상태(Render State) 에서 (씬 내 게임 오브젝트에 직접) 오클루전 머티리얼(Occlusion Material) 또는 시각 머티리얼(Visual Material) 프로퍼티를 할당하면 공간 매핑이 공간 매핑 렌더러 컴포넌트와 마찬가지로 머티리얼을 삭제합니다. 하지만 공간 매핑은 컴포넌트가 포함된 스크립트를 통해 할당되거나 변경된 오클루전(Occlusion) 또는 시각 머티리얼(Visual Material) 은 삭제하지 않기 때문에 수동으로 직접 삭제해야 합니다.

아래 코드 스니핏은 공간 매핑이 모든 표면 게임 오브젝트에 런타임 시점에 동적으로 적용하는 머티리얼을 변경합니다.


SpatialMappingRenderer renderer = spatialMappingGameObject.AddComponent<SpatialMappingRenderer>();
renderer.visualMaterial = new Material(Shader.Find("VR/SpatialMapping/Wireframe"));
renderer.renderState = SpatialMappingRenderer.RenderState.Visualization;

표면 게임 오브젝트

공간 매핑 렌더러 컴포넌트는 런타임 동안 별도의 표면 게임 오브젝트 세트를 생성합니다. 이 표면 게임 오브젝트는 표면 부모 게임 오브젝트에 연결된 씬에 나타납니다.

예제 표면 부모 게임 오브젝트 및 표면 게임 오브젝트 자식
예제 표면 부모 게임 오브젝트 및 표면 게임 오브젝트 자식

공간 매핑 렌더러 가 표면 게임 오브젝트를 생성하는 경우 다음의 컴포넌트가 포함됩니다.

공간 매핑 렌더러 에서 생성하는 표면 게임 오브젝트의 인스펙터 뷰
공간 매핑 렌더러 에서 생성하는 표면 게임 오브젝트의 인스펙터 뷰

여러 개의 공간 매핑 렌더러 컴포넌트를 씬에 추가하면 각 컴포넌트가 고유한 표면 게임 오브젝트 세트를 생성합니다. 예를 들어 공간 매핑 렌더러 컴포넌트가 포함된 두 개의 게임 오브젝트가 있는 경우 씬에 두 세트의 표면 게임 오브젝트가 포함됩니다. 각 세트는 런타임 시점에 각 컴포넌트에 의해 생성됩니다. 최적화를 위해 이 점을 잘 기억해두는 것이 좋습니다.


  • 2018–05–01

  • Unity 2017.3에서 HoloLens 공간 매핑에 대한 설명이 업데이트됨

공간 매핑 콜라이더
공간 매핑 저수준 API