산 지형 추적


10

며칠 전에 포트폴리오 / 블로그 사이트 에서 찾은 절차 적 지형 효과를 복제하려고합니다 .

계단식 지형

이 사이트를 인용하면서, "[최종 높이]에 특정 높이 범위 내에서 약간의 댐핑 값을 곱하여 아름다운 협곡 지형을 만들었습니다."

궁금한 점이 있습니다. 누가 이것에 대해 더 기술적 인 예 또는 절차를 제공 할 수 있습니까? 지난 주 동안, 나는 절차 적 지형 / 질감 방법과 관행에 대해 많은 것을 연구하고 배웠지 만 '클램핑'이 무엇인지 자세하게 설명하는 어떤 것도 발견하지 못했고 좌절하기 시작했습니다.


허, 정말 깔끔합니다. 그가 무엇을 의미하는지 알 수 없습니다. 친구에게 이메일을 보내려고 했습니까 ( "연락처"아래에 있음)?
Draco18s는 더 이상

참고 : 귀하의 견적 및 출처에서 용어는 '댐핑'이지만 나중에 질문에서 '클램핑'을 대신 사용합니다.
Pikalek

답변:


11

나는 그들의 프로젝트가 무엇인지 모르지만 높이 조정 기능을 적용 할 수 있습니다. 다음 h은 0.0에서 1.0까지 걸리고 0.0에서 1.0까지 새로운 높이를 반환 하는 예입니다 .

function R(h) {
    var W = 0.4; // width of terracing bands
    var k = Math.floor(h / W);
    var f = (h - k*W) / W;
    var s = Math.min(2 * f, 1.0);
    return (k+s) * W;
}

x 축은 원래 높이이고 y 축은 새로운 높이입니다. 플롯 할 때 다음과 같은 함수입니다.

높이 재 형성 기능

나는 그것을 내 자신의 코드에 적용하고 이것을 얻었다.

테 레이싱 기능의 출력

깔끔한 효과를 얻기 위해 모든 종류의 재구성 기능을 넣거나 함께 연결할 수 있습니다. 출력물의 평평한 부분이 있으면 테라스가 있습니다.


나는 테라스를 올라가는 asker의 질문에 매끄러운 길이 있다고 맹세하지만 다시 살펴보면 환상이 확실합니다. 그러나 내 눈은 여전히 ​​높이 변화가 없다고 주장합니다 (이미지의 중심은 상단 모서리 / 왼쪽 상단). 상승이 없으면이 대답은 맞습니다.
Draco18s는 더 이상 SE

1

댐핑 은 진동을 감소, 제한 또는 방지하는 진동 시스템 내 또는 진동 시스템에 미치는 영향을 나타내는 물리 용어입니다.

소스 기사에 오타가 있거나 클램핑 을 의미한다고 생각합니다 . 이는 일반적으로 값을 주어진 범위로 제한하는 것을 말합니다.

시각적 효과를 얻으려면 지형이 구축 될 때 노이즈 대역을 클램핑하여 비슷한 것을 얻을 수 있지만 @amitp가 제공하는 솔루션 은 원래 설명과 더 밀접하게 일치하며 구현 및 조정하기가 더 쉽습니다.

세 번째 옵션은 침식 기술을 사용하는 것입니다. 경사면의 일부를 떨어 뜨려 절벽과 해변의 조합만드는 방법은 다음과 같습니다 . 피크를 고원으로 침식 할 수있는 또 다른 방법이 있습니다 .


0

매우 긴 휴식 후 , 나는 이제 효과가 어떻게 달성되었는지 이해하고 있으며, 그것은 매우 간단합니다. 이 효과에는 4 가지 부분이 있습니다.

  • 터 레인의 초기 하이트 맵
  • 테라스의 가장 낮은 높이는 h1이고 테라스의 가장 높은 높이는 h2 인 테라스 '범위'정의
  • 테라스 높이 범위 내에서지면을 평평하게하는 감쇠 값
  • h1 및 h2 값을 수정하기위한 두 번째 장거리 하이트 맵 (테라스 간 연속 램프가 형성되는 방식)

효과를 만드는 절차는 다음과 같습니다.

h1 = 1
h2 = 2
damp = .01

h = gen_noise(position)
hm = heightmod_noise(position)
if h1+hm <= initial_terrain_height =< h2+hm
  th = h * damp
elseif h2+hm < h
  th = h - (h2-h1) * damp
else
  th = h

(물론, 터 레이싱 효과가 적용된 후 지형의 높이입니다)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.