Lagae, A., Lefebvre, S., Cook, R., DeRose, T., Drettakis, G., Ebert, D. S., … Zwicker, M. (2010). A survey of procedural noise functions. Computer Graphics Forum, 29(8), 2579–2600. https://doi.org/10.1111/j.1467-8659.2010.01827.x

Abstract

절차적 노이즈는 그 가벼움과 생산성으로 게임등에서 많이 사용된다. 우리는 절차적 노이즈에 대해서 기본적인 아웃라인을 잡으려 한다.

Introduction

절차적 노이즈는 많은 장점이 있다.

  1. 빠르다.
  2. 복접한 패턴을 즉시 만들 수 있다.
  3. 메모리를 적게 먹는다.
  4. 파라미터를 적절히 설정하면 매우 다양한 패턴을 만들 수 있다.
  5. 랜덤접근이 가능하게 할 수도 있다. 즉 상수시간 접근이 가능하다.
  6. 하드웨어의 발전으로 CPU집약적인 연산의 효율이 증가했는데, 절차적 노이즈도 이 이점을 살릴 수 있다.

Definition of Procedural noise function

Intuitive definition of noise

노이즈는 랜덤 숫자 생성기라고 할 수 있다. 공간 도메인과 다르게 주파수 영역에서는 진폭과 phase가 각 주파수에 부여된다. 그러나 랜덤한 위치에서는 phase는 랜덤하다고 할 수 있다. (왜냐하면 phase가 공간 영역에서 어떻게 주파수 영역의 각 frequency를 배치할까 하는 문제를 해결하기 때문이다.) 즉 노이즈는 종종그것의 power spectrum 즉 각 주파수의 진폭만을 이용하여 (페이즈는 무시하고)로 나타내어 진다. 즉 노이즈는 band limited (최대 주파수 영역이 정해진) power spectrum으로 조절되는 랜덤한 숫자들의 집합이라 할 수 있을 것이다.

Formal definition of noise

대부분의 노이즈는 평균과 상관관계, 이렇게 두 차원의 연관을 가지고 있다. 확률 밀도 함수(Probability Density Function)에 대해서 평균은 [math]E = \int yf_N(y)\,dy[/math] 그리고 상관관계는 [math] C = \int\int y_1y_2f_N(y_1,y_2)\, dy_1dy_2[/math]로 정의된다. 각 f는 pdf 를 말한다. 따라서 노이즈를 조절하는 것은 노이즈의 평균이나 상관관계 함수 혹은 power spectrum을 조절하는 것으로 나타내어 진다.

또한 stationary random function 이란 확률적으로 원점을 바꿨을 때도 같은 양상이 유지되는 것을 말한다. 또한 isotropic이란 확률 분포가 회전에도 유지되는 것을 말한다. statinoary 하고 isotropic이면 원점 이동과 회전이동에서 유지되는 랜덤 함수가 생성된다.

따라서 이를 이용하여 다시한번 노이즈에 대해 정리하면 다음과 같다. 잡음은 잡음을 설정하는 위치에 불변이고 정규분포를 따르는 과정이다. 페이즈는 중요하지 않기에 power spectrum으로 잡음을 조절한다. power spectrum은 직접적으로 주어지거나 band limited된 여러 노이즈를 합쳐서 만들어지게 된다.

Definitino of procedura noise

Procedural 이라 함은 자료 구조보다는 프로그램 코드로 이루어진다. 컴퓨터가 만드는 모델이나 이펙트가 알고리즘에 의해서 만들어질때 사용되는 경향이 있다. Procedural noise 는 다음과 같은 특징이 있다. (단 반드시 지녀야 하는 것은 아니다.)

  1. 가볍다.
  2. 연속적이다.
  3. 다양한 resolution에 대처할 수 있다.
  4. 주기적이지 않다.
  5. 파라미터화 할 수 있다.
  6. 랜덤 접근이 가능하다.

Overview of procedural noise functions

Lattice gradient noises

격자 그라디언트 노이즈는 정수 격자에정의된 점에서의 값들을 보간하거나 convolving 함으로써 이루어 진다. 대표적으로 Perlin 노이즈가 있다. 물론 정수 격자가 아닌 다른 격자에 의존한 노이즈들도 있다. 또한 물리 법칙과 격자 그라디언트를 합쳐서 보다 Physically-based 된 노이즈를 생성하는 기술도 있다.

  1. Perlin Noise : 격자에서 랜덤하게 생성된 그라디언트들을 주면 격자들과 보간하여서 연속적인 흐름을 만들어 낸다. 또한 이러한 격자 노이즈를 하드웨어에 이식하여서 보다 빠르게 생성하도록 하는 시도들이 있어왔다.
  2. Better gradient noise: 페를린 노이즈를 보다 더 좋게 만든것이다.

Explicit noises

명시적 노이즈란 노이즈를 미리 계산하여 저장한 것을 말한다. 사실 명시적 노이즈는 엄밀히 절차적이라 할수는 없지만, 매우 밀접한 관련이 있다.

  • Wavelet noise
  • Anisotropic noise
  • Sparse convolution noises
  • Modeling with procedural noise functions