FX/Houdini_Joy of VEX 31

Joy of Vex - Recap of Week 4

복습한 내용과 다시봤더니 이해되는 부분: Day 12-1: ripple effect Day 12의 첫 강의 본 강의에 들어가기 전에에 관에서는 Day 7에 배웠었던 nearpoint()에 대한 복습을 조금 더 심화적으로 할 수 있었다. nearpoint()에서 배웠던 주된 내용들은 효과들을 geometry에 적용하였을때 nearpoint()로 생성된 포인트를 중심으로 효과를 나타나게 세팅을 해주었을때 어느 특정된 점들을 중심으로 파형같은 효과들이 생기는 것을 알 수 있었다. 또한 본격적으로 빗물이 물같은 강가에 떨어질때 생기는 파형을 chramp()와 같은 효과들을 사용해서 어떻게 만드는지에 대해서 배워보았다. 하지만 nearpoint()의 주된 단점은 한 grid상에서 효과들을 중첩시키려 했을때 효과들..

Joy of Vex - Day 13: for loops (ties nicely into arrays)

중요했던 부분: - foreach loops: foreach 반복문 foreach는 기본적으로 array를 요구사항으로 함으로써 그 array라는 모든 요소에 대해 동일한 작업을 반복수행하주려는 반복문이다. foreach (array안에 들어있는 각각의 정보를 대변하는 변수; array) {} 이러한 형식으로 구성된다. foreach (pt, pts) { } 해석: 우리가 가진 모든 pts의 array에 대해서 작업을 수행해 주세요. 이 pts가 가지고 있는 array의 값을 pt가 대변해주겠습니다. // 이 값을 가지고 있는 array variable twa생성 int twa[] = {2, 7, 3, -2, 8}; i[]@twa = twa; // 이 값을 attribute twa로 나타냄 foreach..

Joy of Vex - Day 12-3: nearpoints, arrays

중요했던 부분: - nearpoint(): Nearpoint Function 지난 시간에 배웠듯이 nearpoint()를 사용한채 grid상에서 파형을 여러개 생성시킬때는 구획이 나눠지는 단점이 있다. 그러므로 중첩을 표현하기 위해 모든 포인트의 정보를 불러와 그리고 효과에 대한 식의 각각 포인트를 넣어주면 거기서 구한 fxA, fxB, fxC와 같은 효과를 생성해 주는 변수들을 모두 누적해 줌으로써 중첩의 효과를 만들어 줄 수 있다. 하지만 이렇게 만들어 주었을때 코드가 굉장히 길어지는 단점을 초래한다. - nearpoints(): Nearpoints Function nearpoints()는 가장 가까운 포인트의 위치값을 하나가 아닌 여러개를 찾아준다. 만약 세개의 점이 있다고 했을때 첫번째로 가까운점..

Joy of Vex - Day 12-2: overlapping effect

중요했던 부분: - 간단한 코드방식을 통해 grid상에서 effect값에 radius를 조절하는 방법 우선 본격적인 강의에 들어가기 앞서 grid와 point를 이용하여 빨간 원을 생성하는 방법을 알아보았고 그의 radius값을 유동적으로 조절할 수 있게끔 코드를 작성하였다. 아래 사진처럼 grid와 point 세 개를 wrangle로 연결한 다음 값을 바꿀때마다 각각의 포인트에 해당하는 effect들을 Grid상에서 나타날 수 있게끔 하였다. 우선 add 노드로 생성된 모든 포인트들을 merge로 묶어서 한눈에 보이게끔 세팅하였고 이는 총 포인트가 세 개 임으로 0/1/2번 포인트로써 한번에 나타나도록 세팅하였다. @Cd = 0; // 우선 색깔값을 0으로 초기화 검정으로 바꿈 /* 아래 포인트들을 p..

Joy of Vex - Day 12-1: ripple effect

중요했던 부분: - 심화적인 nearpoint() 복습 nearpoint()는 0번 wrangle input에 연결된 geometry로부터 1번 wrangle input으로 연결된 geometry를 구성하는 point들중 제일 가까운 point의 포인트 넘버를 반환하는 function이다. int pt = nearpoint (1, @P); /* 0번 인풋으로 연결된 geometry로부터 1번 인풋으로 연결된 Geometry를 구성하는 point들중 가장 가까운 점들을 찾아 그것들의 포인트 넘버를 반환하여 integer variable pt에 저장하여라*/ i@pt = pt; // integer variable pt를 attribute으로써도 나타내어라 아래와 같이 Houdini상에서 1000개의 포인트를..

Joy of Vex - Recap of Week 3

복습한 내용과 다시봤더니 이해되는 부분: Day 9-1: normalize(), dot(), and cross() Day 9-1에는 각기 다른 Function. normalize()와 class() 그리고 dot()에 대해 기본적인 원리를 배웠다. normalize()는 방향은 같지만 크기가 1인 vector값으로 vector값을 전환해주는 Function으로써 하나의 vector 수치가 들어가고 vector값을 반환해준다. class()는 두 vector가 공유하고 있는 평면에 수직이 되는 방향으로 vector값을 돌려받는다. class()는 기본적으로 두 vector값을 받아 하나의 vector값을 되돌려준다. dot()은 두 vector가 있을때 그 사이의 각도를 나타내 준다. 이때 식은 dot(A..

Joy of Vex - Day 11: if statements

중요했던 부분: - If Statement (Conditional: 조건문) 지금까지 우리가 써왔던 식들은 굉장히 직선적이고 명령적이었다. 사용자인 우리가 후디니에게 직접적인 명령만을 하였다. 하지만 if Statement를 통해 후디니에게 판단의 기회를 내려준다. eg) if (A) { // 만약 A라면 B; // B를 수행해주어라 } @Cd = 0; // @Cd 색깔값으로 0으로 초기화 if (@P.x > 1) { // 만약 geometry의 @P.x의 수치가 1보다 크다면 @Cd = {1, 0, 0}; // @Cd 즉 색깔값이 빨간색이 된다. } /* 모든 점이 가진 @P에 대해 후디니는 판별을 할 것이다. 3보다 큰지 작은지. 만약 3보다 크다면 아래의 식을 수행한다*/ float d = leng..

Joy of Vex - Day 10: relpointbbox

중요했던 부분: - 0 부터 1까지로 각각의 포인트의 대한 range를 설정해주는 기본적인 방법 만약 line즉 선이 있는데 포인트가 많을때 @P.x값은 기본적으로 원점 (0, 0, 0)을 기준으로 모든 포인트들의 위치를 할당한다. 이렇게 되면 나중에 chramp()와 같은 0에서 1까지의 범위만을 사용하여 파형을 직접 구성해준다든가 할때 어려움을 느낀다. 이럴때 손쉽게 vex를 사용하여 새로운 attribute를 만들어 모든 포인트에 대하여 0에서부터 1까지의 수치들을 각기 다 할당해 줄 수 있다. // 모든 포인트에 대하여 0에서 1까지의 수치들을 float Attribute rel로써 나타내어라 f@rel = float (@ptnum)/(@numpt - 1); // @numpt에 float값이 된 ..

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..