2017-04-20 21 views
1

저는 얼마 전부터 perlin 노이즈 지형 발생기를 사용해 왔습니다. 여러 노이즈 기능을 구현하여 맵에 다른 기능을 만들려고 노력했지만 필사적으로 실행했습니다. 다른 perlin 노이즈 함수들 사이의 가장자리는 부 자연스럽게 가혹합니다. 색상은 노이즈 값에 따라 달라 지므로 테두리를 따라 값을 매끄럽게하여보다 사실적인 모양을 만들려고합니다. 문제가되는 국경 지역을 찾을 수는 있지만 거기에서 어디로 가야할지 모르겠습니다. 어떻게하면 부드럽게 할 수 있을까요? 그것은 어떤 도움이 경우, 나는 다음과 같은 경우 문에서 사용할 펄린 노이즈 함수를 결정여러 Perlin 함수를 사용하는 부드러운 지형

: Generation with borders

: 여기

if(perlin[i][j] < .22){ 
    finalHeightMap[i][j] = seaPerlin[i][j]; 
} 
else if(perlin[i][j] > .22 && perlin[i][j] < .28){ 
    finalHeightMap[i][j] = plainsPerlin[i][j]; 
} 
else{ 
    finalHeightMap[i][j] = mountainousPerlin[i][j]; 
} 

Generation without borders

은 가혹 국경이다 어떤 도움이라도 대단히 감사하겠습니다!

+0

는 당신이 그 가장자리 일부 보간의 종류 또는 평균 메커니즘을 시도 해 봤나? 가장자리를 감지 할 수 있으면 주변 값을 감지 할 수도 있다고 가정합니다. – Chris

+0

예, 나는 주위의 두 점을 평균 해 보았습니다 :'(finalHeightMap [i] [j] + finalHeightMap [i] [j-1])/2' 그러나 실제로 이것은 두 이미지를 생성하는 데 사용 된 코드였습니다. 하지만 원본과 다른 점이없는 것 같습니다. – Nerd9101

+0

효과를 알아보기 위해 평균 주위에 2 포인트 이상을 평균해야 할 수도 있습니다. 나는 그 지역에 대한 더 넓은 평균을 생각하고 있었다. 이 페이지의 링크 중 일부를 확인하십시오. https://en.wikipedia.org/wiki/Edge-preserving_smoothing – Chris

답변

0

위에서 강조 표시된 것처럼 코드에서 경계를 찾는 방법을 알고 있다고 가정합니다. 가장자리 주변의 각 픽셀에 가우시안 블러를 적용하는 것이 좋습니다. 이 here을 사용할 수 있습니다. 그들이 어떻게 보이는지에 대한 데모를 보려면 해당 페이지에서 아래로 스크롤하십시오.

기본적으로 각 가장자리의 픽셀 좌표 배열을 만든 다음 그 배열을 가로 지르며 각각을 흐리게 처리합니다.

의사 :

foreach (Location in Boundary) 
    blur(location, radius) 
end 
+0

제가 이해하는 바와 같이, 이것은 경계를 따라지도를 흐리게 할 것입니다. 그것은 내가 찾고있는 것입니다. 그러나 픽셀 값을 사용하고 흐림 효과를 적용한 경우 키 맵과 이미지 사이에 불일치가 발생하여 더 많은 기능을 추가하기가 어려울 수 있습니다. 높이 맵의 값을 사용하여 동일한 효과를 얻을 수있는 또 다른 방법이 있습니까? – Nerd9101

+0

높이 맵에서도 이러한 과감한 변화가 원활하게 이루어지기를 원하십니까? 아니면 이것을 유지하고 싶습니까? –

+0

예, 높이 맵에서도 부드럽게 보이기를 기대합니다. 높이 맵에서 부드럽게 처리하면 최종 제품에서 부드럽게 처리됩니다. – Nerd9101