2020의 게시물 표시

1일 1깡의 - RestPosition

이미지
                      움직이는 캐릭터나 사물에 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 카톡상담방 두밥 그룹채팅방

1일 1깡의 - SideFX Lab 설치하기

이미지
후디니 18버젼에서 업그레이드 된 SideFX Lab은 플러그인처럼 사용할수 있는 노드들이 많습니다. 게임쪽을 연구하면서 만들어진 툴들인데 VFX 쪽에서도 상당히 유용할 듯합니다.  설치하는 방법을 알아볼까요?.  1. Shelf + 을 눌러서 SideFX Labs 라는 메뉴를 선택합니다.  2. Shelf 에서 Update ToolSet을 누르면 SideFX Labs 라는 창이 뜨고 install 할수 있는 메뉴가 뜹니다. 제경우에는 이미 설치가 되어있고 update를 할수 있는 메뉴가 나옵니다.  3. 설치를 마치면 후디니를 끄고 다시 시작합니다.  그러면 그림과 같이 Shelf 에 아이콘들이 들어오고  툴을 사용할수 있는 상태가 됩니다. 쉽죠? 궁금한게 있으세요~~? 이곳에서 함께 나눌수 있어요. 두밥 1:1 카톡상담방 두밥 그룹채팅방

1일 1깡의 - Vex 나만의 라이브러리 만들기

이미지
vex를 사용함에 있어서  반복해서 사용하는 함수 라이브러리를 만들어서 사용하면 유용할때가 있습니다.  나만의 랜덤 함수를 만들어보겠습니다. myRandom 이라는 함수고 이것은 후디니에 있는 함수가 아닙니다. #include 에서 나만의 myRandom.h 파일을 불러왔습니다.  myRandom.h 파일의 구성은 이렇습니다.  float myRandom(float min;float max;int pt) {     return rand(pt)*(max-min)+min; } myRandom(minvalue, maxvalue, int(정수)) 로 이루어져있는 함수입니다.  결과 값은 1과 4 사이의 값을 return 합니다.  노트패드 하나를 열어서 myRandom.h 라고 파일을 만들어준후에 위의 내용을 적어주고 저장합니다.  그리고 wrangle 노드에서  #include "경로/myRandom.h" 이라고 하면 자신이 만든 라이브러리 파일을 불러올수 있습니다.  쉽죠?. ~  궁금한게 있으세요~~? 이곳에서 함께 나눌수 있어요. 두밥 1:1 카톡상담방 두밥 그룹채팅방

1일 1깡의 - Houdini Interface 소개

이미지
후디니 기초 인터페이스 강좌  궁금한게 있으세요~~? 이곳에서 함께 나눌수 있어요. 두밥 1:1 카톡상담방 두밥 그룹채팅방

1일 1깡의 - Houdini To Maya Alembic Export

이미지
오늘은 후디니에서 만든 RBD geometry를 마야나 다른 소프트웨어로 옮기는 방법에 대해서 알아보고자 합니다.  스튜디오마다 파일을 transfer 하는 방법은 조금씩 다른데 파이프라인이 잘되어있는 회사에만 있다보면 이과정에서 많은 에러를 만나게 됩니다. 최근에 만났던 에러들을 해결하는 과정에서 저와 같은 고민을 했을것이라고 생각한 분들을 위해서 준비했습니다.  RBD 시뮬레이션이 끝난 Pack primitive데이터를 abc 캐쉬로 보내려고 합니다. 마야의 scene scale 이 후디니보다 크기때문에 작업시에 줄였던 사이즈 만큼 다시 원래의 크기로 돌려 보냅니다. 이경우에는 마야에서 후디니로 불러온후 0.05  로 크기를 줄여서 작업을 했었기 때문에 내보낼때는 uniform scale을 20 배로 높여서 원래의 크기로 돌려놓았습니다. 그리고 unpack을 해주는것을 권합니다. unpack 없이는 가끔 에러를 만나게되기도 합니다. 마지막으로 가장중요한 abc cache 하기  ROP Alembic Output 노드를 만들고 Hierarchy 텝에서 Build Hierarchy From Attribute를 체크해주고 Prim Attribute에 Path Attribute가 들어있는지 확인합니다.  대부분의 경우 이렇게만 해도 문제없이 넘어가는데 스캔데이터를 사용했다든지 모델링에 uv가 두개로 들어온다든지 하는경우가 발생합니다. 그럴때는  Face Sets를 No Face Sets로 놓고  uv set이 두개로 들어올때는 마야의 기본 uv set인 map1 으로 additional UV attributes에 적용하면 하나의 uv set만 부를수 있게 됩니다.  그럼 오늘도 열공 ~~~!  궁금한게 있으세요~~? 이곳에서 함께 나눌수 있어요. 두밥 1:1 카톡상담방 두밥 그룹채팅방

1일 1깡의 - Vector Addition

이미지
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) - Pack Primitive Rotation

