Posted: March 27, 2021
Version: Houdini 18.0
노이즈(Noise) 란?
노이즈란 수학적 함수로서 다음과 같은 식을 가진다.
인풋 a를 받은 노이즈 함수는 아웃풋 b를 출력한다.
노이즈 그래프
노이즈 함수는 다음과 같은 그래프 형태를 갖는다.
일정한 패턴을 보이지 않고 다소 불규칙적인 높낮이의 연속임을 알 수 있다.
노이즈 기본요소
노이즈 종류마다 각각의 특성이 있지만 다음과 같이 세 가지의 기본요소를 갖는다.
각각의 기본요소 값에 따라 노이즈 그래프 모양이 달라진다.
Amplitude: 노이즈의 세기를 조절한다.(상하 수축/팽창)
Frequency: 노이즈의 빈도를 조절한다.(좌우로 수축/팽창)
Offset: 노이즈의 흐름을 조절한다.(좌우 이동)
노이즈 예제
후디니를 열고 /obj 에 그리드 지오메트리를 하나 만든다.
만들어진 'grid1' 노드를 더블클릭하여 Geometry 레벨로 들어간다.
시작하기 전에 그리드 면을 충분히 나눠주도록 하자.
'grid1' 노드의 파라미터를 다음과 같이 수정한다.
Size 는 가로/세로 1미터로 작게 해주고 Rows/Columns 값을 늘려서 면을 나눠준다.
다음과 같은 그리드가 준비되었다.
이제 이 그리드에 노이즈를 적용해 보자.
TAB 메뉴를 이용하여 Attribute VOP 노드를 하나 만든다.
노드 이름을 'noise' 라고 바꾼뒤 'grid1' 에 연결해 준다.
연결한 뒤에 'noise' 노드의 Display Flag 를 선택한다.
Attribute VOP 노드의 첫번째 인풋에 주의해서 연결한다.
이제 'noise' 노드를 더블클릭해서 VEX Builder 레벨로 들어가자.
TAB 메뉴에서 'noise' 라고 치면 여러가지 종류의 노이즈 VOP 들이 나온다.
처음에는 굉장히 부담스럽지만 결국 자기가 좋아하는 한두개의 노이즈만 자주 쓰게 되므로 가볍게 읽도록 한다.
노이즈 종류마다 그래프 모양과 리턴하는 값의 범위가 각기 다르다.
Anti-Aliased Noise VOP 을 선택한다.
만들어진 'aanoise1' 노드를 다음과 같이 연결한다.
모든 노이즈 VOP 은 최소한 pos 인풋(vector) 이 연결되어야 제대로 작동한다.
대부분의 경우, 이 pos 인풋에 지오메트리 P를 연결해 준다.
즉, 그리드 각 점의 위치값(P) 을 참조해서 노이즈를 리턴하겠다는 뜻이다.
한편 'aanoise1' 노드가 리턴하는 noise 값은 실수(Float) 임을 알 수 있다.
그 이유는 'aanoise1' 파라미터의 Signature 기본형이 3D Input, 1D Noise 이기 때문이다.
'aanoise1' 노드가 리턴하는 noise 값의 범위는 어떻게 될까?
리턴하는 값의 범위는 노이즈 종류마다 틀리다고 했다.
Anti-Aliased Noise 는 -0.5 와 +0.5 사이의 실수값을 리턴한다.
이 리턴값은 그리드 각 점의 Cd 어트리뷰트로 업데이트 된다.
그 결과, 그리드는 얼룩덜룩한 색을 띄게 된다.
검은색 부분의 Cd 값이 0 뿐만 아니라 -0.5 에 가까운 값도 가지고 있음을 이해하자.
노이즈 Amplitude
Amplitude 는 노이즈의 세기를 조절한다.
Amplitude 세기에 따라 노이즈 그래프는 상하로 수축 또는 팽창한다.
'aanoise1' 노드의 Amplitude 속성값을 다양하게 바꿔본다.
Amplitude 값이 낮을수록 작은 범위의 값을 리턴한다.
Amplitude 값이 높을수록 큰 범위의 값을 리턴한다.
Amp 가 낮으면 그리드 색의 흑백 대조가 미미한 반면, 높을 때는 그 대조가 뚜렷하게 된다.
노이즈 Frequency
Frequency 는 노이즈의 빈도를 조절한다.
Frequency 에 따라 노이즈 그래프는 좌우로 수축 또는 팽창한다.
'aanoise1' 노드의 3D Frequency 속성값을 다양하게 바꿔본다.
Frequency 속성은 X,Y,Z 축별로 따로 조절이 가능하다.
3D Frequency 텍스트 위에 마우스 중간버튼을 이용해서 세 축이 동시에 같은 값이 되도록 조절해 보자.
Frequency 값이 낮을수록 그래프 오르내림의 주기가 길어진다.
Frequency 값이 높을수록 그래프 오르내림의 주기가 짧아진다.
빈도수가 낮으면 노이즈 텍스쳐의 패턴이 커지고 빈도수가 높으면 노이즈 텍스쳐의 패턴이 작아진다.
노이즈 Offset
Offset 은 노이즈의 흐름을 조절한다.
Offset 에 따라 노이즈 그래프는 좌우로 이동하게 된다.
'aanoise1' 노드의 3D Offset 속성값을 다양하게 바꿔본다.
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 를 선택한다.
프로모션이 되자마자 'aanoise1' 노드 offset 인풋 모양이 다음처럼 변한다.
이것은 offset 인풋이 상위 Geometry 레벨에서의 파라미터로 Promote(승진) 됐음을 의미한다.
단축키 U를 눌러 위쪽 Geometry 레벨로 간다.
Attribute VOP 맨 아래쪽에 Offset 속성이 생겼음을 알 수 있다.
드디어 우리는 변수를 사용할 수 있게 되었다.
'noise' 노드의 Offset X,Y,Z 각 속성에 $T 를 차례대로 대입하여 관찰한다.
$T 는 $F 와 마찬가지로 시간에 따라 데이터 값이 증가하는 글로벌 변수이다.
$T 는 단순히 매 프레임 $F 를 24로 나눈 값을 취한다.
X, Z 속성에 $T 를 입력하면 각각 +X, +Z 방향으로 노이즈 패턴이 흐른다.
Y 속성에 $T 를 입력하면 +Y 방향으로 노이즈 패턴이 흐른다.
그리드에 두께가 없기때문에 흐름을 잡아내기가 조금 힘들다.