오늘은 어제 했던 과제의 풀이를 진행했습니다.
작업 순서는 아래와 같습니다.
1. Character 준비 & 정리
2. Smoke Solver Setting
3. 전기효과
4. 몇가지 추가적인 particles
5. Cache 정리
이 중에서 오늘은 Smoke Solver Setting까지 진행했습니다.
density를 만드는데 있어서 새로운 노드를 배우기 위해서 mixamo에서 모션이 있는 fbx파일과 T포즈를 하고있는 fbx파일 두가지를 다운로드 받았습니다.
그리고 agent노드로 T포즈와 모션이 있는 fbx두가지 모두 가져와서 unpack해주었습니다.
그리고 손목위쪽의 점을 떼어내서 sphere를 Copytopoints로 위치 시켜주었습니다.
그리고 새로운 노드인 Point Deform을 사용해봤습니다.
T포즈 손목에 있는 스피어가 모션이 있는 fbx에서도 손목에 붙어있게 해줍니다.
첫번째 인풋으로 들어온 위치정보를 두번째 인풋과 대조해서 기준을 정하고, 두번째와 세번째 내용을 비교하면서 위치변화를 만드는것이 Pointdeform노드 입니다.
이 때 중요한것은 두번째와 세번째 인풋으로 들어가는 정보는 prim이 일치해야 합니다.
이번에는 점을 여러개 뿌려봤습니다.
모션이 생겨도 sphere가 잘 위치해있는것을 확인할 수 있습니다.
이번에는 fbx의 머리위에 링을 만들어보았습니다.
애니메이션이 들어간 fbx에도 잘 적용된것을 확인 할 수 있습니다.
다음은 첫번째 인풋으로 들어갈 부분에 어떤 효과를주고 애니메이션이 있는 fbx에 바로 효과를 준것과 pointdeform을 활용해서 효과를 준 차이를 알아보았습니다.
첫번째 인풋에 노이즈를 주고 비교를 해봤습니다.
왼쪽은 point deform을 활용한 결과, 오른쪽은 모션이 있는 fbx에 바로 효과를 준 결과입니다.
point deform을 활용한 결과는 noise가 fbx에 잘 달라붙어 있는데
바로 효과를준 오른쪽은 noise를 통과하는것처럼 noise가 붙어있지 않은것을 확인할 수 있습니다.
fbx의 모션을 쫓아가되 포인트의 위치규칙이 깨지지 않게하려고 사용하는것입니다.
포인트의 위치규칙이 깨지는지 확인해보기위해서 새로운 예제를 만들어보았습니다.
첫번째 인풋에 아래와같은 효과를 주었습니다. remesh를 통해서 point의 위치를 잘 파악할 수 있도록 했습니다.
효과를 바로준 오른쪽의 결과에서 point의 위치가 계속 바뀌는것을 확인할 수 있습니다.
trail로 v의 정보를 받았습니다.
움직임 v의를 시각화하면 더 큰 변화가 보입니다.
이제 아래부터 어제 과제에대한 풀이입니다.
density를 만들어줄 때 point deform을 활용해서 만들예정입니다.
이 때 원본 agent가 얼굴이나 부츠쪽 특정 구간에만 point가 몰려있기 때문에 SDF로 바꾼뒤 다시 polygons으로 만들어주고 remesh로 point가 일정하게 뿌려지도록 했습니다.
아래는 unpack바로 아래에 scatter로 점을 뿌렸을 때 결과입니다.
scatter로 뿌린점이 일정치 못하고 허리쪽은 안쪽으로 들어간것을 확인할 수 있습니다. 폴리곤의 크기가 일정하지 않아서 그렇습니다.
SDF로 바꾼뒤 다시 polygons으로 만들어주고 remesh로 polygons이 일정한크기로 만들어지도록 했습니다.
이 때 잘 정리된 polygons을 바로 pointdeform으로 넣어주면 아래와같이 늘어난 면이 있는것을 확인할 수 있습니다.
그 이유는 두번째 인풋으로 들어오는 T포즈에서 다리의 간격이 너무 좁기 때문입니다.
그래서 T포즈가아닌 animation중 적당한 프레임의 결과를 두번째 인풋, 기준으로 사용했습니다.
포즈가 고개를 숙이고있다면 아래와같이 폴리곤이 늘어날 수 있습니다.
계속 Clip Offset을 바꿔가면서 어떤 자세가 나와도 좋은 아웃풋을 얻을 수 있는값을 찾아야합니다.
턱이 가슴에 많이 가까운경우를 기준으로 쓰면 아래와같이 심하게 늘어나느것을 확인할 수 있습니다.
가장 괜찮은 순간을 찾았고 dopnet에서 사용할 source들을 만들어갈 차례입니다.
어제 배운내용입니다.
vdbfrompolygons로 SDF정보를 만들어주고 col이라고 이름을 지어줬습니다.
그리고 vdb from polygons로 trail에서 v값을 불러와 colvel로 저장을 해주었습니다.
colvel처럼 Surface Attributes를 사용할때는 fog나 SDF둘다 만들지 않아도 됩니다.
검은색 노드는 정보가 잘 만들어졌는지 확인하기위한 작업들입니다.
그리고 density를 좀 꾸며주었습니다.
fbx의 표면에서 연기가 나는데 전체면적이 아닌 일부 noise패턴이 적용된 부분에서 연기가 나도록하기위해 꾸며주었습니다.
pointdeform 아래서 진행하는것이 아닌 위 쪽 첫번째 인풋, 우리가 적용시킬 효과부분에서 꾸며주면 됩니다.
그러면 두번째 인풋을 기준삼아 세번째 모션이 들어간곳에 point의 위치정보가 잘 들어갈것입니다.
이 때 noise가 가만히 있는것이 아닌 몸을따라 위쪽으로 올라가는 효과를 만들기위해서 float to vecter라는 노드를 사용해서 y축에만 time값이 들어가도록 했습니다.
x,z에는 0을 넣어준다면 y값만 time에 의해서 값이 변동될것입니다.
그리고 fit을 통해서 흑백의 경계를 좀 더 선명하게 해주었습니다.
그리고 density정보로도 export해주었습니다.
scatter로 사용하기 위함인데, Density Attribute를 체크해주고 density를 기입해주면 됩니다.
pointdeform에 연결해도 효과가 잘 들어간것을 확인할 수 있습니다.
그 다음 vdb from particles를 통해서 표면에만 density가 존재하도록 해주었습니다.
Voxel Size * Minimum Radius in Voxels < Point Radius Scale이 되어야 합니다.
그 다음 Scatter의 점 개수와 Voxel Size와 Min Radius in Voxels값을 바꿔주면서 원하는 결과를 찾아가면 됩니다.
다음으로는 name으로 density의 정보가 temperature로 저장될 수 있도록 했습니다.
좀 많이 복잡해 보이지만 이제는 어떤정보가 어떻게 들어오는지 한눈에 들어옵니다. 뿌듯해요.
이 과정까지 강의가 한시간이 걸렸습니다. 그만큼 Source가 중요한 것입니다.
다음은 point deform 세번째 인풋으로 들어오는 모션이 있는 fbx에서 키감을 조절해주었습니다.
포효를하는듯한 자세를 길게 가져가고 뒷부분에서 호흡을 거칠게하는듯하게 루핑을 해주었습니다.
Clip Offset의 채널을 지워주고 키를 잡아주면 됩니다.
pointdeform에 넣어도 잘 적용된것을 확인할 수 있습니다.
다음은 dopnet에서 세팅을 만들어주고 각 field에 만들어준 source를 넣어줬습니다.
이 때 볼륨이 생성되는타이밍을 잡아주기위해서 density의 volume VOP에 mult를 적용해서 조절할 수 있도록 했습니다.
어제는 switch를 사용했는데 mult를 적용시키는것이 훨씬 정리돼 보이고 좋은거같습니다.
mult가 0이된다면 볼륨이 생성되지 않고 1이나 2가된다면 생성되고 그 양이 증폭될것입니다.
양을 증폭시키는것은 volume source에서 Source Scale 값을 바꿔서 조절할 수 있을것입니다.
이제 볼륨이 없어지도록 vel update에 gasdissipate를 적용시켜주었습니다.
이 값은 제가 더 만져보면서 익숙해질 필요가 있을거같습니다.
그 다음으로는 gas turbulence를 적용해보았습니다.
TWA님의 강의를 따라가면서 트윅하는시간이 거의 들지 않았지만 직접 한다면 한시간에서 두시간은 금방 사라질것이고 굉장히 쉽지않은 과정이 될것이라고 하십니다. 어제 과제를 진행하면서 욕심을 내볼까 하다가 시간이 늦어서 욕심내지 않았는데 너무 공감가는 말이었습니다.
그리고 temperature에서 일정부분은 더 뜨겁고 어떤부분은 뜨겁지 않게 volume VOP에서 noise로 온도정보에 noise값을 주었습니다.
그리고 VV를 달아서 색을 넣어줬습니다.
밀도가 높은곳에서는 하늘색 떨어질수록 보라에서 남색으로 가는것을 확인할 수 있습니다.
그리고 v값에 의한 볼륨의 이동값을 더 크게 만들어주기 위해서 volume source의 scale값을 올렸습니다.
움직이는 힘이 큰 도끼쪽을 보면 더 강하게 작동하는것을 확인할 수 있습니다.
그 다음은 바람에대해 묘사를 해보았습니다.
새로운 source를 만들어서 사용할 예정인데, box를 만들고 vdb와 vdbactivate를 활용해서 컨테이너를 만들어주고 그 안에 vf를 만들어 주었습니다.
이 때 volume VOP으로 바람의 방향을 정해주고 꾸며준 최종결과 다음에 mult를 해주면 바람의 세기를 음수를 적어주면 방향도 바꿔줄 수 있을것입니다.
이 때 음수값의 크기가 작다면 방향은 바뀌지 않지만 바람이 잠시 정체하는 효과를 줄 수 있을것입니다.
새로 만들어준 wind 라는 source를 vel field에 넣어줬습니다. 이 때 새로운 volume source를 꺼내 사용했습니다.
지속적인 바람보다 mult값에 키를줘서 강하게불다가 살짝 정체하고 다시 바람이 분다면 볼륨의 형태가 흥미롭게 바뀝니다.
이제 연기의 디테일을 한번 올려보았습니다.
연기가 생성되는 초기에 noise가 조금 더 생기도록 하기위해서 gas shred노드를 사용했습니다.
일전에 가로세로줄이 생기는 효과입니다. scale값을 생각보다 많이 낮춰줘야 합니다.
그리고 멀리서보면 이뻤던 볼륨이 부러지는 듯한 효과, gas disturb노드를 넣어주었습니다.
이 효과또한 디폴트로 힘이 너무 강하기때문에 아주 작은값을 넣어주었습니다.
볼륨을 꾸며주는것은 이정도로 마무리했습니다.
이제 filecache를 해주었습니다.
이 때 density뿐만 아니라 vel과 temperature값 모두 dopimportfield에서 지정해주고 저장해주었습니다.
div_size는 0.02입니다.
그리고 div_size를 0.01로 바꾸고 하나더 filecache를 해주었습니다.
시간이 좀 걸렸습니다.
용량이 53프레임 기준 20mb에서 108mb로 다섯배나 차이나는것을 확인할 수 있습니다.
그리고 voxel해상도 또한 크게 차이나는것을 확인할 수 있습니다. 3D입체이기 때문에 8배정도 차이가 나고 계산속도는 그 이상 차이가 생길것입니다.
또한 해상도가 바뀌면서 큰모양은 바뀌지 않았지만 상세한 모습이 바뀐것을 확인할 수 있습니다.
오른쪽이 0.01로 더 높습니다. 상세한 디테일에서 차이가 있습니다.
0.01로는 플립북을 얻는것도 시간이 좀 걸립니다..
오늘 진행을해보니까 어제의 방식과는 다른식으로 진행된 부분이 있었는데
어제 제가 만든 colvel의 값을 clamp해주는것도 아주 좋은방법으로 응용할 수 있을듯 합니다.
틀린게 아니라 다른방법이었으니까 숙제를해보면서 두가지방법 모두 제것으로 만들어가는것 같아서 뿌듯합니다.
TWA님은 강의를 마치시지 않고 전기를 만들러 바로 가신듯합니다.... 정말 치명적인 집중력이 아닐 수 없습니다..
오늘도 좋은 강의와 아이디어 제공해주시는 TWA에 감사드리며 다음 주 공부일기로 찾아 뵙겠습니다:D
https://www.twahoudini.com/home-old
TWA houdini
TWA 후디니의 정석 홈페이지에 오신 모든 랭글러 여러분 환영합니다.
www.twahoudini.com
'HOUDINI1_VOLUMES' 카테고리의 다른 글
Houdini1_Volume_11_Part2 (0) | 2023.03.07 |
---|---|
Houdini1_Volume_11 (2) | 2023.03.06 |
Houdini1_Volume_09 (2) | 2023.03.02 |
Houdini1_Volume_08 (0) | 2023.03.01 |
Houdini1_Volume_07 (0) | 2023.02.27 |