10. Making Noises
동일한 프레임을 유지하기 위한 패턴이 필요
어떤 오브젝트 표면의 패턴을 제작하고자 할때
임의지만 일부 입력의 반복적인 기능의 함수가 필요
실제로 랜덤 기능(Function)은 입력이 없음
확률적 텍스쳐 프리미티브는 텍스쳐 좌표를 입력으로 표현
항상 동일한 텍스쳐 좌표가 주는 동일한 값을 리턴
10
14. Making Noises
샘플링 속도는 화이트 노이즈 세부 사항을 포착
할 정도로 충분하지 않음
화이트 노이즈보다 부드러운 확률적 함수가 필
요(Aliasing)
화이트 노이즈의 로우패스필터 버젼을 사용
14
15. Making Noises
Pseudorandom known range band-limited :
[ - 1 ~ 1] maximum frequency 1
No obvious
periodicities or regular Stationary Isotropic
patterns
15
16. Introduction
노이즈 함수는 Seed 값에 의한 난수 생성기(Pseudorandom Number Generator)
인자로 하나의 정수를 받아서 그 인자에 기반한 난수를 반환
같은 인자를 두 번 전달하면 동일한 수가 두 번 생성
이 값들 사이를 부드럽게 보간함으로서 전달인자를 정수로 받지 않는 연속적인 함수를 정의
16
17. Definition
Amplitude(진폭) : 함수가 가질 수 있는 최대, 최소값의 차이
WaveLength(파장) : 한점(빨간점)에서 다음 점 까지의 거리
Frequency(주파수) : 1/WaveLength로 알아냄
함수의 차원에 따라 정의된 난수값
Sin 곡선 Noise 곡선
17
25. Interpolation
Cubic Interpolate(v0, v1, v2, v3,x)
v0 = the point before a P = (v3 - v2) - (v0 - v1)
v1 = the point a Q = (v0 - v1) - P
v2 = the point b R = v2 - v0 S = v1
v3 = the point after b return Px3 + Qx2 + Rx + S
25
30. Value Noise
lattice 포인트에 -1 그리고 1 사이에 정해진 PRN , 노이
즈 함수는 이러한 임의의 값 사이에서 보간에 의해 계산
보간방법이 중요, 선형보간에
서 큐빅보간까지 다양한 방법에 범위에 사용
선형보간은 노이즈를 부드럽게 보기에는 부족(셀 아티팩트),
파생된 두번째 유도체가 모두 연속일수록 큐빅 보간방법을 사용
30
38. Gradient Noise
표준 삼차원 Perlin Noise. 4 옥타브, 지속성 0.25 와 0.5
낮은 지속성. 결과에 함수를 적용해 Perlin Noise에 날카로운 경계를 생성
높은 지속성의 함수의 줄무늬 / 낮은 지속성의 얼룩
[3차원 Perlin Noise]
38
39. Gradient Noise
Perlin 함수를 코사인 함수에 대한 Offset
texture = cosine( x + perlin(x,y,z) )
g = perlin(x,y,z) * 20
grain = g - int(g)
bumps = perlin(x*50, y*50, z*20)
if bumps < .5 then bumps = 0 else bumps = 1t
[3차원 Perlin Noise]
39
40. Gradient Noise
• Controlling virtual beings:
1차원
• Drawing sketched lines
• Landscapes:
2차원 • Clouds
• Generating Textures
• 3D Clouds
3차원 • Animated Clouds
• Solid Textures
4차원 • Animated 3D Textures and Clouds:
Perlin Noise의 응용분야
40
41. Gradient Noise
pseudorandom gradient vector를 생성하고 확률적 함수를 생
성하는 Gradient를 사용하는 것
gradient noise의 값은 정수 Lattice Point 의 모든 값에서 0, p
seudorandom gradients는 Lattice Point 사이의 동작을 결정
하나의 lattice cell의 8 Conner에서 gradients를 기반한 보간
41
42. Gradient Noise
Pseudorandom Gradient 벡터의 테이블을 초
기화하기 위해 다음과 같은 루틴을 사용
표 ix, iy, 그리고 iz와 함께 하나의 정수 Lattice
Point에 대해 Gradient Noise의 Value를 생성
42
45. Value Gradient Noise
Gradient noise 는 정수 lattice point 모두 value = 0(zero) Z
ero 들의일반적인 패턴은 눈에 띄는 Grid 패턴을 만듬
gradiant noise 장점을 유지하면서 이 문제를 피하기 위해
Value method 와 Gradient method 를 혼합
Value noise 와 Gradient Noise 와의 Weig
hted sum(가중치 합) 만으로 구현
45
46. Value Gradient Noise
graph of a 1D sample 2D slice of the function Power spectrum
[Catmull-Rom vnoise 와 gradient gnoise 의 weighed sum]
46
47. Value Gradient Noise
graph of a 1D sample 2D slice of the function Power spectrum
[Cubic Hermite Interpolation]
47
48. Value-Gradient Noise
Hermite interpolation
Hermite spline 은 Spline value 와 Spline value 각각의 End point 에서의
Tangent 에 의해 결정하며 Gradient 값을 spline tangent 로 사용
48
49. Lattice Convolution Noise
Lattice noise 의 한가지 단점은 “axis-aligned 아티팩트” l
attice PRN을 Blend 할때 보간의 비등방성(anisotrophic) 특성때문
불연속 Convolution technique을 사용해서 비등방성을 피하는 것
Lattice point에서 PRN들은 Random value 들이 impulse인 것으로
다루고, 방사형 구조로 대칭적인 filter 와 convolve
Catmull-Rom Filter 를 사용, Input-Point로부터의 거리계산된 것의 합에서 사
용되는 계산 비용을 줄일 수 있음
49
50. Lattice Convolution Noise
catrom2 함수가 호출 squared distance
function 으로 Catmull-Rom filter 값들이 있는
table 을 참조하여 계산
이 table 로 부터 look-up value 를 호출
50
52. Sparse Convolution Noise
random 하게 분포되어있는 random 값의 collection 으로 구
성된 filter function 을 convolve
White Noise 의 Low-pass Filtering 은 Filter Function 에 의해 수행
되기 때문에 Filter 를 modify 함으로써 제어할 수 있음
PRN값들이 각각의 lattice cell내에 pseudorandom point 들로
자리잡고 있다는 점이 다름
52
53. Sparse Convolution Noise
3개의 랜덤값이 생성되어
각각의 lattice cell에 위치
125개의 lattice cell들 주변에 위치한 cell들은
각각의 cell들이 noise function 이라고 간주
계산 비용이 비쌈
53
55. Explicit Noise Algorithms
Implicit procedural texture 합성을 할때 Noise를 생성하는 방법과
랜덤 Fractal을 그렇게 편리하지 않음
Explicit 방식은 Noise 값들을 한번에 모두 하나의 큰 Batch로 생성
랜더링 하는 동안 implicit procedural texture안에서 사
용하기 위해서는, noise value 들은 렌더링 하기 전에
generate 해서 table이나 texture image 로 저장되여야함
55
57. Fourier Spectral Synthesis
주어진 frequency 에서, 원하는 noise 에 근접하게 맞는 power 상태에
서 불연속 유사랜덤 frequency 스펙트럼을 생성
지정된 frequency 범위내에서 해당 frequency에 대응되는 noi
se 값을 얻기 위해, 푸리에 역변환을 수행
cloud texture 를 만들기 위해 사용된 손수 집어낸 많은
"random" 계수 (coefficient)들을 보여줌
57
59. Fourier Spectral Synthesis
discrete 푸리에 역변환을 구현하기 위해 specturm 합을 사용해서, 지정된 random frequency 범위
내에서 해당 frequency에 대응되는 function 값을 generation
FFT(푸리에 변환) 보다는 덜 효율적이지만, implicit procedural texture 에서 한번에 한 point 값을 구
할 수 있는 장점
Gardner 의 texture 가 불규칙하고 복잡해 보이는 것도 noise처럼 보이는 확률함수로 위장
noise 를 그대로 푸리에 합성하면 lattice noise 보다 너무 느리고, procedural texture 합성의 실용성
을 잃게 될 것임
Lattice convolution 과 sparse convolution 방법들은 noise 의 spectrum 을 보다 섬세하게 제어할 수
있음이 보장되는 방법
59