3D Perlin Noise로 생성 된 플로팅 지형을 제거하는 방법은 무엇입니까?


10

현재 3D Perlin Noise를 사용하여 Marching Cubes와 함께 임의의 지형을 생성하고 있습니다.

내 문제는 내 지형에서 적절한 높이를 얻기 위해 노이즈 기능을 조정하는 것 같습니다. 한 옥타브 만 사용하는 경우 노이즈와 관련된 모든 지점이 분명히 보간되어 상당히 부드러운 데이터가 생성됩니다. 그러나 돌출부 / 동굴 / 들쭉날쭉 한 지형을 얻으려면 다양한 진폭의 여러 옥타브를 사용하거나 결과 값을지도의 '최대'높이로 조정해야합니다.

뭔가 빠졌을 수도 있지만 3D 펄린 노이즈가있는 행진 큐브를 사용하면 정기적으로 떠 다니는 지형을 얻을 수 있습니다.

이 문제를 해결하는 방법에 대한 아이디어가 있거나 설명하는 것과 같은 결과를 얻는 데 사용할 수있는 다른 노이즈 기능이 있습니까? 언덕 / 밸리 / 산 / 레이크스 등을 원합니다. 나머지 맵에서 분리 된 부동 비트가 필요하지 않습니다. 나는 이것이 세대에 따라 때때로 하늘에서 떠 다니는 지형이있을 때 Minecraft와 비슷한 문제라고 생각합니다.

도움을 주셔서 감사합니다, 신화

답변:


9

플로팅 터 레인을 완전히 없애는 유일한 방법은 연결성을 테스트하는 것입니다. 지도의 크기에 따라 옵션이 될 수 있습니다. 당신은 세상의 가장 바닥처럼 기준점을 선택함으로써 그렇게 할 수 있습니다. 그런 다음 모든 복셀이 다음 중 하나인지 확인하십시오.

  1. 베이스에 연결되었습니다.
  2. 베이스에 연결된 복셀에 연결되었습니다.

아마도 세계의 바닥과 같이 알려진 연결 지점에서 시작하여 연결된 복셀의 폭 넓은 탐색을 수행하는 것이 꽤 효과적입니다. 이동 중에 복셀이 연결된 것으로 표시되어 있는지 확인하십시오. 이 작업은 청크별로 수행 할 수 있습니다.

또한, 떠 다니는 지형을 최소화 할 수는 있지만 비용이 적게 드는 방법이 있습니다.

  • 그라데이션 바이어스 : 그라데이션 으로 솔리드 복셀의 배치를 바이어스 할 수 있습니다. "접지 수준"을 초과하면 그라디언트 기능이 다소 급격히 떨어집니다. 이 기사에서는 그라디언트 사용에 대해 설명하고 다른 유용한 팁을 제공합니다.

  • 높이 맵 노이즈 : 대신 높이 맵으로 노이즈를 생성 할 수 있습니다. 이것은 돌출부와 동굴을 제거하지만 추가 감산 노이즈 레이어로 시뮬레이션 할 수 있습니다.

  • 소음이 적은 소음 : 지형 소음에 더 적은 옥타브를 사용하고 돌출 소음과 동굴을 얻기 위해 감산 소음을 생성하십시오.


지형은 돌출 부분이 돌출되어있는 경우 인접한 청크를 통해서만 연결될 수 있습니다.
Loren Pechtel

@Loren : 그래도 완벽합니다. 엔진이 전체 인덱스로 청크를 처리 할 수 ​​있으면 문제없이 작동합니다.
Phil

@LorenPechtel 나는 덩어리 당 할 수 있다고 말하지만 덩어리의 가장자리에있을 때 인접한 덩어리를 확인해야합니다. 이것은 새로운 지형을 생성 할 때 문제가 될 수 있으며 인접한 청크를 생성하지 않았습니다. 잠재적 인 부동 지형이있는 상황에 도달하면 인접한 청크를 생성하거나 "bedrock"또는 현재 청크에 대한 알려진 연결을 찾을 때까지 노이즈 알고리즘을 사용하여 복셀을 구문 분석 할 수 있습니다.
MichaelHouse

0

대답하기에는 너무 늦을 수 있지만 Perlin Noise와 함께이 복셀 지형 생성으로 시작하여 부동 조각없이 지형을 만드는 방법을 찾았습니다. 이것이 도움이 될 것이라고 생각합니다. 터 레인을 만들려면 먼저 해당 하이트 맵에서 픽셀을 읽는 것보다 하이트 맵을 생성합니다. 이제 흥미로운 부분이 나오고, 해당 하이트 맵에있는 각 픽셀의 "밝기"(실제로 그레이 스케일) 값을 읽은 다음 맵의 특정 부분에 대한 높이를 제공 한 다음 지형을 만들기 위해이 하이트 맵이 지형을 위에서 보았으므로 해당 높이 맵에서 픽셀의 회색조 값 (내 지형 "maxHeight"에 매핑 된 후)이 30이라고 가정하면, 즉, 지형의 특정 지점에서 y 축에 30 개의 복셀 만 생성하며 이는 부동 부분이없는 지형을 제공합니다. 동굴 등을 원한다면 원본 (표면 아래)에 다른 소음을 적용하여 동굴을 만들 수 있습니다. 이것이 효과가 있기를 바랍니다.


1
나는 이것이 위의 대답에서 두 번째 글 머리 기호와 유사하다고 생각합니까?
MichaelHouse
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.