독학.NET

VOP 노이즈

후디니 모든 영역에서 필수불가결한 존재인 노이즈에 대해서 알아보자.

Posted: September 19, 2017
Version: Houdini 16

노이즈(Noise) 란?

노이즈란 수학적 함수로서 다음과 같은 식을 가진다.

인풋 a를 받은 노이즈 함수는 아웃풋 b를 출력한다.


노이즈 그래프

노이즈 함수는 다음과 같은 그래프 형태를 갖는다.

일정한 패턴을 보이지 않고 다소 불규칙적인 높낮이의 연속임을 알 수 있다.


노이즈 기본요소

노이즈 종류마다 각각의 특성이 있지만 다음과 같이 세 가지의 기본요소를 갖는다.

각각의 기본요소 값에 따라 노이즈 그래프 모양이 달라진다.

 

  • Amplitude: 노이즈의 세기를 조절한다.(상하 수축/팽창)
  • Frequency: 노이즈의 빈도를 조절한다.(좌우로 수축/팽창)
  • Offset: 노이즈의 흐름을 조절한다.(좌우 이동)

노이즈 예제

후디니를 열고 /obj 에 그리드 지오메트리를 하나 만든다.

VOP_noise_1.jpg

 

만들어진 'grid1' 노드를 더블클릭하여 Geometry 레벨로 들어간다.

시작하기 전에 그리드 면을 충분히 나눠주도록 하자.

 

'grid1' 노드의 파라미터를 다음과 같이 수정한다.

Size 는 가로/세로 1미터로 작게 해주고 Rows/Columns 값을 늘려서 면을 나눠준다.

VOP_noise_2.jpg

 

다음과 같은 그리드가 준비되었다.

이제 이 그리드에 노이즈를 적용해 보자.

VOP_noise_3.jpg

 

TAB 메뉴를 이용하여 Attribute VOP 노드를 하나 만든다.

VOP_noise_6.jpg

 

노드 이름을 'noise' 라고 바꾼뒤 'grid1' 에 연결해 준다.

연결한 뒤에 'noise' 노드의 Display Flag 를 선택한다.

Attribute VOP 노드의 첫번째 인풋에 주의해서 연결한다.

Attribute VOP 노드의 첫번째 인풋에 주의해서 연결한다.

 

이제 'noise' 노드를 더블클릭해서 VEX Builder 레벨로 들어가자.

TAB 메뉴에서 'noise' 라고 치면 여러가지 종류의 노이즈 VOP 들이 나온다.

처음에는 굉장히 부담스럽지만 결국 자기가 좋아하는 한두개의 노이즈만 자주 쓰게 되므로 가볍게 읽도록 한다.

처음에는 굉장히 부담스럽지만 결국 자기가 좋아하는 한두개의 노이즈만 자주 쓰게 되므로 가볍게 읽도록 한다.

 

노이즈 종류마다 그래프 모양과 리턴하는 값의 범위가 각기 다르다.

Anti-Aliased Noise VOP 을 선택한다.

맨 위에 있는 Anti-Aliased Flow Noise 는 Anti-Aliased Noise 와 동일하지만 Flow 라는 추가기능을 가진다. 이 Flow 기능에 대해서는 추후에 다루도록 하자.

 

만들어진 'aanoise1' 노드를 다음과 같이 연결한다.

VOP_noise_11.jpg

 

모든 노이즈 VOP 은 최소한 pos 인풋(vector) 이 연결되어야 제대로 작동한다.

대부분의 경우, 이 pos 인풋에 지오메트리 P를 연결해 준다.

즉, 그리드 각 점의 위치값(P) 을 참조해서 노이즈를 리턴하겠다는 뜻이다.

 

한편 'aanoise1' 노드가 리턴하는 noise 값은 실수(Float) 임을 알 수 있다.

그 이유는 'aanoise1' 파라미터의 Signature 기본형이 3D Input, 1D Noise 이기 때문이다.

VOP_noise_12.jpg

 

'aanoise1' 노드가 리턴하는 noise 값의 범위는 어떻게 될까?

리턴하는 값의 범위는 노이즈 종류마다 틀리다고 했다.

Anti-Aliased Noise 는 -0.5 와 +0.5 사이의 실수값을 리턴한다.

 

이 리턴값은 그리드 각 점의 Cd 어트리뷰트로 업데이트 된다.

그 결과, 그리드는 얼룩덜룩한 색을 띄게 된다.

검은색 부분의 Cd 값이 0 뿐만 아니라 -0.5 에 가까운 값도 가지고 있음을 이해하자.

검은색 부분의 Cd 값이 0 뿐만 아니라 -0.5 에 가까운 값도 가지고 있음을 이해하자.

Cd 는 R,G,B 세가지 요소가 필요한 벡터형 어트리뷰트이다. 현재 노이즈에서 리턴하는 한 자리수 실수값(Float) 을 Cd 에 연결했으므로 R,G,B 데이터에 같은 값이 할당된다. 그리드 색이 채도가 없이 흑백색인 이유도 여기에 있다.

노이즈 Amplitude

Amplitude 는 노이즈의 세기를 조절한다.

Amplitude 세기에 따라 노이즈 그래프는 상하로 수축 또는 팽창한다.

VOP_noise_amp_1.jpg
VOP_noise_amp_2.jpg
VOP_noise_amp_3.jpg

 

'aanoise1' 노드의 Amplitude 속성값을 다양하게 바꿔본다.

VOP_noise_14.jpg

 

Amplitude 값이 낮을수록 작은 범위의 값을 리턴한다.

