TWAHOUDINI 33

Joy of Vex - Day 9-2: dot and cross product, fake lighting combing normals to a surface, vector maths primer

중요했던 부분: - 지난번에 내용한 것 복습 normalize() - 크기 1짜리 vector로 만드는 과정 dot() - 각도를 알려주는 Function. 빛이 물체에 닿았을때 normal과 그 포인트가 광원을 향할때의 각도. 어떤부분은 밝게 아님 어둡게를 지정함 cross() - 두 vector의 동시에 수직이 되는 vector vector의 연산 - 방향을 정해줄때 목표지점에서 시작점을 빼줘야 원하는 방향을 구해주는 vector연산이 된다 - dot()의 활용 dot() 즉 내적으로 구한 각도값으로 light과 geometry가 있을때 빛이 어느 방향으로 쐬어지는지 @Cd와 같은 색깔값으로 나타낼 수 있다. @Cd = @N.y; // 위에서 geometry에 빛을 직빵으로 내리꽂는 느낌 @Cd = ..

Joy of Vex - Day 9-1: normalize(), dot(), and cross()

중요했던 부분: - vector 방향과 크기를 가지는 값. 후디니에서 말하는 Vector는 위치정보를 하나를 가지고 있지만 만약 그때 방향과 크기를 논하고 싶다면 원점을 기준으로 본 방향과 크기가 될 것이다. - normalize(): Normalize Function 방향은 같지만 크기가 1인 벡터값으로 전환됨. normalize()은 vector의 값을 인풋으로 지정함으로써 결과값으로 vector값을 내보낸다. 원점으로부터 위치벡터를 동일한 방향으로의 크기 1짜리가 있도록 변환하는 function v@A = @P; // @P (포인트 위치값)을 vector attribute A에 저장 v@a = normalize (@A); // 원점으로부터 방향은 같지만 크기가 1인 vector a를 vector a..

Joy of Vex - Assignment #1

중요했던 부분: 우선 해설강의 없이 만들려고 하였지만 포인트들 하나씩 각기 개별로 날라다니게 하는 이펙트와 더불어 도저히 addpoint()로 minpos()로 생성된 여러개의 포인트들을 생성하는것이 불가능 하다고 생각하고 또 무엇보다도 primitive없이 minpos()를 통해 포인트를 생성시킬 수 없다는 사실을 몰라 어쩔 수 없이 해설강의를 참조하여 만들어보고 그다음엔 해설 없이 혼자서 직접 만들어보았다. 근데 그러다보니 졸지에 선생님의 방식을 따라한게 된것 같다... 죄송합니다...ㅠ 우선 sphere 두개로 두 세력들의 기반이 되는 geometry들을 생성해준뒤 add 노드들을 연결하여 포인트들만 남겨둔채 geometry의 메쉬들을 모두 삭제하였다. 그리고 Point Jitter을 통해 포인트들..

Joy of Vex - Recap of Week 2

복습한 내용과 다시봤더니 이해되는 부분: Day 5: modulo, more arithmetic tricks (quantising), but show that often a chramp is easier (eg stepped chramp); Day 5 에는 Modulo (%)을 이용한 식을 배워 어떠한 수치들을 division할때 나머지를 구해 attribute에 적용하는 것을 배웠다. 또한 floor()이 내림으로써, ceil()이 올림으로써, rint()가 반올림으로써 그리고 trunc()가 내림으로써 float값들을 integer로 변환시키는 것을 알 수 있었다. 이러한 function들로 통해 만들어진 수치들을 attribute 즉 @P.y 같은 높이값에 적용시키면 point number가 할당된..

Joy of Vex - Day 8: noise, various types, how it can be scaled, vector vs scalar noise, why you might use vops here instead

중요했던 부분: - random(): Random Function 그야말로 값이 주어질때 새로운 random한 결과를 돌려주는 function. 만약 random()으로 생성된 파형을 완전히 쪼개 준다면 각각의 값에서 새로운 독립된 시행이 나와 어떤 분포 안에 수없이 많은 값들이 나온다. - Noise(): Noise Function 이미 준비가 되어잇는 패턴에 대응된 값을 찾아주는 function. random()과는 다르게 인풋의 값이 변화함에 따라 흐름이 있는 random값을 반환한다. 커다란 흐름이 잇는 상태에서 random값을 제어를 해줌으로 노이즈가 가진 고유한 흐름을 유지한다. - Frequency, Offset & Amplitude: Frequency: 패턴의 사이즈가 비율로써 줄어드는 것..

