저는 C# 및 XNA의 문명 게임을하고 있습니다. 타일을 생성하기 위해 루프로 채워진 2 차원 정수 배열을 사용합니다. 톤 연구를 수행했으며 지형과 같은 지구를 생성하는 방법을 찾을 수 없었습니다. 누구든지이 작업을 수행하는 방법을 설명하거나 내가 할 수있는 코드를 적어도 제공 할 수 있습니까? 고맙습니다.Perlin 노이즈를 사용하여 C#으로 지형 생성
1
A
답변
8
내 지형을 만들기 위해 이와 비슷한 알고리즘을 사용합니다. 기본적으로 임의의 숫자를 생성하고 언덕을 생성하기 위해 사인파를 사용합니다. 결합하면 멋진 언덕이납니다. 단 3 패스 이상을 원한다면 루프와 값 배열을 추가 할 수 있습니다.
private void GenerateTerrain()
{
terrainContour = new int[Width*Height];
//Make Random Numbers
double rand1 = randomizer.NextDouble() + 1;
double rand2 = randomizer.NextDouble() + 2;
double rand3 = randomizer.NextDouble() + 3;
//Variables, Play with these for unique results!
float peakheight = 20
float flatness = 50
int offset = 30;
//Generate basic terrain sine
for (int x = 0; x < Width; x++)
{
double height = peakheight/rand1 * Math.Sin((float)x/flatness * rand1 + rand1);
height += peakheight/rand2 * Math.Sin((float)x/flatness * rand2 + rand2);
height += peakheight/rand3 * Math.Sin((float)x/flatness * rand3 + rand3);
height += offset;
terrainContour[x] = (int)height;
}
}
그런 다음 하이트 맵을 채우려면 값을 반복하여 임계 값 이상인지 확인하십시오.
for (int x = 0; x < Width; x++)
{
for (int y = 0; y < Height; y++)
{
if (y > terrainContour[x])
tiles[x, y] = Solid Tile
else
tiles[x, y] = Blank Tile
}
}
Theres는 훨씬 더 당신이 그것을에 추가 할 수있는, 좀 더 임의성 및 위 또는 아래로 더 나은 지형 1 일부 타일을 들여 쓰기를 추가했습니다. 더 많은 사인파를 추가하면 더 현실적인 모습을 보일 것입니다.
알고리즘을 사용하여 2D Perlin Noise 알고리즘을 사용해 보시고, 동굴과 진보 된 지형을 만들기 위해 특정 높이를 선택하십시오. 이제 이것이 내가하는 일이지만이 코드는 좋은 시작입니다.
관련 문제
- 1. Perlin 노이즈를 사용하여 번개를 만드시겠습니까?
- 2. 마스크를 사용하여 지형 잡음 생성?
- 3. Raphael.js에서 Perlin 노이즈를 구현하는 방법은 무엇입니까?
- 4. 임의의 지형 생성
- 5. Java의 평평한 지형 생성
- 6. 프랙탈 지형 생성 문제
- 7. 지형 생성 AS3
- 8. iPhone/iPad 용 Perlin Noise?
- 9. 기존의 지형을 기반으로 즉각적인 지형 생성
- 10. 실시간으로 2 차원 지형 생성
- 11. Netlogo 지형 생성 및 확산
- 12. 2d Platformer Java에서 지형 생성
- 13. DX10 지형 법선
- 14. 핑크 노이즈를 시뮬레이트하는 방법
- 15. Cocos2d의 2D 테라리안 스타일 지형 생성
- 16. XNA 무작위 타일/지형 생성 자습서?
- 17. 소프트웨어 Perlin 노이즈 구현
- 18. 파이썬에서 칼만 필터를 사용하여 가속도계 노이즈를 필터링합니다.
- 19. Perlin 소음 세부 수준입니다. 풍경을 확대하는 방법?
- 20. Perlin Noise algos의 폴 오프 값과 관련하여 무엇을 의미합니까?
- 21. Perlin 잡음 문제
- 22. Perlin 잡음이 작동하지 않습니다.
- 23. Perlin Noise for 1D?
- 24. Java : 2D Perlin Noise Creation
- 25. 자바에서 매끄러운 심플 렉스 노이즈를 생성 할 수 없다.
- 26. GDAL을 사용하여 래스터의 지형 변환을 어떻게 변경합니까?
- 27. ThreeJS의 일반 지형
- 28. Java - 루프가 발생하는 Perlin 노이즈
- 29. OpenGL을 지형 Colission 감지
- 30. C++의 솔리드 노이즈 생성
보십시오 [여기] (http://freespace.virgin.net/hugo.elias/models/m_perlin.htm). 자세한 설명, 의사 코드 및 예제 이미지. –