대부분의 펄린 노이즈 알고리즘을 사용하면 다음과 같이 특정 위치에서 노이즈 값을 검색 할 수 있습니다 noise(x,y,z)
. 이것은 청크 단위로 청크를 생성하는 것이 매우 사소한 일입니다. 청크 위치 대신 전역 위치를 전달하기 만하면됩니다.
for(int i = 0; i < CHUNKMAX_X; i++)
for(int j = 0; j < CHUNKMAX_Y; j++)
for(int k = 0; k < CHUNKMAX_Z; k++)
if(isSolid(perlinNoise.get(chunkPosition.x + i,
chunkPosition.y + j,
chunkPosition.z + k))
thisChunk[i,j,k] = new Voxel(solid);
else
thisChunk[i,j,k] = new Voxel(air);
보시다시피, 청크 경계를 반복하고 해당 글로벌 위치가 견고한 지 여부를 확인하여 청크에 대한 지형을 생성하고 있습니다. 이것은 일반적으로 지형을 생성하는 데 사용하는 방법과 동일합니다.
perlinNoise.get
전역 위치를 취하고 밀도를 반환합니다. isSolid
복셀이 "충분히 밀도가 높은"지 여부를 확인하기위한 간단한 테스트가 필요한 곳 은 어디 입니까?
perlinNoise.get
단순한 노이즈 알고리즘보다 더 복잡 할 수 있습니다. 당신은 당신의 세계에서 복셀의 깊이에 따라 검사를 할 수 있습니다. 예를 들어 복셀이 "절대베이스 그라운드 레벨"이라고 결정한 것보다 낮 으면 펄린 웜 알고리즘을 사용하여 밀도를 반환 할 수 있습니다. 절대베이스보다 높으면 일반 밀도 함수를 사용하여 더 다양한 지형. 그러나 둘 사이의 혼합을 권장합니다.
다른 Perlin 노이즈 기능을 결합하는 것은 당신이 가지고 노는 것과 작동하는 것을 보는 것입니다. 게임을 다시로드하지 않고도 일부 값을 변경하고 지형을 핫 스왑 할 수 있도록 환경을 설정하는 것이 가장 좋습니다. 행복한 실험.