개인 프로젝트로서 저는 Castle Story 부드러운 지형과 같은 지형을 만드는 지형 생성기를 만들려고합니다.
이전에 본 적이 없다면 여기 :
보시다시피, 블록과 "부드러운"블록의 조합입니다.
이 모양을 에뮬레이트하기 위해 시도한 것은 각 표면 블록에 미니 하이트 맵을 제공하는 것입니다. 이것은 일반적으로 작동하지만 다음과 같은 지형을 생성하는 몇 가지 문제가 있습니다.
문제는 각 블록이 1x1x1이지만 때로는 특정 위치의 높이가 음수 또는> 1이라는 것입니다.이 경우 자르고 높이를 0 또는 1로 설정합니다.
내가 의미하는 바를 더 잘 설명하기 위해 다이어그램이 있습니다.
높이를 생성하기 위해 기본적으로 다음을 수행합니다.
genColumn(int x, int z)
{
int highestBlockY = (int)noise2d(x, z);
bool is_surface = true;
for(int y = max_height - 1; y >= 0; y--)
{
Block b;
if(is_surface)
{
b = Block.Grass;
b.HasHeightMap = true;
// generate heightmap
for(int ix = 0; ix < 5; ix++)
{
for(int iz = 0; iz < 5; iz++)
{
float heightHere = noise2d(x + ix / 4, z + iz / 4) - y;
// clip heights
if(heightHere > 1)
heightHere = 1;
if(heightHere < 0)
heightHere = 0;
b.HeightMap[ix][iz] = heightHere;
}
}
is_surface = false;
}
else
{
b = Block.Dirt;
}
setBlock(x, y, z, b);
}
}
아마도 "true"펄린 노이즈 값을 사용하여 잘못 접근하고 있습니까?
어떤 도움이라도 대단히 감사하겠습니다!