본문으로 건너뛰기
김도현

펄린 노이즈 지형

노이즈로 만든 지형

펄린 노이즈

펄린 노이즈(Perlin noise)는 켄 펄린(Ken Perlin)이 1982년 영화 트론(Tron)의 컴퓨터 그래픽을 제작하며 고안한 그래디언트 노이즈 알고리즘이다. 당시 컴퓨터로 만든 이미지는 지나치게 매끈하고 인위적으로 보였는데, 펄린은 여기에 자연스러운 질감을 입히기 위해 이 방법을 고안했다. 이 공로로 펄린은 1997년 아카데미 기술상을 받았다.

무작위 노이즈와의 차이

일반적인 난수(화이트 노이즈)는 각 지점의 값이 이전 지점과 완전히 독립적이다. 인접한 두 점의 값이 크게 달라질 수 있어서 그대로 지형이나 질감에 쓰면 지글거리는 잡음처럼 보인다.

펄린 노이즈는 다르다. 격자의 각 꼭짓점에 무작위 그래디언트(기울기 벡터)를 배치한다. 격자 안의 임의 지점에서는 주변 꼭짓점의 그래디언트를 부드럽게 보간해 값을 계산한다. 그 결과 인접한 지점은 항상 비슷한 값을 갖는 일관성 있는 노이즈가 만들어진다. 값 하나하나가 아니라 값이 변하는 흐름 자체가 매끄럽다.

높이맵에서 지형으로

노이즈 함수 noise2D(x, y)가 돌려주는 값은 -1과 1 사이 어딘가다. 이 값을 그대로 높이로 해석하면 2차원 평면의 각 점에 고도가 달린 높이맵이 된다.

옥타브를 하나만 쓰면 지형이 완만한 구릉처럼 밋밋하다. 주파수를 두 배씩 늘리면서 진폭은 절반씩 줄인 노이즈를 여러 겹 더하면(fractal Brownian motion) 큰 굴곡 위에 작은 굴곡이 얹혀 훨씬 지형다운 실루엣이 나온다.

시각화

같은 노이즈 필드를 y축 방향으로 슬라이스해 여러 개의 능선을 그리고 화면 아래쪽 행일수록 나중에 그려 앞의 능선이 뒤의 능선을 가리게 했다. 노이즈 필드는 가로로 천천히 흘러간다. 다시 생성을 누르면 새 시드의 지형으로 부드럽게 전환된다.

노이즈 스크롤

Ken Perlin - Making Noise

관련 글