Joy of Vex - Day 7: using the other inputs on wrangles, do things to geometry based on other geometry

중요했던 부분: - point(): Point Function point()은 윗 geometry나 attribute관련 노드들이 attribute wrangle노드로 연결 되었을때 각각의 포인트 넘버에 대한 attribute 정보들을 불러오는 function이다. point (노드가 들어간 input의 순서, 불러오려는 attribute, 포인트 넘버의 대한 정보) geometry가 wrangle 노드에 연결되었을 때의 예시: eg) 보통 attribute에 값들을 지정해주기 위해 썼던 코드 방식은: vector color; // vector color라는 변수가 있는데 color = {1, 0, 1}; // color는 (1, 0, 1)으로 지정되어있다. @Cd = color; // @Cd 색깔값에 ..

Joy of Vex - Day 6: point wrangle vs prim wrangle vs detail wrangle, user defined attributes

중요했던 부분: - Point 후디니가 제공해주고 있는 3D 공간상에서 다룰 수 있는 가장 작은 단위의 결과물이다. 필수 요소: @P - 3D상에서 위치를 지정해주는 각각의 X/Y/Z값. @ptnum - 모든 포인트들은 각기 숫자에 할당하는 각각의 포인트 넘버를 가지고 있다. 보통 포인트 넘버는 무조건 0부터 시작한다. 선을 형성할때는 모든 원하는 포인트들을 연결하여 선을 구성하고 이 모인 선들의 안쪽을 채워주면 면을 형성하는 것을 알 수 있다. - Vertex & Primitive 이 모든 과정을 제작과정이라 가정했을시에 point는 재료같은 것이고 vertex는 제작 매뉴얼이라고 가정하면 된다. vertex는 특히 "반드시 이와 같은 순서로 제작하라"라고 명령하는 정보들을 가지고 잇다고 보면 된다. ..

Joy of Vex - Day 5: modulo, more arithmetic tricks (quantising), but show that often a chramp is easier (eg stepped chramp);

중요했던 부분: - %: Modulo 모듈로, 즉 어떤 수를 어떤 수로 나누었을때 나머지가 생기는데 그 결과값을 도출해내는 것이 모듈로임. eg) 8%6 = 2 eg) int num = chi ("NUM"); // 나누어지는 숫자 int div = chi ("DIV"); // 나누는 숫자 int result = num%div; // num에서 div로 나누었을 때 생기는 나머지값을 int variable result에 저장하라 // 모든 변수의 값들을 geometry spreadsheet에서 보기 위해 attribute로 변환시켜라 i@num = num; i@div = div; i@result = result; 만약 num과 div가 모두 float이고 result를 float으로 선언하였을때 eg) f..

Joy of Vex - Recap of Week 1

복습한 내용과 다시봤더니 이해되는 부분: Day 1: basic assignment, component assignment, arithmetic manipulation - Day 1때는 @P와 @Cd값들을 이용하여 특정 geometry에 vex로 영향을 주는 기본적인 식을 완성해보았다. 그리고 ch()과 sin()같은 function들을 통해 기본적인 파형을 나타내는 geometry를 생성하는 것을 배웠다. - @P나 @ptnum이 아닌 @N (Normal)이 웨이브를 만드는 sin()이나 cos()같은 function들에게 적용되었을때 어떠한 과정을 통해 특정 쉐입을 형성하는지 궁금하다. - Geometry Spreadsheet을 보고 각각의 수치들을 한눈에 파악하기가 어렵다. 1. @N (Normal..

Joy of Vex - Day 4: chramp, using on attrib components, on time, on reranging outputs

중요했던 부분: - chramp(): Channel Ramp Function 스팅고님 일기에서: @P.y = chramp ("TWA", K); // 변수 K값을 이용하여 @P.y에 적용하세요라는 의미이다. ch()의 파라미터처럼 유저가 직접 인터페이스를 통해 파형을 직접 그릴 수 있게하는 function. 직접 파형 (정확히는 ramp) 쉐입을 그릴수 있는 파라미터를 생성하는 function. 보통은 그래프 모양으로 유저가 조정할 수 있게끔 설계되어있으며 y와 x축을 기반으로 파형의 형태를 그릴 수 있게끔 한다. eg) @P.y = chramp ("TWARAMP", @P.y); // @P.y attribute에 해당하는 파형을 직접 그릴 수 있게 하는 parameter를 생성하여라. chramp()에 있..