Amplitude 값이 높을수록 큰 범위의 값을 리턴한다.

Amp 가 낮으면 그리드 색의 흑백 대조가 미미한 반면, 높을 때는 그 대조가 뚜렷하게 된다.

Amp 가 낮으면 그리드 색의 흑백 대조가 미미한 반면, 높을 때는 그 대조가 뚜렷하게 된다.

Amp 가 1일 때 -0.5 와 +0.5 사이의 값을 리턴하므로 Amp 가 0.1일 때는 -0.05 와 +0.05 사이의 값을, Amp 가 10일 때는 -5 와 +5 사이의 값을 리턴한다.

노이즈 Frequency

Frequency 는 노이즈의 빈도를 조절한다.

Frequency 에 따라 노이즈 그래프는 좌우로 수축 또는 팽창한다.

VOP_noise_freq_1.jpg
VOP_noise_freq_2.jpg
VOP_noise_freq_3.jpg

 

'aanoise1' 노드의 3D Frequency 속성값을 다양하게 바꿔본다.

Frequency 속성은 X,Y,Z 축별로 따로 조절이 가능하다.

3D Frequency 텍스트 위에 마우스 중간버튼을 이용해서 세 축이 동시에 같은 값이 되도록 조절해 보자.

3D Frequency 텍스트 위에 마우스 중간버튼을 이용해서 세 축이 동시에 같은 값이 되도록 조절해 보자.

 

Frequency 값이 낮을수록 그래프 오르내림의 주기가 길어진다.

Frequency 값이 높을수록 그래프 오르내림의 주기가 짧아진다.

빈도수가 낮으면 노이즈 텍스쳐의 패턴이 커지고 빈도수가 높으면 노이즈 텍스쳐의 패턴이 작아진다.

빈도수가 낮으면 노이즈 텍스쳐의 패턴이 커지고 빈도수가 높으면 노이즈 텍스쳐의 패턴이 작아진다.

현재 Amplitude 는 모두 1이기 때문에 위 그림에서 Frequency 에 관계없이 모두 -0.5 와 +0.5 사이의 값을 리턴한다.

노이즈 Offset

Offset 은 노이즈의 흐름을 조절한다.

Offset 에 따라 노이즈 그래프는 좌우로 이동하게 된다.

VOP_noise_offset_1.jpg
VOP_noise_offset_2.jpg
VOP_noise_offset_3.jpg

 

'aanoise1' 노드의 3D Offset 속성값을 다양하게 바꿔본다.

Offset 속성은 X,Y,Z 축별로 따로 조절이 가능하다.

3D Offset X,Y,Z 각 축마다 마우스 중간버튼으로 드래그하며 노이즈가 흐르는 모습을 관찰한다.

3D Offset X,Y,Z 각 축마다 마우스 중간버튼으로 드래그하며 노이즈가 흐르는 모습을 관찰한다.

 

종종 Offset 속성은 글로벌 변수 $F 또느 $T 와 같이 쓰인다.

시간에 따라 노이즈 패턴을 흐르도록 만들 수 있기 때문이다.

 

지금은 3D Offset 속성에 $F 또는 $T 를 입력해도 흐르는 패턴을 얻을 수 없다.

VEX Builder 레벨에서는 변수(글로벌, 로컬) 를 사용할 수 없다.

변수를 사용하려면 VEX Builder 안의 해당 파라미터를 위쪽 Geometry 레벨로 Promote(승진?) 시켜야 한다.

 

'aanoise1' 파라미터창에서 3D Offset 속성 오른쪽에 있는 기어를 누른다.

다음과 같은 팝업메뉴가 나오면 Promote Parameter 를 선택한다.

VOP_noise_22.jpg

 

프로모션이 되자마자 'aanoise1' 노드 offset 인풋 모양이 다음처럼 변한다.

이것은 offset 인풋이 상위 Geometry 레벨에서의 파라미터로 Promote(승진) 됐음을 의미한다.

VOP_noise_23.jpg

 

단축키 U를 눌러 위쪽 Geometry 레벨로 간다.

Attribute VOP 맨 아래쪽에 Offset 속성이 생겼음을 알 수 있다.

드디어 우리는 변수를 사용할 수 있게 되었다.

VOP_noise_21.jpg
이와 같이 VOP 노드 인풋의 프로모션은 Geometry 레벨에서 변수를 쓰게 해주는 목적 이외에도 Promote 이후에 VEX Builder 레벨로 매번 들어갈 필요없이 Attritube VOP 에 만들어진 파라미터만 가지고도 작업할 수 있는 편리함을 준다.

 

'noise' 노드의 Offset X,Y,Z 각 속성에 $T 를 차례대로 대입하여 관찰한다.

$T 는 $F 와 마찬가지로 시간에 따라 데이터 값이 증가하는 글로벌 변수이다.

$T 는 단순히 매 프레임 $F 를 24로 나눈 값을 취한다.

 

X, Z 속성에 $T 를 입력하면 각각 +X, +Z 방향으로 노이즈 패턴이 흐른다.

 

Y 속성에 $T 를 입력하면 +Y 방향으로 노이즈 패턴이 흐른다.

그리드에 두께가 없기때문에 흐름을 잡아내기가 조금 힘들다.

노이즈 리턴값을 오직 Cd 에만 연결하라는 법은 없다. P, v, N 등 어떤 어트리뷰트도 노이즈 리턴값으로 변형할 수 있다. 어떤 경우든지 Cd 어트리뷰트는 노이즈의 세기, 빈도, 흐름을 즉각적으로 확인시켜주는 장점이 있다.