Programming/Houdini&Blender

[Udemy] 후디니(Houdini) 강의 단권화 (업데이트 중)

Dorasima 2024. 6. 7. 15:59

진정한 잡탕이 되기로 했다.

역시 할인 하길래 충동적으로 구매한 강의

- Houdini FX For Beginners - Raffi Bedross

0. 후디니 찍먹이다.

3D tool 중에서 제일 어렵다는 후디니 강의를 듣고 대충 따라해보기로 했다.

 

- 툴의 작동원리 라던가, 컨셉 같은거에 대해서는...

- 느낌만 겨우 오는 수준이니, 굳이 그거를 단어로 정리했다가 틀릴까봐 ㅋㅋㅋㅋ

- 간단히 노드 위주 정리로 시작을 해서..

- 미래의 내가 깨달을 방법론(?)으로 적당히 넘어가면 되지 않을까...

 

(노드 하나하나가 엄청 일반적인 기능을 많이 가지고 있고, 너무 자유로워서... 어렵게 느껴진다.)

(에디터에서 지정하는, 혹은 노드에서 지정하는 여러 속성값들도 마찬가지...)

 

사실 여기에 다 있긴한데... 몇 번 써봤던 것들 혹은 자주 쓸만 한 것들을 정리하는 느낌으로 간다.

Nodes (sidefx.com)

 

Nodes

Nodes are the basis of everything that Houdini does. When you create geometry, rig a character, and so on, Houdini is creating nodes behind the scenes. The nodes record the actions you took and the parameters you used. You can go “back in time” and cha

www.sidefx.com

 

1. 일단은 Geometry 노드 먼저 살펴 보겠다. 

- 강의 순서 따라 간다.

 

치즈

- Box : box 모양 primitive를 생성하는 노드다...6면 8점 12선..

- matchsize : 입력으로 들어오는 노드나 group에 대해 Translation이나 Scale을 정해진 Target으로 매칭 시키는 노드이다. 

- fuse : 입력으로 들어오는 노드나 group에 대해, 점 혹은 면이 특정 거리 이하가 되면(어쩌면 추가 조건이 있을 수도) 융합 되도록 설정하는 것이다.

- Null : 아무것도 안하는 노드이다. 노드 입력을 그대로 출력한다.

- scatter : 입력으로 들어오는 노드나 group에 대해, 적당히 랜덤으로 점을 찍어주는 노드다.

- attribute randomize : 입력으로 들어오는 노드나 group에서 지정한 속성값을 랜덤으로 만들어주는 것이다.

- copytopoint : 첫번째 입력으로 들어오는 노드나 group을 두번째 들어오는 points들에 복사해서 위치 시키는 것이다.

- boolean : 이름보다는 좀 더 일반적인 집합 연산을 하는 느낌이다. 입력으로 들어온 두 노드 혹은 그룹에 대해, 합칠 것인지, 교집합을 걸 것인지, 어느 한쪽에 대해 차집합을 할 것인지 등을 정하는 것이다.

- remesh : 입력으로 들어온 친구(이제부터 짧게 친구라고 하겠다.)를 다시 삼각형으로 쪼개서 메쉬로 만드는 것이다.  

- polyreduce : 입력으로 들어온 친구의 polygon 개수를 줄여주는 것이다. 내부적으로 모양을 최대한 유지 시켜주려한다.

- smooth : polygon의 각이 크게 변하는 곳의 정도를 줄여준다.

- subdivide : polygon 개수를 늘려 더 부드럽게 만들어 준다.

- color : 입력으로 들어온 친구의 color 속성에 값을 채워준다.

 

- Curve : 곡선을 나타내는 노드다. 에디터에서 Draw Curve로 그릴 수 있다.

- Revolve : 입력으로 들어오는 친구를, 어떤 축을 중심으로 회전을 시켜 도형을 만드는 것이다. 

- PolyExtrude : 입력으로 들어오는 친구를 특정 방향(각 면의 노벌 방향 등)으로 추출해서 뽑아내는 것이다.

- PolyBevel : 입력으로 들어오는 친구(보통은 edge)를 비스듬하게 깎는다.

- Resample : 입력으로 들어온 친구(여기서는 보통 곡선 혹은 곡면)을 다각형으로 만드는 노드다.

- Carve : 입력으로 들어온 친구를 일정부분 잘라내거나 추출하는데 사용한다. 

- PolyWire : 입력으로 들어온 친구(보통 곡선)를 따라서 튜브 형태로 만드는 노드다.

