중요했던 부분:
- Arttribute Wrangle (Run Over): 모든 point/primitive/etc 에 대하여 ~
eg) run over가 points 일때
@Cd = @P; // 모든 포인트에 대하여 @Cd (Colour) 값은 @P (Point Location)과 같다.
@Cd = @N; //모든 포인트에 대하여 @Cd (Colour)값은 @N (Normal) 값과 같다.
>> @N - 노멀값: 포인트가 향하는 방향을 x/y/z 값으로 준것.
- @P.x or @Cd.x or @N.y etc - Attribute 값들 중에 x/y/z중 한가지만 불러 올 수 있다.
- @Cd에서 rgb 값이 모두 동일하다면 무채색을 띈다 - 검은색 ~ 흰색 (RGB 값이 동일했을때 vector값을 하나만 써도 vex는 작동된다)
eg) @Cd = 0.1; // r = 0.1, g = 0.1, b = 0.1
- Resample (Length): Add 점들 사이에 있는 공간을 점들로 쪼갬. Length는 그 쪼갠 포인트들의 간격을 나타냄.
- Attribute에 숫자를 집어넣어 수학적인 식을 만들면 그에 맞는 모양을 형성함.
eg) @Cd = (@P.x - 6)*0.3; // @P.x값들에서 모두 6을 빼서 흑백을 나누는 기준선을 이동시키고 0.3을 곱하여 밝기를 더욱 높게 만든다.
- Built-In Attributes such as @ptnum and @numpt
@ptnum은 지오메트리를 구성하는 각각의 포인트들의 넘버를 나타낸다.
@numpt는 지오메트리를 구성하는 총 포인트들의 갯수를 나타낸다.
- float이나 integer 같은 값들을 계산할때 결과 값은 항상 먼저 적힌 cast type으로 나타난다.
eg) float * int = float
eg ) int/int = int
- ch(): Channel Function
channe은 코드에 적힌 constant를 parameter으로 나타네어 유저가 슬라이더로 조정할수 있게 만드는 function.
eg) @Cd = float (@ptnum)/chf ("SCALE"); // chf()을 이용하여 parameter으로써 스케일 값을 조정 가능.
- sin(): Sine Function & cos(): Cosine Function
파동을 형성함.
eg) @Cd = sin (float (@ptnum)/ch("SCALE"))); // sine function으로 인해 본래 그라데이션을 형성했던 쉐입들이 파장을 이루며 @Cd값들이 양수와 음수를 넘나들어 일정한 패턴을 생성함.
*파장이 넓어지길 바란다면 sin function안에 있는 값을 나누고 좁아지길 원한다면 1보다 큰값을 곱한다.
- Variables (변수)
Attribute와 마찬가지로 작동되지만 지금 이용중인 attribute wrangle node안에서만 그 값이 존재함.
eg) float foo = float (@P.x)/chf ("SCALE"); // @P.x는 @P.x에대한 float 값. Scale은 간격을 조정하는 parameter
@Cd = sin (foo); // foo를 sine function에 집어넣어 파동의 형태로 바꿈. @Cd에 따라 색이 일정한 패턴으로 반복되는 쉐입을 형성함.
Exercises:
1. Sin waves on z? on y?
Grid에서 sine function이 내포하는 값을 @P.z 값으로 바꾸면 위에서 보았을때 horizontal 방향으로 바뀜.
Sphere에서 sine function이 내포하는 값을 @P.y값으로 바꾸면 옆에서 보았을때 수직적으로 패턴을 형성함.
2.cos waves? (wont look hugely different, cos is just sin shifted by 1/4 of a wave)
모든 geometry에 sine function을 cos function으로 대체하면 파동의 1/4만큼의 방향으로 움직임.
3. waves bases on @N components?
pighead나 sphere와같은 입체적인 geometry와 함께 @N (Normal)에 sine function이나 cosine function을 적용하면 각각의 포인트가 향하는 방향의 위치에 따라 파동을 형성한다.
4. tight sine waves on red, medium cos on blue, a wide ramp on green, each driven by a different thing (position vs normal vs point number)
Normal을 cos에 적용시키기 위해 입체적인 3D 형태의 geometry를 사용하였다.
- VEX I have written:
float red = @P*ch ("SCALE_X"); // 좁은 파장의 웨이브를 형성하기 위해 1보다 큰 값의 스케일을 곱한다
float green = float (@ptnum)/ch ("SCALE_Y"); // 넓은 파장의 웨이브를 형성하기 위해 스케일을 나눈다
float blue = @N*ch ("SCALE_Z"); // 적당한 파장을 가진 웨이브를 형성
// each position, normal, ptnum에 따라 지정된 변수들을 알맞은 @Cd attribute에 store한다.
@Cd.r = sin (red);
@Cd.g = sin (green);
@Cd.b = cos (blue);
이해가 안되었던 부분:
- @P나 @ptnum이 아닌 @N (Normal)이 웨이브를 만드는 sin()이나 cos()같은 function들에게 적용되었을때 어떠한 과정을 통해 특정 쉐입을 형성하는지 궁금하다.
- Geometry Spreadsheet을 보고 각각의 수치들을 한눈에 파악하기가 어렵다.
공부하면서 들었던 생각:
생각보다 쓰면서 글이 길어졌다. Day 1 강의는 생각보다 엄청 길었다. 생각보다 할 수 있다는 생각과 와 이거 어떻게 하냐라는 생각이 동시에 든다. Normal Attribute가 강의에서 자세히 다루어지지 않아 조금 햇갈리지만 아마 다음 강의때 선생님께서 더욱 깊게 설명하시고 내가 완전히 이해하게 된다면 나중에 3번째와 4번째 Exercises를 더욱 자신있게 풀 수 있을거라고 생각한다.