Joy of Vex [Day12-1]
nearpoint 적용해보기
첫번째 어트리븃에서 니어포인트 결과값인 pt라는 어트리븃을 만들어준다.
모든 점들에 대해 가장가까운 포인트넘버를 반환해줌
scatter로 점 세개를 뿌려주었기 때문에 @pt는0,1,2 중에 하나의 값을 가짐
blast로 pt의 숫자별로 각 점들을 분리해주는데, 그룹에 @pt == 0 이런 식으로
어트리븃에 쓰는 것처럼 써주면 된다.
두번째 어트리븃의 내용을 이렇게 적어주면 우측의 결과가 나온다.
이 모든 과정은
이렇게 하나의 어트리븃으로 표현해줄 수 있다.
파형 만들기
*@Time을 뺄 때는 floor 적용하기 전에 거리 값에서 빼줘야함!
fxA = fxA - floor(fxA); 4.7-4= 0.7, -5.8-6=0.2
trunc를 넣으면 어떻게 되는지 궁금해서 해봤는데, 음수값이 나와 시간이 지날수록 chramp 로 clamp 되어 모든 값이 0이 된다.
fxA = fxA % 1 을 하면 같은 결과가 나오는 것 같다.
지금은 플레이를 눌렀을 때, chramp 그래프의 우측부터 좌측으로 생기는 듯 보이기 때문에
fxA = fit(fxA,0,1,1,0);으로 플레이눌렀을때, 직관적으로 그래프처럼 생겨날 수 있게 만들어주기
nearpoint 활용해서 각기 다른 위치에서 파형 생기도록 하기
getpos에서 0 대신 pt 써주기! (중요)
그리드에 적용하기
여기까지는 선에서 적용한 것과 동일한 내용
파형이 멀어질수록 크기가 줄어들게 하기 위해서
fxA = fxA/(d+1); 을 적어준다. fxA 값을 거리로 나눠줘, 거리가 getpos 포인트에서 멀어질수록 값이 줄어들게 된다.
+1을 해주는 이유는 거리가 0에서 1 사이일 때는 곱하기가 되기 때문에 값이 커지기 때문 (0.5를 0.5로 나누면 1이됨)
멀어질수록 더 빨리 값이 줄어들게 하기 위해서 pow 사용하기
fxA = fxA/ pow((d+1),chf("dim")); 파라미터 만들어주기
어떤 지점을 기준으로 안쪽은 효과를 유지하고, 바깥쪽부터는 효과가 사라지게 하기
어떤 지점까지는 1, 그 이상부터는 1에서 0으로 줄어드는 값을 만들어주고, 그 값을 fxA에 곱해주기
어떤 지점의 값은 keep, 0으로 끝나는 지점의 값은 end
if 조건문을 활용해서 거리값을 받아오는 cutoff 가 keep보다 크고 end보다 작을 때
cutoff를 1과 0사이의 숫자로 만들어주기 위해 fit 을 활용
(강의에서는 else 안에 if를 한번 더 쓰는데 결과적으로는 else if라고 쓰는것과 같다.)
스캐터로 표현하기
nearpoint로 스캐터 점의 포인트넘버를 pt 로 불러와서 getpos에서 0 대신 pt 써주기!
시간에 + rand(pt)을 더해줘 물방울이 랜덤하게 떨어지는 것처럼 만들어주기
@Cd = rand(pt+123); 으로 색으로 보면 구획이 보로노이프렉쳐처럼 나뉘어져 보이는데
물방울끼리 중첩되는 게 아니라 저 구간이 쪼개져서 보이게 됨
이걸 해결하는 것은 다음 시간에...
쉽지 않았지만 배운 것들을 이렇게 활용하는구나 라고 좀 더 이해할 수 있어서 좋았다!