본문 바로가기

Houdini Basic

[15일차] 램프만들기 (2)

타겟 설정하기

 

2D에서의 작업

구분을 위해 // 내용을 써주는 게 좋음

target의 x값 가져올때, P.x 이렇게 했던 것 처럼 target.x 라고 해주면 됨

 

3D에서의 작업

강의를 보기 전에 Dir, NormDir, LenDir에 대한 힌트를 얻고 코드를 입력해봤는데 제대로 작동하는 것 처럼 보였다.

Dir = NormDir*LenDir 

노말라이즈된 NormDir는 방향벡터(크기 1인), 거리에 해당하는 LenDir는 크기

NormDir은 벡터의 크기가 아닌 방향만을 사용하고싶을 때 사용하면 된다고 이해하면 되는걸까?

*내가 했던 것과 다른 점

1. 나는 LenDir이 거리라고 적혀있어 Distance 함수를 활용했는데 선생님은 length 함수를 사용했다. 똑같음!

2. else에 해당하는 내용을 new 점이 곧 target 점이 되는거라고 이해해서 new = target이라고 적었는데 상관없는거겠지?

 

저번시간에 만들어둔 선과 합치기

새로 geo를 만들어서 각각 내용을 모두 복사, 붙여넣기

 

-

새로운 MAIN CONTROL null 만들어주기

다리길이가 될 A, B 파라미터 만들기

mid 컨트롤의 A,B 다리 길이의 합은 neck 컨트롤의 limit

mid에서 만들었던 base와 target 컨트롤 다 지우고 메인컨트롤에서 조정할 수 있도록 만들어주기

오늘 만들었던 노드들을 저번 시간에 만들어둔 노드의 위쪽에 연결시키는데, 두번째 input에 연결하기

(아래에서는 위에서 만든 점을 사용하지 않고 정보로만 쓰기 위해서)

generate_points 어트리븃 노드에서 이런 식으로 base와 neck의 값을 포인트함수로 불러오기 (원래는 파라미터로 되어있었음)

 

 

타겟이 멀리 있을 때, 램프가 너무 일직선이 되는 것을 해결해주기

*중요!

limit의 값에서 -1을 해주면 반경이 줄어들면서 램프가 꺾이게 됨

메인 컨트롤에 howmuch라는 플롯 파라미터 생성해서 빼주는 값 설정해주기

 

 

관심 영역 조절하기

 

2D에서의 작업

result라는 새로운 점은 intensity의 값에 따라서 new와 orig 점 사이를 이동함

intensity가 1이면 orig의  위치에, 0이면 new의 위치에 

 

color로 영역 확인하기

새로운 geometry 만들고, gird 만들기

add - delete geometry but keep the points 로 점만 남기기

 

 

가운데 영점을 base로 두고 

각 점들이 영점에서부터 떨어진 거리를 구함

 rad 파라미터 만들어서 반경 설정하고 거리 len과 반경 rad의 비교를 통해 색을 다르게 설정해줌

len < rad 이면 검정색, 아니면 흰색 이런 식

 

intensity를 활용해서 그라디언트로 적용되게 만들기

intensity = len / rad

rad가 1일때 영점에 가까운 점일수록 intensity는 약해지고 1에가까워질수록 intensity는 강해짐 (len이 0이면 0, len이 1이면 1)

@Cd = set ( intensity, 0 , 1-intensity ) 로 만들어서 intensity가 강해질수록 빨간색, 약해질수록 파란색이 되도록 함

 

rad 바깥 점들은 (else)

rad바깥부터 파란색이 되는 지점까지의 거리를 sen이라고 설정

intensity = (rad+sen-len)/sen

rad에 가까울수록 intensity가 강해지고, 멀어질수록 약해짐

len이 rad+sen보다 길어진다면 intensity는 음수가 나오게 되기 때문에 clamp 함수로 보정

clamp(변수, 최소값, 최대값)

 

 

 

'Houdini Basic' 카테고리의 다른 글

후디니 단축키  (1) 2024.01.10
[14일차] 램프 만들기 (1)  (0) 2023.01.26
[13일차] 후디니에서의 수학 & if 조건문  (0) 2023.01.25
[12일차] 시계 애니메이션 with Wrangle&VOP  (0) 2023.01.19
[11일차] VEX와 VOP (2)  (0) 2023.01.17