2017-04-05 28 views
0

지형 발생기에 사실감을 더하는 가장 좋은 방법을 찾는 데 어려움을 겪고 있습니다. 이 시점에서 나는 완벽하게 작동하는 홍수 채우기를 가지고 있지만, 어떤 종류의 사실감을 추가하려면 높이 변수를 추가해야합니다. 내 홍수 채우기를 통해 판을 생성하고 지금하기 Algoritm현실적인 높이지도를 사용한 지형 생성

을 : 나는 다음과 같은 방법 하이트을 시도 보았다 그러나 나는 거기에서 어디로 가야할지 모르겠습니다.

대륙 내에서 생물체를 생성해야 현실적인 것처럼 보이기 때문에 노이즈 기능을 사용하는 것은 확실하지 않습니다. 산이있는 대륙은 비현실적입니다. 다이아몬드 정사각형 알고리즘은 크기 조정시 유연하기를 원하기 때문에 내 필요에 따라 작동하지 않을 것입니다.

정사각형 타일을 사용하여 현실감이 있고, 리소스를 많이 사용하지 않고, 가지고있는 코드를 유지하려면 높이 맵을 생성하는 최선의 방법은 무엇입니까? 여기

은 세대의 이미지, 그리고 생성 코드는 Github에서 프로젝트에 있습니다 https://github.com/Hunterb9101/TileWorkspace/blob/59fe1f28f019d7128c970772d1ef6bd30d63072c/Generation.png

답변

0

tldr : 내가 생물 군계에 압정으로 고정 일부와 펄린 노이즈 발생을 사용합니다.

article/tutorial은 코드 스 니펫과 그 구현 방법을 설명합니다. 귀하의 업무에 가장 적합한 알고리즘을 제안하는 것은 전적으로 귀하의 기술 및 최종 결과 목표에 달려 있습니다. 펄린 및/또는 특히 소음 심플 렉스 -

그러나 간단한 펄린 노이즈의 설명과 마음의 현실적인 목표와 그것을 사용하는 대부분의 지형 생성과 마찬가지로

는 노이즈 함수는 당신의 친구입니다. 행성 지형 생성 알고리즘을 구현했습니다. 비록 2 차원에 있지만 결과 높이/"텍스처"맵은 구체에 투영 될 수 있습니다. 16 진수 형식으로의 변환이 문제가 아닌 것으로 가정합니다. 중 하나입니다. 내 기술은 다중 노이즈 층을 생성하고 있습니다. 온도 및 습도. 온도가 위도 좌표와 융합되어 주문은 적도가 더 뜨겁고 차가워 지도록하고 은 단순한 그라디언트가 아닌 것을 확인합니다. 마지막 지형 유형은 "덥고 습기가없는 경우 사막을 선택하는 경우"와 같은 규칙에 의해 선택되는 입니다. 노이즈 함수는 일정한 평균을 가지고하는 경향이 이 https://github.com/tapio/infiniverse/blob/master/js/universe/planet-aerial.js

물 비율에 관해서는, 당신은 단지 수위 높이를 조정할 수 있습니다 : 당신은 여기 내 자바 스크립트 구현을 볼 수 있습니다. 또 다른 옵션은 지수 필터를 적용하는 것입니다 ( 구름을 생성 할 때도 유용합니다, 여기 구현을 참조하십시오).

구형 지형을 생성하는 또 다른 방법은 ( 테스트하지 않은) 3d 노이즈를 사용하여 구체의 표면에서 의 샘플을 추출하여 그 지점의지면 높이로 결과 값을 사용하는 것입니다. 그 다음 무게는 행성 위의 물의 양과 위도 좌표 인 에 따라 다릅니다.

나는 3D 행성 지형 생성 한 실제 구현에 대한 링크 겁니다 : http://libnoise.sourceforge.net/tutorials/tutorial8.html

당신이 어떤 종류의 소음을 사용해야 할 예정 현실적인 지형의 임의의 스타일을 생성합니다. 과거 프로젝트에서 나는 다이아몬드 제곱 알고리즘을 사용했다. 그러나 단순히 높이 맵을 생성하는 것이 었습니다.

좀 더 가벼운 읽기를 위해 현실적인 지형 기술에 대해 this 문서를 확인합니다.

+0

안녕하세요. 도움을 주셔서 감사합니다. 필자는 perlin 노이즈 기능을 만들기 위해 노력해 왔지만 (단순 모드보다 구현하기가 쉬웠 기 때문에), 몇 가지 문제가있었습니다. 나는 다른 질문을 위해 그것을 구할 것이지만, 당신의 도움에 감사드립니다! – Nerd9101