답변:
'클래식'3D 지형 편집기의 단계는 다음과 같습니다.
메쉬를 생성합니다 (예 : 정사각형 격자, 두 정사각형으로 구성된 모든 정사각형). 모든 정점은 삼각형간에 공유되므로 교차 당 하나의 법선 만 있습니다.
이것은 3DMesh로 만들어지고 프로그램에서 렌더링되어야합니다.
그리드의 부분을 올리거나 내리는 (작고 더 큰) 도구를 만드십시오 (마우스 커서의 위치를 마우스 커서로 계산하고 메시 정점을 수정해야하지만 위아래 만 수정해야합니다).
1024x1024x4 이상과 같은 큰 텍스처를 만들고 splat-map이라고하는 텍스처로 만듭니다.
(예를 들어 분홍색이 아닌 R, G, B OR Alpha로) 페인트하고 그 못생긴 기본 색상 (빨강, 파랑, 녹색, 알파)을 대체하는 텍스처를 선택할 수 있도록하십시오.
셰이더 (생성해야 할)는 멋진 텍스처 (돌, 잔디 등)를 스 플랫 맵 (추악한 것)의 강도와 곱한 다음 전체를 혼합하여 예를 들어 다음과 같이 2 가지 색상 만 사용) :
큰 이미지 때문에 죄송합니다. 직장에서 이것을 함께 채찍질했습니다 ...
첫 번째는 지형의 데이터 구조와 편집기에서 원하는 것을 명확하게하는 것입니다. 메시입니까? 높이 배열? 마인 크래프트 스타일 복셀 시스템? 나무 나 건물과 같은 메시 지형 피처를 추가 할 수 있어야합니까? 수동, 자동 또는 둘 다? 나는 계속할 수 있지만, 당신은 아이디어를 얻습니다.
기본 지형 편집기는 작성하기 어렵지 않지만 세부 사항은 제작중인 게임 및 제작하려는 지형 유형에 따라 크게 다릅니다.
이것은 대부분 Valmond의 답변에 대한 후속 조치이지만 의견으로 추가하기에는 부족하지 않습니다.
기본 편집기를 만들면 GPU에서 전체적으로 하이트 맵을 생성하여 실험 해 볼 수 있습니다. 이것은 완전히 선택 사항이지만 끊임없이 변화하는 지형을 위해 GPU로 작업을 오프로드하는 좋은 방법입니다. Valmond는 이미 픽셀 쉐이더에서 수행되는 텍스처 스플래 팅에 대해 언급했지만 그리드에서 정점을 올리거나 내리기 위해 텍스처 조회를 사용하여 버텍스 쉐이더도 사용할 수 있습니다. 버텍스 쉐이더로 이것을 달성하는 방법에 대한 튜토리얼 이 있습니다. 셰이더가 아닌 것은 C # 및 XNA에 따라 다르지만 중요한 것은 셰이더 코드에 있습니다.
이 경우 CPU 측의 코드는 메모리에 저장된 그레이 스케일 텍스처를 수정하는 것만 처리합니다. 메쉬 그리드는 평평하게 유지되고 정점은 CPU에 의해 업데이트되지 않습니다. 텍스처가 변경 될 때마다 새로운 텍스처가 GPU로 전달 될 수 있습니다.
모든 쉐이더 모델이 버텍스 쉐이더에서 텍스처 샘플링을 지원하는 것은 아닙니다 (예를 들어 HLSL에서는 쉐이더 모델 3.0 이상이 필요함).
Ogre의 ETM http://www.ogre3d.org/addonforums/viewforum.php?f=16을 보면 아이디어를 얻을 수 있습니다. Artifex Terra 는 실제 사용 하려는 경우이를 기반으로합니다.