Programming/Houdini - TWA

[Houdini] Open The Houdini 5-3

와들S 2023. 7. 13. 05:27

1. Outputs

5-3

2. Review

- 변수 이름을 이후에 수정하더라도 그 변화가 다 적용이 됨. 

- 그래프 계산을 해봄. 그저 상수인 S_S는 상수그래프를 보이고, S*(Count*Interval) 그래프는 계단형을 보임.
우리가 필요한 그래프를 그리기 위해선 새 값인 Value가 필요함. 해당 Value의 그래프는 일정 주기로 반복하는 형태의 그래프임. 

- Value란 그래프를 그리기 위한 작업. 두 점을 이어 선을 만든 후, edit&subdivide로 나눈다. 이후에 그 값을 조정하기 위해 Carve를 사용한다. 

- 2번에서 Attribute K를 얹기 위해 point()란 함수를 사용한다. 

- point()는 Attribute 값을 돌려주는(return) 함수다. 총 4개의 inputs이 필요하며, 첫 번째는 노드의 정보, 두 번째는 노드의 몇 번째 점(인덱스), 세 번째는 Attribute, 마지막은 해당 attribute의 index가 필요하다. 만약 조건이 충족하지 않는 정보가 있다면 0으로 넘어간다.
(※ 조건 충족 X : 틀린 정보 등)

- 생각해보니 이 point 함수는 이전 빌딩 만들 때 썼던 함수 중 하나인데, 그 땐 대강 이렇게 생긴 것만 알고 넘어갔었다. 

[Houdini] Modular Building 1 (tistory.com) 에서

- 여기서 보면, 해당 switch 의 windowPropType이란 attribute를 가져올 때 사용하였다. 
   첫 번째 인덱스가 -1인 이유는 타 노드가 아닌 해당 자체 노드의 값을 가져오는 거라 -1을 입력하고,
   두 번째 인덱스는 첫 번째 점이라 0,
   세 번째 인덱스는 해당 Attribute의 이름,
   마지막 인덱스는 첫 번째 값이라 0이다. 

- 후디니의 큰 분류들. 

1. point("/OBJ/geo1/Box1", 3, "p", 0)
-> OBJ/geo1/Box1 노드에서 3번째 값의 위치정보(P)의 첫 번째 인덱스 x를 반환.
2. point("/OBJ/geo2/null1", 5, "p", 2)
-> OBJ/geo2/null1 노드에서 5번째 값의 위치정보(P)의 세 번째 인덱스 z를 반환.

 - 연습
1. box1에서의 3번점 y값을 불러와 A에 넣음
-> point("/OBJ/geo1/Box1", 3, "p", 1)
2. 가공처리를 한 후 B의 값을 Box의 Unifrom에 넣음
-> ch("/OBJ/Clock/Control/C")                         ----- 절대 주소
-> ch("../Control/C")                                         ----- 상대 주소
(.. 는 상위 노드를 말하므로 "../" = "/OBJ/Clock/" 이다)

- 해당 point()함수 작성은 OBJ 안 Clock 안 Box1 노드에서 시작함. 상대 주소로 적고싶다면 ../ 을 한 번 더 적어 OBJ까지 이동한 후 적으면 된다. (학교 C++ 수업에서 배웠음)

- Carve - Start U 에 Control/Deci 값을 넣으려면, Control 은 어떠한 점도 없으므로 point()대신 ch()를 써야 한다.
   -> ch("/OBJ/Clock/Control/Deci") 
   -> ch("../Control/Deci")


- Value에서는 Point에 대한 Attribute K를 만들고, 그 K를 끌어다 다시 사용함. Control - Value라는 파라미터 안의 값을 불러와야 하므로 Point()를 사용해야 함. 
   -> point("/OBJ/Clock/Set_K", 0, "K", 0)
이제 이 불러와진 숫자는 숫자이므로 가공처리가 가능함. 

- 즉 point()를 써야할 상황과 ch()를 써야할 상황을 정리해보면
   point(): 해당 노드에 값이 있어 그 값에서 직접 받아야와 할 경우 
   ch(): 해당 노드에 값은 없고 변수만 있어 그 변수를 받아와야 할 경우

- 따라서 정리해 마지막 F_S에 넣을 값은
   F_S = S_S + S * (Count * Interval) + ch(Value) * Mult


- 선을 만든 후, 점으로 나누어 해당 모양을 만든다. 하지만 너무 뾰족하고 인위적이므로 아래에 convert 노드를 붙인 후, Convert To - NURBS Curve 로 바꾸어 준다. 

Carve - First U 에 CLOCK_CONTROL 에서 만든 Deci을 넣는다. 위에서 쓴 바와 같이 ch로 넣어줘야 한다. 다음으로 blast로 제일 첫번째 점만 떼어내어 마치 애니메이션처럼 만들고 그 점의 y값을 아래처럼 속성으로 만들어준다. 

마지막으로 CLOCK_CONTROL에 만든 Vibe 변수에 point()함수를 넣어 해당 속성값을 넣어준다. 속성 값에 점 1개밖에 없으므로 인덱스는 전부 0이다. 얼마나 강도를 키울 것인지 Mult (Multiply) 변수를 만들어 곱해주기만 하면 완성된다. 

'Programming > Houdini - TWA' 카테고리의 다른 글

[Houdini] Open The Houdini 6-2  (0) 2023.07.14
[Houdini] Open The Houdini 6-0~6-1  (0) 2023.07.14
[Houdini] Open The Houdini 5-1~5-2  (0) 2023.07.12
[Houdini] Open The Houdini 4-1~4-2  (0) 2023.07.09
[Houdini] Open The Houdini 3-3  (0) 2023.07.07