하이트 맵
하이트 맵을 사용하면 각 정점에 대한 높이 구성 요소 만 저장하고 (보통 2D 텍스처) 전체 쿼드에 대해 한 번만 위치 및 해상도를 제공합니다. 랜드 스케이프 지오메트리는 지오메트리 쉐이더 또는 하드웨어 테셀레이션을 사용하여 각 프레임에서 생성됩니다. 하이트 맵은 충돌 감지를 위해 가로 데이터를 저장하는 가장 빠른 방법입니다.
장점 :
상대적으로 낮은 메모리 사용량 : 꼭짓점 당 하나의 값만 저장하고 인덱스는 저장하지 않아도됩니다. 디테일 맵 또는 노이즈 필터를 사용하여 인식 된 디테일을 증가시켜이를 더욱 개선 할 수 있습니다.
상대적으로 빠름 : 하이트 맵의 지오메트리 셰이더가 작고 빠르게 실행됩니다. 그래도 지오메트리 지형만큼 빠르지는 않습니다.
삼각형 기반 3D 가속이없는 시스템에서는 광선 마칭 하이트 맵이 지형을 렌더링하는 가장 빠른 방법입니다. 이것은 오래된 게임에서 복셀 그래픽으로 불 렸습니다.
Dynamic LOD / terrain : 카메라와의 거리에 따라 생성 된 메시의 해상도를 변경할 수 있습니다. 해상도가 너무 떨어지면 (약 0:40) 변하는 지오메트리가 발생하지만 재미있는 효과에 사용될 수 있습니다.
손쉬운 지형 생성 / 생성 : 프랙탈 Perlin Noise 와 같은 노이즈 기능을 혼합하여 하이트 맵을 쉽게 만들 수 있으며 하이트 맵 편집기는 빠르고 사용하기 쉽습니다. 두 가지 접근 방식을 결합 할 수 있습니다. 또한 편집기에서 작업하기도 쉽습니다.
효율적인 물리학 : 수평 위치는 메모리의 1-4 개 위치에 직접 매핑되므로 물리학의 지오메트리 조회가 매우 빠릅니다.
단점 :
x / y 좌표 당 정확히 하나의 높이 : 일반적으로지면이나 돌출 된 절벽에는 구멍이있을 수 없습니다.
적은 제어 : 그리드 크기가 텍스처 좌표와 일치하는 경우 각 포인트의 정확한 높이 만 제어 할 수 있습니다.
아티팩트 : 하위 쿼드를 정의하는 4 개의 정점이 동일한 평면에 있지 않으면 두 정점 사이의 분할이 표시됩니다. 이것은 보통 기본 방향을 따르지 않는 가장자리가있는 가파른 절벽에서 발생합니다.
하이트 맵은 지금까지 지형을 렌더링하는 가장 효율적인 방법이며 고급 지형 기능에 의존하지 않고 넓은 야외 공간이있는 많은 최신 게임에서 사용됩니다. 위키 백과는 프로그램이 사용하는 하이트의 목록을 가지고 있지만, 그 의미는 그들이 단지, 그래서 여기에 렌더링 또한, 일부 게임 리소스로 사용하거나 있는지 확실하지 않습니다 가능성 을 사용하는 방법을 :
정당한 원인 2 : 영역이 정사각형 섹터에로드되고 지형에 구멍이 없습니다. 데모에는 일반적으로 건물이있는 가장자리를 따라 삼각형이 늘어난 깊은 구멍이 있습니다. (이 영역은 일반적으로 액세스 할 수 없지만 데모의 제한 사항 중 일부를 제거하는 모드가 있습니다 ...)
심즈 2 ( 어쩌면 ) : 이웃 지형은 하이트 맵으로로드되지만 로트 (건물 부지)가 배치되는 구멍이 있습니다. 그러나 절벽을 많이 만들면 전형적인 인공물이 있으며 집에 지하실을 추가하고 절벽을 베란다 아래에 숨기는 것은 매우 지루합니다.
Valve의 소스 엔진 게임 : 사각형 브러시 (정적 레벨 지오메트리)는면에 높이 매핑 된 지형을 가질 수 있습니다. 이 게임에서 일반적인 특징은 종종 다른 브러시 나 소품으로 숨겨져 있습니다.
모든 하이트 맵 지형을 메쉬로 렌더링 할 수 있기 때문에 셰이더를 보지 않고도 확실하게 말할 수 없습니다.
복셀
복셀 지형은 각 점에 대한 지형 데이터를 3D 그리드에 저장합니다. 이 방법은 스파 스 옥트리와 같은 압축 방법을 사용하더라도 의미있는 표면 세부 사항마다 항상 가장 많은 저장 공간을 사용합니다.
"Voxel 엔진"이라는 용어는 종종 오래된 3D 게임에서 일반적으로 사용되는 지형 높이 맵을 레이 마킹하는 방법을 설명하는 데 사용되었습니다.이 섹션은 복셀 데이터로 저장된 지형에만 적용됩니다.
장점 :
연속 3D 데이터 : 복셀은 광맥과 같은 숨겨진 지형 지형에 대한 지속적인 데이터를 저장하는 유일한 방법입니다.
손쉬운 수정 : 압축되지 않은 복셀 데이터를 쉽게 변경할 수 있습니다.
고급 지형 기능 : 돌출부를 만들 수 있습니다. 터널은 매끄 럽습니다.
흥미로운 지형 생성 : Minecraft 는 미리 정의 된 지형 기능 (트리, 던전)으로 노이즈 기능과 그라디언트를 오버레이하여이를 수행합니다. ( 자세한 정보는 Notch의 블로그에서 Terrain Generation, Part 1 을 읽으십시오 . 05.8.2011 기준으로 Part 2는 없습니다.)
단점 :
느리게 : 복셀 데이터를 렌더링하려면 광선 추적기 를 사용 하거나 마칭 큐브 와 같은 메시를 계산해야합니다 (아티팩트가 있음). 인접 복셀은 메시 생성에 독립적이지 않으며 셰이더는 더 복잡하며 일반적으로 더 복잡한 지오메트리를 생성합니다. LOD가 높은 복셀 데이터 렌더링은 매우 느릴 수 있습니다.
방대한 스토리지 요구 사항 : 복셀 데이터 저장에는 많은 메모리가 사용 됩니다 . 이러한 이유로 보셀 데이터를 VRAM에로드하는 것은 실용적이지 않습니다. 최신 하드웨어에서도 더 작은 텍스처를 사용하여 보상해야하기 때문입니다.
변형 가능한 지형과 같은 복셀 기능에 의존하지 않는 게임에는 복셀을 사용하는 것이 실용적이지 않지만 경우에 따라 재미있는 게임 메커니즘을 허용 할 수 있습니다. 복셀 엔진은 오래된 게임에서 더 일반적 이지만 새로운 예도 있습니다.
Atomontage 엔진 : 복셀 렌더링.
웜 4 : "poxels"를 사용합니다. Wikipedia에 따르면 복셀과 다각형이 혼합되어 있습니다.
Minecraft : 복셀을 사용하여 RAM의 지형을 나타내며 그래픽은 다각형 그래픽입니다. 그것은 주로 소프트웨어 계산입니다.
Terraria : 2D 복셀의 예입니다. 어떻게 렌더링되는지 모르겠습니다.
물리학과 결합 된 복셀 : 게임이 아닙니다. 그러나 그것은 파괴 가능성을 멋지게 보여줍니다.
Voxatron : 메뉴와 HUD를 포함한 거의 모든 그래픽에 복셀을 사용하는 게임.
메시
다각형 메쉬는 지형을 저장하고 렌더링하는 가장 유연하고 정확한 방법입니다. 이들은 정밀한 제어 또는 고급 지형 기능이 필요한 게임에서 종종 사용됩니다.
장점 :
매우 빠름 : 정점 셰이더에서 일반적인 투영 계산 만하면됩니다. 지오메트리 쉐이더가 필요하지 않습니다.
매우 정확 : 모든 좌표는 각 정점에 대해 개별적으로 저장되므로 수평으로 이동하고 세부적인 부분이있는 곳에서 메쉬 밀도를 증가시킬 수 있습니다.
낮은 메모리 영향 : 이는 메쉬가 일반적으로 작은 맵보다 적은 메모리를 필요로한다는 것을 의미합니다. 특징이 적은 영역에서는 꼭짓점이 더 희박 할 수 있기 때문입니다.
( Wikipedia의 삼각 불규칙 네트워크 참조 ).
아티팩트 없음 : 메시는 그대로 렌더링되므로 결함이나 이상한 모양의 테두리가 없습니다.
고급 지형 기능 : 구멍을 남기고 돌출부를 만들 수 있습니다. 터널은 매끄 럽습니다.
단점 :
불쌍한 동적 LOD : 사전 계산 된 메시에서만 가능합니다. 이로 인해 추가 데이터없이 전환 할 때 이전 점을 새 정점에 매핑 할 때 "점프"가 발생합니다.
수정하기 쉽지 않음 : 수정 해야 할 영역에 해당하는 정점을 찾는 것이 느립니다.
충돌 감지에 매우 효율적이지 않음 : 하이트 맵 및 복셀 데이터와 달리 특정 위치의 메모리 주소는 일반적으로 직접 계산할 수 없습니다. 이는 정확한 표면 구조에 의존하는 물리 및 게임 로직이 다른 스토리지 형식보다 느리게 실행될 수 있음을 의미합니다.
다각형 지형은 넓은 영역이 없거나 정밀도와 돌출부가 없어 하이트 맵 지형을 사용할 수없는 게임에서 종종 사용됩니다. 나는 목록이 없지만 꽤 확신합니다.
이것을 사용하십시오.
다른 방법
셰이더 파이프 라인에서 완전히 터 레인을 만들 수 있습니다. 알고리즘이 프래그먼트 / 픽셀 셰이더에서만 실행되는 경우 메모리 영향이 거의 제로인 반면 디테일은 사실상 무제한입니다. 명백한 단점은 카메라가 원래 렌더링 표면과 교차 할 때 모양과 문제를 거의 제어 할 수 없습니다. 플레이어가 행성 표면과 상호 작용하지 않는 우주 게임에서 여전히 유용합니다. 매개 변수 애니메이션은 이러한 종류의 지형에서 가장 잘 작동합니다.
그래픽 카드에서 생성 된 지형 지오메트리를 다운로드하여 나머지 게임 엔진에 사용할 수 있어야하지만, 그 성능이 어떤지 또는 지금까지 수행되었는지는 알 수 없습니다.
결론
모든 시나리오에 적합한 방법은 없지만 특정 작업에 적합한 방법을 선택하는 것은 매우 쉽습니다.
지형 표면에 돌출부 또는 구멍이 필요하지 않고 물리 또는 동적 지형을 사용하는 경우 하이트 맵 이 가장 좋은 솔루션입니다. 확장 가능하며 대부분의 게임에서 잘 작동합니다.
메시 는 가장 높은 정밀도를 가지며 돌출부, 구멍 및 터널을 설명 할 수 있습니다. 자주 변하지 않는 복잡한 지형이있는 경우 사용하십시오.
복셀 은 복잡한 기능이 많은 매우 역동적 인 지형을 묘사하는 데 적합합니다. 많은 양의 메모리와 처리가 필요하므로 직접 렌더링하지 마십시오.
지형과 상호 작용할 필요가 없거나 매우 상세한 그래픽이 필요한 경우 다른 방법 이 위의 방법 보다 낫습니다. 일반적으로 매우 특정한 시나리오에서만 작동합니다.
예를 들어 메쉬 지형을 하이트 맵으로 테셀 레이트하여 절벽의 세부 구조를 높이는 등 여러 방법을 결합하여 둘 이상의 기능을 얻을 수 있습니다.
동적 지형 생성 무겁게에 사용되는 절차 공간 시뮬레이션 과 일부는 지난 몇 년 동안 정말 고급되고있다 . 이 프로젝트의 포럼에는 주제에 대한 자료가 있어야합니다.