-
최초 입문 5강 part 3 (2023.1.12)STUDY: TWA후디니 랭글러 2기 Beginner 2023. 1. 13. 01:01
논리를 이해하기
애니메이션(키프레임 & no 키프레임)
초침이 끊임없이 움직이는 시계 만들기 그리고 똑딱똑딱 움직이는 시계 이론
똑딱똑딱 움직이는 시계, 디테일에 대한 이론
Attribute VOP, Attribute Wrangle 기본이해와 비교
똑딱거리는 시계 이론 마무리 그리고 실습
VEX
후디니에서 수학을 알아야하는 이유: 램프 만들기
램프 만들기 아이디어, if A와 B가 같을 때
If A와 B가 다를 때, 램프 컨셉 다지기
램프 뼈대 만들기
램프 면 작업하기
FX와 IK에 대하여
과제:
끊임없이 움직이는 시계
-시침이 360도 움직일 때, 분침은 60/360, 6도만큼 움직인다.
똑딱거리는 시계
-초침의 반동까지 묘사하기
램프 만들기
-좌표 값은 base와 target에만 입력
-target이 멀어질수록 head의 관심이 줄어든다.
-target이 가까우면 일정 거리를 두고 비춘다.
5강 part 3
반동 있는 시계 만들기
- CLOCK_LINE Geometry를 복사하여 CLOCK_TICKING Geometry를 만든다.
- CLOCK_CONTROL에 ADVANCED_MOTION 파라미터 추가
- Float 속성의 TIME 파라미터 생성 (파라미터 이름을 지을 때, 중복이 되지 않도록 설정해야 한다.)
- Integer 속성의 COUNT 파라미터 생성
- Float 속성의 DECI 파라미터 생성
TIME = ch(FRAME)/ch(R_SF)
COUNT = floor(ch(TIME)) : floor function을 사용할 때 함수 안에 채널 function으로 불러와야한다.
※ R_HM과 R_MS의 값이 같아서 결과값이 같았지만 엄연히 다른 수식으로 파라미터에 수식을 줄 때 주의
R_MS와 R_HM 주의 F_S 부분을 수정해서 똑딱거리는 시계 만들기
F_S = ch(S_S) + (ch(S) * ch(FRMAE)) : COUNT와 R_SF를 이용해 보정
F_S = ch(S_S) + (ch(S) * ch(COUNT) * ch(R_SF))
R_SF의 이름을 INTERVAL로 수정하기
다른 파라미터에 적용된 R_SF의 이름이 한꺼번에 수정된다! 후디니 개발자에게 감사의 인사를..
파라미터 이름을 수정한 후, 24로 수치 입력 DECI를 빼주는 거 아님… 주말에 복습하자….최초 입문 5강 part 2 中 초침이 움직일 때 반동
함수 더하기
일정 값을 유지하는 그래프일 때
c(x) = a(x) + b(x) b(x) 값이 증가하는 그래프일 때
b(x) 만큼 이동 b(x)가 sin( ) 그래프일 때
b(x) 만큼 이동22 계단 그래프일 때 반동이 가능하다
결과값을 더한 만큼 최종값이 바뀐다 증가 – 변화 없음 - 감소하는 그래프를 더할 때
수학은 멋있다.. ⭐반동을 표현해줄 Data를 더한다⭐
F_S = S_S + S * (COUNT * INTERVAL) + Value
F_S: 우리가 구하고 싶은 모양
S_S: 애초에 일정한 하나의 값으로 정해진 그래프
S * (COUNT * INTERVAL): 계단식으로 증가하는 그래프
Value: 반동을 묘사해줄 그래프
동일한 모양의 그래프가 반복된다 그래프를 시각화한 초침의 구간 = 반동 LAST PLAN: 어떤 노드를 어떻게 사용할지 작업과정을 실제로 그려보기
1. 선을 만들고 Carve로 Point 0가 DECI 값에 따라 움직이게 만든다. 그리고 그 점을 떼어낸다.
- Carve의 U값에 따라 그래프의 Point 0번 점의 위치가 바뀐다.
- 1에 도달하지 못하고 0부터 반복되는 DECI 값을 Start U 값에 적용한다면 Carve로 움직이는 Point 0번점의 애니메이션이 반복될 수 있다.
- 움직임에 필요한 0번 점만을 Blast로 떼어내고 Attribute “K“를 새롭게 생성
노드와 function의 활용을 예상해보기 2. 1에서 만든 점에 Attribute을 주고 CONTROL 노드에 load
- Attribute VOP, Attribute Wrangle(VEX)
Attribute "K" 3. CONTROL 노드에서 필요한 몇 가지 파라미터들을 더 만들어주고 “F_S”를 보정해준다. <THE END>
- Value 파라미터
- K 파라미터
- MULT 파라미터: 반동 제어
K값에 수식을 주면 증폭을 제어할 수 있다 = MULT point ( ) 활용
-B = ch(“A”): B값에 A를 불러올 때
-결과물의 특정 좌표값을 불러오고 싶을 때는 반드시 point( )을 사용해야 한다.
좌표값에서 몇 번째 순서인지 알고 싶을 때 http://www.sidefx.com/docs/houdini/expressions/point.html point( )을 풀어서 설명하자면..
point function은 4개의 내용을 입력해야한다.
- surface_node: 어디서, 어떤 노드에서 정보를 불러오고 싶은지
- point_number: 불러온 노드 중 몇 번 점인지
- attribute: 요구한 점에서 어떤 속성의 값을 알고 싶은지
- index: Attribute로 요구한 것 중 몇번째 정보를 줄것인지
함수 예시 - 조건을 충족하지 못한다면 함수 값은 0이 될 것이다.
- point( )의 세가지 값 중 앞 순서의 값을 충족해야 다음 값을 찾을 수 있다.
- 세가지를 모두 충족해야 우리가 원하는 Value를 얻을 수 있다.
point( ) function 적용해보기
- OBJ에 있는 [geo1]에 있는 Box1 오브젝트 3번 점의 position x, y, z중 0번인 x값을 불러오기: point(“/OBJ/geo1/Box1”, 3, “P”, 0)
- OBJ에 있는 [geo2]에 있는 null1 노드 5번 점의 position x, y, z중 2번인 z값을 불러오기: point(“/OBJ/geo2/null1”, 5, “P”, 2)
네트워크 뷰 도식화 다른 방법으로도 연습해보기
ex1) Box1에 있는 3번 점의 y값을 CLOCK_CONTROL 파라미터에 불러오기 ➡ 이 값을 Box1의 Uniform Scale에 적용하기
① point(“/OBJ/geo1/Box1”, 3, “P”, 1)
② ch(“/OBJ/CLOCK/CONTROL/C”): Paste Absolute References로 파라미터를 붙여넣는 방법 중 하나
../ : 현재 위치보다 상위 단계
/OBJ/CLOCK/CONTROL/C = ../CONTROL/C
불러오는 방법 ex2) geo2의 null1 그래프 4번점의 y값을 COLOCK_CONTROL의 Box1의 Uniform Scale에 불러올 때:
point(“/OBJ/geo2/null1”, 4, “P”, 1)
= point(“../../geo2/null1”, 4, “P”, 1)
상위 단계를 적용할 때는 현재 위치를 기준으로 고려해야한다.
현재 위치가 기준이다 - DECI 값을 Carve의 Start U, End V값에 불러올 때 사용하는 function은 ch( )
- CONTROL에는 어떠한 position 값이 없기 때문이다.
① Carve
Start U: ch(“/OBJ/CLOCK/CONTROL/DECI”)
=ch(“../CONTROL/DECI”)
② CONTROL
- CONTROL의 Value 값에 Attribute “K” 값을 불러와야한다.
Attibute “K”노드의 이름: SET_K
point(“/OBJ/CLOCK/SET_K”, 0, “K”, 0) = Value는 숫자이다. 즉, 어떠한 가공 처리도 가능하다.
F_S = S_S + S * (COUNT * INTERVAL) + ch(value) * (MULT: 폭을 증가시킬 때)
파라미터 Value =/= ch(value 값) 진짜 반동이 있는 시계를 만들어보자
- 곡선으로 반동을 묘사할 그래프를 만든다.
- 정보를 섞고 보정한다.
- Scene View에서 Front View
- Add로 (0, 0), (0, 1) point 각각 생성
- Merge로 묶은 다음 Add 노드로 선 만들기
- Subdivide 노드 활용
- [Subdivide] – [Depth] 값: 선의 중심점을 기준으로 나누는 횟수
01Depth:1일 때 ➡ Depth: 2일 때 - 그래프의 모양을 손쉽게 하기 위해 Depth 값을 4로 설정
- 0번 ~ 16번 점의 y값을 수정하여 위치를 바꿀 수 있다.
- Scene View에서 점을 직접 잡고 움직이면서 위치를 수정한다.
- Select Mode – Point로 설정하고 마우스 드래그로 점 선택
- Move Tool: 단축키 T
기즈모가 생성되었다 동시에 네트워크 뷰에 생긴 Edit 노드 - 곡선그래프를 만들기 위해 Convert 노드 연결
- [Convert] – [Convert To: NURBS Curve]
01곡선 그래프로의 변화 - Carve 노드로 그래프의 길이를 줄인다.
- CONTROL의 DECI 파라미터를 Copy Parameter ➡ Carve의 First U에 Paste Relative References
그래프를 따라 움직이는 0번 점 - 불러올 값의 경로를 알고 있기 때문에 다시 작성해보자.
※ 대소문자 주의 해당 경로에 있는 파라미터가 자동으로 보인다 ch(DECI의 경로) (속도가 너무 빠르므로 INTERVAL: 48로 조절)
- 움직이는 그래프의 point 0번 점을 Blast로 떼어낸다.
움직인는 0번 점 0번 점의 이동 Attribute Wrangle 활용
- Geometry Spreadsheet에서 확인할 수 있는 Attribute Wrangle, VIBE를 만든다.
- [Code] – [Run Over: Points]
- 우리가 만들 VIBE는 숫자 값이기 때문에 Float 속성 VIBE는 vector일 때 potision y값을 불러온다.
f@VIBE = v@P.y;
01Geometry Spreadsheet에서 position y값과 VIBE가 같음을 확인 ➡ 이 값을 CLOCK_CONTROL에서 이용하자.
- Float 속성의 VIBE 파라미터를 만든다.
- 경로값을 작성할 때 편리한 작성을 위해 Attribute Wrangle의 노드 이름을 SET_VIBE로 바꿔준다.
방법1. Paste Absolute References
point("/obj/CLOCK_TICKING/SET_VIBE",0,"VIBE",0)
01VIBE 파라미터 값과 Geometry Spreadsheet의 VIBE 값이 동일한지 확인 방법2. Paste Relative References
point("../SET_VIBE",0,"VIBE",0)
- F_S 값 보정
F_S = ch(S_S) + (ch(S) * ch(COUNT) * ch(INTERVAL)) + ch(VIBE)
- 진폭을 늘리기 위해 새로운 파라미터 MULT 추가
F_S = ch(S_S) + (ch(S) * ch(COUNT) * ch(INTERVAL)) + ch(VIBE) * ch(MULT)
(INTERVAL 값을 원래대로 설정: 24)
- 반동의 모양이 마음에 들지 않는다면 Convert 노드에서 수정해준다.
- Select Mode에서 Convert의 Display Flag가 켜져있는 상태에서 edit1을 드래그하여 선택하여 조절
- SET_VIBE와 업데이트한 CLOCK_CONTROL을 외부 모델링으로 가져가서 적용한다.
TICKING_CLOCK_FINAL👏👏 오늘의 내용을 이해해야 의도를 가진 결과물을 만들 수 있다.(중요★★★★★)
'STUDY: TWA후디니 랭글러 2기 Beginner' 카테고리의 다른 글
최초입문 6강 part 2 (2023. 1. 17) (0) 2023.01.17 최초 입문 6강 part 1 (2023.1.16) (1) 2023.01.17 최초 입문 5강 part 2 (2023.1.11) (0) 2023.01.12 최초 입문 5강 part 1 (2023.1.10) (0) 2023.01.10 최초 입문 4강 (2023.1.9) (0) 2023.01.10