https://www.twahoudini.com/course/starterparticles1
HOUDINI1_ STARTER & PARTICLES
1️⃣ 후디니 작업을 위한 기본 프로세스 이론을 공부합니다. SOLVER 작동 개념을 훈련하고 PARTICLE 시스템을 구현합니다.
www.twahoudini.com
후디니 1 공부를 시작하기 전 앞서 배운 TWA 최초입문 강의와 JOY OF VEX 강의를 Starter_00 강의에서 복습해보자.
먼저 인터페이스 설정을 알아보자.

후디니에 접속하게 되면 좌측 상단의 Build 버튼을 클릭해 여러가지 인터페이스를 고를 수 있다.
초기에는 Build 상태로 설정되어 있으며, 여러가지 조작을 통해 나만의 인터페이스를 커스텀 할 수 있다.


최초입문강의 복습
Attributes, Clean node

Object에 마우스를 가져가 i 모양의 아이콘을 누르거나 Object를 마우스 중간 버튼으로 꾹 누르면 Node info를 볼 수 있다.
Node info에서는 Object에 대한 Points, Primitives, vertices, Polygons, Attributes 정보 등을 확인 가능하다.

두 가지 Object의 Attributes가 동일하지 않은 상태에서 Merge를 할 경우 Merge node 오른쪽에 주황색 느낌표 표시가 생기게 된다. 이렇게 정돈되지 않은 상태에서의 Object의 병합은 예측되지 않은 결과를 낼 수 있도록하니 주의하자!
Box Object의 Attributes에는 P, Rubber toy의 Attributes에는 P와 N의 정보가 있다.
두 Object가 Attributes에 같은 정보를 갖게 하기 위해 Clean node를 이용한다.

Remove Attribs를 체크하고 *를 입력해 모든 정보를 제거한다. ^P를 입력하면 P를 제외한 정보가 제거된다.
이렇게 Rubber toy의 N 정보를 Clean node로 제거해 오류를 줄여주었다.
Animation
Object에 Animation를 넣어보자.

Transform node를 이용해 Box Object의 X축 Scale을 Frame에 따라 변화하도록 Animation을 주었다.
아래에서 24 Frame을 선택해 2의 값을 주었고 48 Frame에 1을 주었다.
프레임을 고른다음 원하는 만큼의 Object 변형을 주고 변형된 parameter 정보에 Alt+좌클릭으로 Animation을 설정한다.
Copy Parameter, Point function
만약 다른 곳의 Parameter 정보를 그대로 가져와 이용하고 싶다면 Copy Parameter와 Paste Relative References를 이용해보자. 손쉽고 빠르게 정보를 연동할 수 있을 것이다.

또한 Point function을 이용해 필요한 정보를 디테일하게 가져올 수 있다.
point("불러올 정보의 위치", 몇 번 포인트, "어떤 정보를 가져올 것인가", 몇 번째 정보)
Ex) point("../object",0,"Cd",1)
JOY OF VEX 복습
Point, Distance, Length

Attribute Wrangle에서의 Point 사용법은 Node에서의 사용법과 약간의 차이가 있다.
point(어디서 정보를 가져올 것인가, "어떤 정보를 가져올 것인가", 몇 번째 정보)
여기서 몇 번째 정보는 P를 가져온다면 x,y,z 값이 될 것이고, Cd를 가져온다면 r,g,b 값이 된다. 순서대로 0,1,2로 쓴다.
distance(시작점(vector), 끝점(vector)) : (끝점 - 시작점)의 float 값 도출
length(위치 정보(float or vector)) : 원점으로부터의 float 값 도출
Clamp, Fit, Chramp

clamp(input,min,max) : input의 최솟값과 최댓값을 지정해준다.

fit(input,min,max,new_min,new_max) : input을 최솟값과 최댓값으로 clamp한 뒤 new_min,max로 크기를 맞춘다.

chramp("name",input) : input을 0~1 사이의 값으로 변환한 Ramp 모양에 맞춰 input을 변형시킨다.
If, else, else if

If 문은 한번 소리내어 읽어보겠다.
float A는 chf("A")와 같다.
float B는 chf("B")와 같다.
만약(if) 모든점으로부터 X값이 A보다 작다면 그 점은 파랑색을 띠게 된다.
만약(else if) 모든점으로부터 X값이 A보다 크거나 같고 B보다 작다면 그 점은 빨강색을 띤다.
그렇지 않다면(else) 모든점으로부터 X값이 초록색을 띤다.
여기까지가 수업의 본 내용이었고 그 뒤론 JOY OF VEX에서 사용되었던 여러 Keyward를 요약해주셨다.
Keyward
normalize(vector) : 벡터의 크기를 1로 만든다.
minpos(몇 번째 input, pt) : 레퍼런스의 위치 중 가장 가까운 위치정보(vector)를 얻는다.
nearpoint(몇 번째 input, pt) : 레퍼런스의 위치 중 가장 가까운 점의 pointnumber(integer)를 얻는다.
dot(A,B) : 두 벡터 A,B의 각도를 삼각함수로 표현한다(float값 도출).== length(A)•length(B)•cos(θ)
cross(A,B) : 두 벡터 A,B의 수직이 되는 product를 구한다. 오른손법칙을 사용하는데 검지를 A, 중지를 B로 두고 엄지를 product로 둔다.
array : 'i[]@cube', 'int cube[]', 'cube[1][2][3]' 방식으로 array를 사용할 수 있으며, array는 integer 정보를 나열할 때 사용된다.
nearpoints(몇 번째 input,@P,반경,개수) : input으로부터 반경 안에서 개수 만큼의 pointnumber를 구한다. 구해진 pointnumber는 array로 나열된다.
foreach(pt; pts[]) : pt=pts[] 를 사용한 중첩문이다. 'for(int i=0; i<10; i++)' 방식으로 표현 할 수 있다.
@up : 방향을 전부 위로 향하게 한다.
@N : 각각 정면의 방향을 보게 한다.
@pscale : 비율을 고정시킨 상태에서 크기를 조절한다.
'TWA Houdini1 > Starter & Particles' 카테고리의 다른 글
TWA 후디니 1 Starter_03 : Mantra(Material, Group) (0) | 2023.01.09 |
---|---|
TWA 후디니 1 Starter_02_Part3 : Group Exercise (0) | 2023.01.06 |
TWA 후디니 1 Starter_02_Part2 : Group Exercise (0) | 2023.01.05 |
TWA 후디니 1 Starter_02_Part1 : Group Exercise (0) | 2023.01.04 |
TWA 후디니 1 Starter_01 : Group (0) | 2023.01.03 |