움직이는 캐릭터나 사물에 Procedural 한 쉐이더나 Noise 패턴 혹은 scattering point를 추가 하고자 할때 Rest Position을 이용합니다. 그렇지 않고 작업을 했을때는 패턴이 흐르는 느낌이 들거나 scatter의 point위치가 바뀌게 되어 제대로된 결과값을 갖기 힘듭니다. Rest Position이란 사물이 고정되어있을때의 위치값을 이야기 합니다. https://youtu.be/OJ2wSqlL6sw 1. Houdini Chracter인 crag을 unpack 합니다. 2.. point vopsop에 tubunoise를 Cd에 연결한후에 play 해봅니다. 노이즈가 미끄러지듯이 흘러가는것을 확인할수 있습니다. 3. unpack 노드 아래에 rest node를 연결하고 오른쪽에 TimeShift노드를 연결합니다. TimeShift의 Frame을 $F에서 1로 바꿔주어 rest position상태를 만듭니다. 4. 처음에 만들었던 noise 노드 P에 생성한 bind노드를 연결합니다. rest (vector)로 Name을 바꿔줘야합니다. 5. Play 하면 노이즈 패턴이 캐릭터에 붙어서 움직이는 것을 확인할수 있습니다. 궁금한게 있으세요~~? 이곳에서 함께 나눌수 있어요. 두밥 1:1 카톡상담방 두밥 그룹채팅방
Vector Addition 개요 및 목적 이번 챕터에서는 Vector구성요소, 방향(direction)과 길이(length) 혹은 크기magnitude)을 컨트롤 하는 방법으로 Vector Addition과 Subtract을 소개합니다. 오브젝트나 포인트 사이의 거리나 넓이를 계산하거나 벨로서티의 방향을 같은 힘의 크기로 바꾸거나 변형을 주어야 할때 유용할 것입니다. What is Vector? Vector는 방향(direction)과 길이(length or Magnitude) 를 가지고 있습니다. Vector = Direction * Magnitude 로 분리할수 있습니다. 이것은 후디니에서 Velocity를 컨트롤 할때 좋은 힌트가 됩니다. 방향설정후힘을 자신이 원하는 값으로 언제든지 변화를 줄수 있습니다. Velocity(속도) vector를 Houdini wrangle node 에서 다음과 같이 정의 할 수 있을것입니다. vector Direction = normalize(@v); float Magnitude = length(@v); @v = Direction * Magnitude; 이와 같이 후디니의 펑션을 이용하면 간단하게 결과를 얻을수 있다. 펑션이 담고 있는 수학적인 내용은 다음과 같다. Vector의 방향을 구하는 방법(Normalize) Normalize는 벡터의 길이는 1의 단위로 만드는 것입니다. 이렇게 함으로서 수학적으로 계산이 간단해지고 데이터 활용에 많은 가능성이 열리게 됩니다. Houdini Wrangle vector Direction = normalize(@v); 길이를 구하는 공식(Magnitude, length formula) 길이를 구하는 방법으로 피타고라스 정리를 사용해보겠습니다. * 피타고라스 정리 : 직각 삼각형의 두 직각변 를 각각 한 변으로 하는 정사각형 면적의 합은 빗변를 한 변으로 하는 정사각형의 면적과 같다 c 2 = a 2 ...
1일1깡의(짧은 Houdini tip) - Camera based culling using VEX 카메라 Viewport에서 보이는 부분만 culling 하는 wrangle 입니다. ndc는 카메라의 Frustum 정보인데요. ndc[0] = 좌우 ndc[1] = 위아래 입니다. 카메라하고 그리드를 생성후에 pointwangle을 연결하여 아래에서 수치를 바꿔보면 이해가 됩니다. ndc 정보를 이용하여 카메라의 거리에 따라서 혹은 Frustum에 따라서 point size를 조절할수도 있고 LOD 형태의 테크닉을 구현할수도 있습니다. // VEX wangle vector ndc=toNDC("/obj/cam1",@P); // 카메라 float ov = 0; @Cd = ndc; if(ndc[0]-ov<0 || ndc[0]+ov>1 || ndc[1]-ov<0 || ndc[1]+ov>1 || ndc[2]>0){ removepoint(geoself(),@ptnum); } 궁금한게 있으세요~~ 이곳에서 함께 나눌수 있어요. 두밥 1:1 카톡상담방 두밥 그룹채팅방
댓글
댓글 쓰기