- merge : 입력으로 들어온 친구들을 합치는데 사용한다.

기름통

- PolySplit : 입력으로 들어온 친구의 폴리곤을 잘라서 분리 시키는 것이다.

- UvProject : 입력으로 들어온 친구의 UV 성분을 만들어서 Texture가 어떻게 매핑될지 정하는 노드다.

- Material : 입력으로 들어온 친구에게 Material을 입히는 것이다.

- Group : 그동안 언급했던 친구에서 group을 말하는데, 노드, Object, Surface 같이 점, 선, 면을 선택해서 group을 생성할 수 있고 그것들에 대해 노드 연산을 할 수 있게 해주는 것이다.

- UV Quick Shade : uv 매핑이 어떤식으로 되는지 테스트 해볼 수 있는 노드다.

- font : 문자를 작성할 수 있고, 그것을 primitive 로 사용할 수 있게 해주는 노드다.

 

거미줄

- Circle : 원을 그리는 노드다. 부분적으로도 그릴 수 있다.

- Edit : 입력으로 들어온 친구의 점, 선, 면을 곡선 혹은 곡면을 이용해서 변환 할 수 있게 하는 노드다.

- Copy : 입력으로 들어온 친구를 복제하는 노드다. 복제할 때 마다 변환 방법을 정한다.

- Line : 선을 그리는 노드다.

- Point Jitter : 입력으로 들어온 친구들의 점을 랜덤하게 위치시키는 것이다.

 

유기체

- Attribute VOP : 내부적으로 node network를 만들 수 있는 노드다.

(참고로 VOP는 Vertex에서 Vector 성분을 가지고, 연산하는 연산자를 말한다.)

pop sop dop? what do these mean? | Forums | SideFX

 

pop sop dop? what do these mean? | Forums | SideFX

 

www.sidefx.com

 

- AA Noise : AA 방식으로 Noise로 만드는 노드다.

- Fit Range : 어떤 구간으로 들어온 값을, 새로운 구간의 값으로 remapping 해주는 것이다.

- Divide : 입력으로 들어온 친구를 노드에서 정한 방식으로 나누는 노드이다. 예제에서는 dual 방식으로 나누었는데,

dual이 뭔지는 다음 링크를 보고 알아보도록 하자.

Dual graph - Wikipedia

 

Dual graph - Wikipedia

From Wikipedia, the free encyclopedia Graph representing faces of another graph The red graph is the dual graph of the blue graph, and vice versa. In the mathematical discipline of graph theory, the dual graph of a planar graph G is a graph that has a vert

en.wikipedia.org

- Ray : 첫번째로 들어온 친구의 노멀 방향으로 Ray를 쏴서, 두 번째 들어온 친구와 닿은곳으로 변환하는 노드다.

 

 

2. 이제 Pyro 뭐시기를 살펴보자.

- 시뮬레이션을 가능하게 해주는 새로운 속성(?) 필드(?) 느낌이 추가가 되는 것이다.

 

Smoke & Candle Light

- Torus : 도넛모양 primitive를 만드는 노드이다.

- Pyro Source : 입력으로 들어오는 친구를 pyro에서 사용할 수 있게 시뮬레이션 할 수 있는 속성(DOP)을 추가한 점으로 바꿔주는 노드이다.

Introduction to Pyro (sidefx.com)

 

Introduction to Pyro

Pyro simulations can also be carried out entirely in a single SOP network, avoiding the need to switch between contexts and directories. You can do this using the Pyro Solver SOP, which is a convenience wrapper around a pyro dynamics network. This node exp

www.sidefx.com

(pyro는 막 완전 현역은 아니라고 한다... 현재는 다른 기술을 사용한다고 한다.)

- Attribute Adjust Vector : 입력으로 들어온 친구의 여러 attributes 값을 Vector로 지정할 수 있게 해준다. 

- Volume Rasterize Attribute : 입력으로 들어온 point와 point의  속성으로 VDB를 생성한다.

VDB (sidefx.com)

 

VDB

 

www.sidefx.com

- Pyro Solver : 연기 시뮬레이션을 제공하는 Smoke Solver에 불꽃 시뮬레이션을 할 수 있도록 파라미터를 추가한 노드이다. 이러한 효과를 연출할 때 다양한 파라미터를 사용하게 된다.

Pyro effects (smoke and flames) (sidefx.com)

 

Pyro effects (smoke and flames)

