터레인의 표면에는 풀 덤불이나 기타 작은 오브젝트(예: 돌)가 존재할 수 있습니다. Unity는 원하는 디테일 수준(LOD)과 성능에 따라 텍스처링된 사각형 또는 전체 메시를 사용하여 이러한 오브젝트를 렌더링할 수 있습니다.
인스턴싱 디테일은 고해상도 렌더 파이프라인(HDRP)을 비롯한 모든 렌더 파이프라인에서 작동합니다.
터레인 디테일은 여러 가지 모드에서 사용할 수 있으며 각 모드는 게임 개발 중에 서로 다른 용도로 사용됩니다.
Mode | 설명 |
---|---|
Instanced mesh | 이 모드는 터레인에 임의의 메시를 원하는 수만큼 배치해야 하는 대부분의 시나리오에 가장 적합하기 때문에 Unity에서 권장하는 모드입니다. Instanced mesh를 추가하려면 Add Detail Mesh를 선택하고 Use GPU Instancing 옵션을 활성화합니다. |
Vertex Lit mesh | 렌더링에 GPU 인스턴싱을 사용하지 않습니다. 대신 모든 디테일 인스턴스를 하나의 메시로 결합하므로 단순한 셰이딩과 얻을 수 있는 인스턴스 수에 제한이 생깁니다. Vertex Lit mesh를 추가하려면 Add Detail Mesh를 선택하고 Render Mode를 Vertex Lit으로 설정합니다. |
Grass mesh | Vertex Lit mesh와 유사하게 작동하지만 Unity는 이러한 메시를 풀로 취급하므로 항상 노멀이 위쪽을 향하고 바람에 따라 움직입니다. Grass mesh를 추가하려면 Add Detail Mesh를 선택하고 Render Mode를 Grass로 설정합니다. |
Grass Texture | 바람에 따라 움직이는 텍스처에서 직접 풀 사각형 메시를 만들 수 있습니다. 커스텀 메시를 지정할 필요가 없으며 빌보드 효과를 위해 풀 사각형이 항상 카메라를 향하도록 하는 옵션도 있습니다. 이 옵션을 적용하려면 Add Grass Texture를 선택합니다. |
풀 및 디테일 페인팅을 활성화하려면 터레인 인스펙터 툴바의 Paint Details 버튼을 선택합니다.
오버레이에서 Paint Details에 액세스하려면 다음과 같이 하십시오.
맨 처음 터레인에는 풀이나 디테일 요소가 하나도 없습니다. 인스펙터에서 Edit Details 버튼을 클릭하여 Add Detail Mesh 및 Add Grass Texture 옵션이 포함된 메뉴를 표시합니다. 각 옵션을 클릭하면 터레인 페인팅을 위해 추가할 에셋을 선택할 수 있는 창이 나타납니다.
Detail Prefab 필드를 사용하여 프로젝트의 프리팹을 선택합니다. 실감나게 표현하기 위해 각 메시의 크기와 컬러를 결정하는 데 랜덤 인자가 영향을 미칩니다. Unity는 펄린 노이즈 알고리즘을 사용하여 이러한 랜덤 인자를 생성합니다.
Min Width, Max Width, Min Height, Max Height 값은 메시가 랜덤으로 생성되는 X축이나 Y축을 따라 위쪽과 아래쪽 스케일링을 지정합니다.
Align to Ground (%) 값으로 디테일 축이 터레인 노멀에 얼마나 정렬되는지 지정합니다. 0인 경우 정렬되지 않고, 100인 경우 노멀에 정렬됩니다.
Position Jitter (%)는 디테일 분포의 무작위성을 정렬에서 무작위로 제어합니다.이는 품질 설정에서 레거시 분포가 비활성화된 경우에만 사용할 수 있습니다.
Noise Seed 설정은 난수 제너레이터 시드를 설정합니다. 각 시드 값은 고유한 생성을 나타냅니다. 두 가지 디테일 타입에 대해 동일한 시드를 설정하면 생성된 인스턴스가 동일해집니다. Noise Spread 값은 XZ 평면에 대한 노이즈 패턴의 스케일링을 나타내며 값이 높을수록 주어진 영역 내에서 더 많은 배리에이션이 있음을 나타냅니다.
Hole Edge Padding (%) 설정은 디테일 오브젝트가 구멍 영역 가장자리에서 얼마나 떨어져 있는지를 제어합니다. 자세한 내용은 DetailPrototype.holeEdgePadding을 참조하십시오.
Detail Density 값은 크기에 상대적인 디테일의 밀도를 제어합니다.터레인 설정에서 설정한 “커버리지” 디테일 흩뿌리기 모드에서 이를 활성화할 수 있습니다.
Healthy Color 및 Dry Color 설정은 컬러 배리에이션을 제어합니다. Unity는 정상적인 컬러와 건조한 컬러 간에 선형 보간을 수행하며, 메시 크기에 따라 컬러를 선택합니다. 예를 들어 시스템에서는 크기가 더 큰 메시를 더 정상적인 것으로 간주합니다. 이러한 메시를 선형 보간한 결과 정상적인 컬러 틴트에 더 가까워집니다. 이러한 컬러 설정은 인스턴스화 메시에 영향을 미치지 않으므로 Use GPU Instancing을 선택한 경우 표시되지 않습니다.
Affected by Density Scale 체크박스는 터레인 설정에 설정된 디테일 밀도 스케일 설정이 이 디테일에 영향을 미치는지 결정합니다.
Render Mode를 Vertex Lit 또는 Grass로 설정할 수 있습니다.
Render Mode | 설명 |
---|---|
Vertex Lit | 씬에서 바람에 움직이지 않는 견고한 버텍스 릿 게임 오브젝트로 디테일 메시를 렌더링합니다. |
Grass | Grass Textures와 유사한 단순화된 조명으로 씬의 디테일 메시를 렌더링하고 바람에 움직입니다. |
참고: 버텍스 릿 또는 풀 렌더 모드를 사용하여 디테일에 텍스처를 적용하려면 MainTex 머티리얼 프로퍼티(빌트인/URP에서 기본 컬러 맵의 기본 프로퍼티 이름)에 텍스처를 할당하십시오. 인스턴스화되지 않은 디테일에 대해서는 다른 머티리얼 프로퍼티가 고려되지 않습니다.
GPU 인스턴싱을 사용하여 디테일 메시를 렌더링할지를 지정할 수 있습니다. GPU 인스턴싱을 사용하면 Unity는 프리팹에 지정된 머티리얼과 셰이더를 렌더링에 사용합니다. 이렇게 하면 셰이더에서 더 많은 커스터마이징을 수행하고 셰이더 그래프를 사용할 수 있습니다.
Unity는 여전히 각 인스턴스에 너비 및 높이 노이즈를 적용하지만 Healthy Color/Dry Color 노이즈는 비활성화합니다. 셰이더에서 자체 컬러 배리에이션 기법과 함께 다른 무작위화를 사용할 수 있습니다.
내부적으로 일부 Unity GPU 인스턴싱 제한 사항이 렌더링에 영향을 미칠 수 있습니다. 예시:
Unity가 모든 프레임마다 인스턴싱 상수 버퍼를 동적으로 빌드하는 일반 인스턴싱과 달리 인스턴싱 디테일에는 타겟 하드웨어에서 허용하는 경우 GPU 메모리 사용량이 약간 증가하는 대신 CPU 및 GPU 성능을 향상시키기 위한 지속적인 상수 버퍼가 있습니다.
Use GPU Instancing을 선택하면 Render Mode 설정이 회색으로 표시되고 사용할 수 없습니다.
Grass Texture 추가 창
디테일 텍스처는 풀을 나타내는 텍스처입니다. 에셋 스토어에서 텍스처를 다운로드하거나 자체 텍스처를 만들 수 있습니다. 텍스처는 빈 영역에 대해 알파가 0으로 설정된 작은 이미지입니다. “풀”은 일반 용어입니다. 텍스처는 꽃이나 인공 오브젝트(예: 철조망 코일)를 나타낼 수도 있습니다.
Min Width, Max Width, Min Height, Max Height, Noise Seed, Noise Spread, Hole Edge Padding (%), Align to Ground (%), Position Jitter (%), Detail Density, Affected by Density Scale, Healthy Color, Dry Color 설정은 메시에서와 동일하게 작동합니다. 더 자세한 내용은 위의 디테일 메시 추가 섹션을 참조하십시오.
Billboard 옵션을 활성화하면 풀 이미지가 항상 카메라를 향하도록 회전합니다. 풀 덤불이 2차원이고 측면에서 보이지 않기 때문에 이 옵션은 풀이 빽빽하게 우거진 들판을 나타내고 싶을 때 유용합니다. 그러나 풀이 듬성듬성한 경우 개별 덤불을 회전하면 플레이어의 눈에 확 띄게 되어 이상하게 보일 수 있습니다.
디테일을 제거하려면 제거할 디테일을 선택하고 Edit Details 버튼을 클릭한 다음 Remove를 선택합니다. 디테일을 제거하면 Unity는 해당 디테일을 흩뿌린 터레인 영역을 나타내는 데이터를 지웁니다.