Programming/Houdini - TWA

[Houdini] Joy of VEX (Day 3)

와들S 2023. 7. 20. 11:33

1. Outputs

 

2. Reviews

- Normal에 관한 내용들. 노말의 변화를 형태의 변화로 메쉬에 적용시키려면 @P += @N로 적용해야 한다.

이 부분 length와 @d, @P로 설명하셨던 부분들을 요약하면
1. 그냥 수학 그래프처럼 이해하면 된다
2. 그냥 @P.y = @P.x; 로 했을 때는 x값이 그대로 들어가 음수까지 반영되는거지만,
@P.y = length(@P)일 경우 길이값이므로 무조건 양수만 들어가 V자형 그래프가 만들어진다. (y축대칭)

 

3. Exercises

1) Try and incorporate clamp into the above setup, see if you can make it do something interesting.

- 뭘 더 하라는데 뭘 해야할지 몰라서 이런거 해봤다.

- 그리드가 아니고 입체 도형에 넣어봤다. 그리드의 경우 clamp로 인한 변화를 잘 알 수 있었으나, 입체도형의 경우 clamp를 적용한 해당 축은 clamp의 최대값으로 맞춰져 버린다. 

- 그래서 저번 강의에서 예시로 들어주신 RubberToy를 넣어봤다. 똑같이 y로 맞추고 해봤는데 웬 괴상망측한 형태가 나왔다. 구와 다르게 평면으로 맞춰지는게 아니라 이상한 형태를 띈다. 

- 물론 특정 값에선 똑같이 평면의 형태를 보인다. 

- 그리드에 x축 clamp를 연결해 보면 역시 아무것도 안뜬다. 그래서 하나 시도해봤다.

- 두 축을 분리해서 해봣는데도 여전히 안된다. 

- fit으로 해봐도 안된다. 이렇게 되는 이유를 모르겠네..... 단순히 값을 눌러준다는게 아닌건가? 아무튼 흥미로운걸 찾기는 함...

+) 추가

- z축으로 안해봤다는 게 떠올라 z축으로 fit 해봤는데 흥미롭게 나왔다. 구와 다르게 러버토이는 나름 형태가 잡히긴 한다 엉망으로... 구처럼 평면이 안되는게 어디야..

 

2) Set P based on waves generated from sin(d), but see what happens if you fit and clamp d before sin, after sine, or both before AND after sine.

- 문제 제대로 안 읽고 뻘짓하다가 재밌는 거 찾았다. sin 안에서 @Time을 곱했더니 그 시간 때문에 Sin의 반복 간격이 엄청 짧아져서 신기한 모양을 만들었다 ㅋㅋㅋㅋ

- 아무튼 문제로 넘어가면, sin을 한 후 fit을 입혔을 때:

- fit을 먼저 한 후에, 다음 sin + @Time 을 입혔을 때:

- 둘의 차이점은 아래의 경우 fit을 먼저 해 간격을 조절 후에 sin을 입힌 거라 grid 자체가 위아래로 왔다갔다하지만 위의 경우는 그저 위치는 고정이고 모양만 sin형태로 반복된다.

더보기

sin->fit 코드:

float d = length(@P);
float input = sin(d + @Time);

@P.y = fit(input, chf("inputmin"), chf("inputmax"), chf("outputmin"), chf("outputmax"));

 

fit->sin 코드:

float d = length(@P);

d = fit(d, chf("inputmin"), chf("inputmax"), chf("outputmin"), chf("outputmax"));

float input = sin(d + @Time);

@P.y = input;

 

3) Waves that start from 2 points and mix with each other (remember the earlier lesson about code style, and += *= vs =, and how you can accumulate results over several lines)

- 더했다. 끗

더보기

코드:

vector center = chv("Center");
vector center2 = chv("Center2");
vector pos = @P;

float d = distance(pos, center);
float dd = distance (pos, center2);
d *= chf("scale");
dd *= chf("scale");

@Cd = fit(sin(d + @Time * chf("speed")), -1, 1, 0, 1) + fit(sin(dd + @Time * chf("speed")), -1, 1, 0, 1);

 

4) Try and build some of these examples with vops, see what feels faster.

ㅜㅡㅜ 다음에..... 우리 그냥 vex가 더 빠른걸로 해요

 

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

[Houdini] Joy of VEX (Day 5)  (0) 2023.07.23
[Houdini] Joy of VEX (Day 4)  (0) 2023.07.20
[Houdini] Joy of VEX (Day 2)  (0) 2023.07.20
[Houdini] Open The Houdini 8-2  (2) 2023.07.18
[Houdini] Open The Houdini 7-1, 8-1  (0) 2023.07.17