In Houdini 17, pyro sourcing changed from being based on volumes representing different properties (temperature, fuel) to being based on points with attributes representing the physical properties. This conforms better to how most users source pyro sims, f

www.sidefx.com

- Pyro Bake Volume : Rendering 단계에서 pyro volume 연출에 추가적인 작업을 하고, 머테리얼을 적용시키고, 빛 산란도 적용한다.

 

Smoke 2

- Gas Damp : pyro solver 네트워크 안에서 사용하는 노드, micro solver이다. gas의 속도나 모션을 줄이는데 사용한다.

- Gas Blur : micro solver이다. gas 에서 사용하는 속성(field) 값에 blur를 먹이는데 사용한다.

- Gas Turbulence : micro solver이다. gas의 velocity 속성에 회오리 움직임을 준다.

 

Tornade

- Light : ( USD기반의 막 뭐라뭐라 하는데 뭔지 모르겠고) Effect에 계산할 빛 성분 혹은 정보를 주는 노드이다.

- Gas Axis Force : microsolver이다. velocity field에 축을 기반으로 하는 회전 성분을 추가하는데 사용한다.

 

Tire Smoke

- Labs FBX Archive Import : Fbx 관련 플러그인을 깔면 사용할 수 있다. Fbx 파일을 import 하는데 사용한다.

- Blast : 도형, 점, 선, 면을 좀 더 절차적으로(?) 삭제하는데 사용하는 노드이다.

 

2_1. Pyro 뭐시기를 예제 몇 개를 까보면서 속성별로, 절차적으로 느낌을 잡아보는 거로 해보자.

요 친구가 나오도록

Fire 

- 일단 primitive를 먼저 잡는다. 그리고 적당히 불꽃이 피어오르는  장소를 나타내도록 변환을 한 다음.

- Pyro Source로 Pyro 연산을 위한 Point로 바꾼다. Pyro 연산을 위한 Attributes 도 여기서 지정한다.

무료 버전에서는 요정도?

(위와 같은 성분을 가진 점들이 다음 노드로 넘어가고)

- 아래 + 오른쪽 사진을 보면 density, temperature, burn 이름을 가진 Attritube Noise 3개가 있는데,

- Pyro Source에서 위 3가지  성분을 point에 넣어서 생성을 했고, 그 point 들이 아래 3개의 Attritube Noise 노드를 지나가면서 각 성분에 noise가 먹어지는 것이다.

(빨간색 일 수록 해당 attribute의 값이 높고, 파란색이면 낮은 것이다.)

- 그리고 Volume Rasterize Attributes 에서 point 들을 VDB(뭔지 잘 모르겠는 ... smoke의 모양을 가진 친구)로 바꿔준다.

- 이제 Pyro Solver에서  point에서 변환된 VDB들을 그들의 Attribute 값과 + Node에서 지정한 Parameter를 이용해서, 시뮬레이션을 실행한다.

Pyro Solver (sidefx.com)

 

Pyro Solver

 

www.sidefx.com

- 속성값은 뭐가 엄청 많다... 그때 그때 만져가면서, 모르는 단어 있으면 사전 찾아가면서 만들어보자.

- 불꽃의 색과 연기의 색도 Pyro Solver에서 지정한다.

- 결과물 : 

 

Smoke with Colors

- 이 친구는 Color 속성이 다음처럼 noise를 먹은

- 구를 가지고 Pyro 연산을 한 것이다. 이를 위해서는 Pyro Source에서 입력 primitive의 Color 속성을 받아야 한다.

- 그리고 그것이 Volume Rasterize Attribute와 Pyro Solver로 간다면, 다음과 같은 결과가 나오게 된다.

 

Smoke Buoyancy with Temperature

- 온도에 집중한 예제 느낌쓰?

- 아래 처럼 Temperature를 제어하는 Parameter와 Temperature의 영향을 받는 Shape - Buoyancy(온도가 높을 수록 상승하는 힘을 가짐) 를 이용해서 smoke를 만들는 예제다.

- Houdini는 오른쪽 처럼 VDB의 Temperature를 시각화 하는 것을 제공한다.

 

3. 아직 강의 안봄

- ㄹㅇㅋㅋ

 

 

 

 

 

 

 

 

참고자료

- Attributes 관련 자료 : Geometry attributes (sidefx.com)

 

Geometry attributes

Attributes are named values stored on vertices, points, primitives, and objects. Point color, position, UV coordinates , spline weight (W), and normal, for example, are stored as point attributes. Houdini sets some point attributes that you can use in expr

www.sidefx.com