이미지
1일 1깡의(Houdini Tip) - Pack Primitive Rotation Pack Primitive는 오브젝트를 하나의 point로 인식하게끔 referencing 한다. 예를들어 box geometry에는 8개의 point가 있지만 pack을 하게 되면 오브젝트의 가운ㄷ 1개의 point만 생성된다. 만약에 3개의 Pack Primitive 오브젝트가 있고 각각의 오브젝트에 orient 값을 적용하고 싶다면 copy sop에서 사용하는 @orient 값은 Pack의 Rotation 값에 아무런 영향을 주지 못한다. Pack Primitive에서는 intrinsic 데이터를 통해서 rotation, 값을 적용할수 있다.  primintrinsic 값중에 transform 은 matrix3 으로 rotation,scale, 값을 컨트롤 할수 있다.  궁금한게 있으세요~~ 이곳에서 함께 나눌수 있어요. 두밥 1:1 카톡상담방 두밥 그룹채팅방

후디니특강 - 헐리우드 FX 실무자가 알려주는 Tips and Trick

이미지
오랫만에 비버하우스에서 특강을 진행합니다.  재미있는 이펙트 tip & trick을 준비했습니다.  [비버하우스] Houdini FX 특강 정보! 간만에 찾아온 후디니 FX 특강입니다!  한국시간 7월 5일 일요일 오전 10시! 자세한 내용은 신청서에서 확인해 주세요.  비버하우스에 신청서 작성하기 궁금한게 있으세요~~ 이곳에서 함께 나눌수 있어요. 두밥 1:1 카톡상담방 두밥 그룹채팅방

1일1깡의(짧은 Houdini tip) - Camera based culling using VEX

이미지
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 카톡상담방 두밥 그룹채팅방

1일1깡의(짧은 Houdini tip) - Caching Geometry to Maya and Katana

이미지
1일1깡의(짧은 Houdini tip) -Caching Geometry to Maya and Katana 최근 작업에서 지브러쉬에서 만든데이터를 Voronoi Fracture를 한후에 물체가 없어졌던것이 한조각씩 나타나는 이펙트를 만들었습니다. 그렇게 가공한 데이터(alembic)를 Katana로 보내서 RenderMan과 연결해서 랜더링을 해야하는 상황이었습니다. 이때 수많은 에러를 만나게 되었고 이것때문에 하루종일 고생을 하였습니다. Houdini에서는 멀쩡하게 있던 UV가 사라진다던지 viability가 제대로 작동하지 않는다던지 하는 것이죠 . 아마도 이러한 경우를 만나게 될텐데요. ROP_alembic_output에서 Voronoi Fracture를 Fracture Geometry 카타나로 보낼때 Hierarchy > Build Hierarchy Frame Attribute 을 on Geometry> Face sets: No Face Sets (or UVs will get broken) uv가 안들어오는 경우도 있는데 inside group의 UV를 Attribute promote를 이용해서 point attribute로 옮겨줬을때 해결되는 경우도 있습니다. promote them to Point (from Vertex) in Houdini. 궁금한게 있으세요~~ 이곳에서 함께 나눌수 있어요. 두밥 1:1 카톡상담방 두밥 그룹채팅방

1일1깡의(짧은 Houdini tip) - Velocity

이미지
1일1깡의(짧은 Houdini tip) -  Velocity velocity는 후디니사용자가 가장 많이 신경쓰는 attribute 입니다. 왜냐하면 원하는 움직임을 표현하기위해서는 velocity를 잘 다루어야 합니다. Velocity란 "어떠한 물체의 위치 변화를 뜻하는 변위를 변화가 일어난 시간 간격으로 나눈 값이다. " -위키백과  이걸 후디니 vex 로 표현해볼까요?. velocity는 vex에서 @v 이렇게 표현 됩니다. global variable(함수)이기 때문에 후디니에서 @v라고 쓰면 알아듣습니다. 방향(direction) , 크기(magnitude) 를 가지는 백터타입 입니다. 심플공식 velocity = ( P2 - P1 ) / Time // wangle---------------------------------------------- vector P1 = set(0,0,0); vector P2 = set(2,2,0); v @v = (P2 - P1) / @TimeInc; // -------------------------------------------------------- 이 공식에서 velocity의 힘(magnitude)만들 추출하고 싶다면 f@magnitude = length(P2-P1); 혹은 방향(direction)을 따로 원한다면 v@direction = normalize(P2-P1); 위의 velocity의 값은 방향 * 크기로 표현됩니다. 이것을 따로 분리해서 방향만을 바꾸고자 하거나 혹은 힘만을 바꿀수 있습니다. @v = @direction * @magnitude; 이외에도 Velocity를 다루는 여러 공식들이 있습니다. 궁금한게 있으세요~~ 이곳에서 함께 나눌수 있어요. 두밥 1:1 카톡상담방 두밥 그룹채팅방