본문 바로가기

Houdini

[Udemy] 27-28강. 후디니 Pyro Smoke Introduction

위의 Shelf에 보면 똑같은 내용으로 구성된 Simple FX와 Pyro FX shelf가 있다는 것을 알 수 있다.

Simple FX가 더욱 최신 것이다! Pyro는 나중에 없앨 수도 있다고 한다. 앞으로 불, 연기 효과를 만들 때 Simple FX Shelf를 이용하면 될 것 같다.

이번 글에서는

 

1. Simpe Bilowy Smoke

2. Smoke Collision

3. Caching

 

을 정리해보겠다.

 

 

< Simple Billowy Smoke (Pyro Configure Billowy Smoke 노드) >

Shelf에서 Simple Billowy Smoke를 클릭하고 enter를 눌러 불러와보자. 혹은 Geo를 생성하고 들어가 Pyro Configure Billowy Smoke 노드를 생성해도 된다.

 

그러면 자동으로 노드들이 저렇게 생성된다. 이제 Network창의 노드를 하나하나 뜯어볼 것이다.

 

 

1. 이미터의 모양

더보기

우선 첫번째 노드. 여기는 그냥 모양이다. FX가 생성될 emitter의 모양을 연결해주면 된다. sphere든 box든 tube든 파티클이 나올 모양을 연결해주면 된다. 주의해야 될 점은 tube 모양으로 생성할 경우 뚜껑을 닫아줘야 emit된다는 것! End Caps를 체크하거나 PolyCap 노드를 추가하자.

 

 

2. PyroSource 노드

더보기

 

PyroSource 노드는 위에서 생성한 geometry에 points를 생성한다. 기본적으로 FX의 density, temperature Attribute를 생성한다. density와 temperature 말고 다른 것도 추가할 수 있다. 추가하는 방법은 저기 Initialize를 열어서 다른 세팅으로 바꿔주면, 그 세팅에 맞는 Attribute가 자동으로 생성된다. 혹은 Attribute 칸을 +, - 하고 어떤 Attribute를 추가할지 정해줘도 된다. 이렇게 설정한 것은 Point Attribute가 되어 뒤의 PyroSolver에서 이용될 것이다.

 

 

3. Attribute Adjust Vector

더보기

이 노드는 PyroSource에서 생성한 points에 velocity값을 준다. 이를 통해 연기에 랜덤한 direction이 생긴다. 노드를 MMB 클릭해서 정보를 봐보자. v(velocity)라는 Arrtibute가 생성되었음을 알 수 있다. 이 랜덤한 direction을 눈으로 보고 싶다면

저 빨간 박스 친 아이콘을 선택한 후 재생해보자. 위 사진처럼 노란색 선이 휘날릴텐데 저게 각 point들의 Vector 값이다. 

 

 

4. Attribute Adjust Vector 노드

더보기

이 노드는 points를 volume으로 바꿔준다.

만약 FX의 속도를 줄이고 싶으면 여기 Amplitude를 조절해주면 된다

 

 

5. Pyro Solver 노드

더보기

노드의 파라미터 창에서 Sourcing을 클릭해보자. 아까 생성했던 Attribute들을 assign해주는 세팅이 나온다.

Source Volume 부분이 내가 만들었던 Attribute 이름을 넣어주면 되고, Target Field에는 생성한 attribute를 PyroSolver의 어디에 assign해줄지 정해주면 된다. 그리고 끄고 싶은 설정이 있으면 체크박스(Activation)를 꺼주면 된다. 옛날 버전이란 다른 듯? 후디니 19버전에는 activation이 slider로 되어있는데 20버전에서는 체크박스로 바뀌었다

Source Scale은 걍 조절해보면 알꺼임. density에서 source scale을 올리면 밀도가 높아져서 smoke가 더 생길 것임. 밀도는 뒤에 Pyrolook에서도 (Density Scale이라고 있음) 조절할 수 있긴 하다. 그러니깐 Smoke의 양이 너무 많으면 이걸 줄이면 된다. Look탭에도 Density 조절창이 있긴 한데 여기서 줄이는 것은 이미 연산을 한 후에 줄이는 것이라서 smoke의 양을 줄이고 싶으면 Sourcing 탭에서 조절하자.

 

 

그다음 Shape으로 가보자. 여기서는 Wind, Disturbance, Turbulance 등의 세팅을 조절할 수 있다. Disturbance와 Turbulence는 비슷한건데 Disturbunce는 연기의 모양이나 움직임을 바꾸지 않고 디테일이나 노이즈를 더해줄 수 있다.

 

 

여기는 Fields 설정창이다. 여기서 Dissipation (사라지는 속도)를 정할 수 있다. 값을 올릴수록 연기가 빨리 소멸된다.

 

 

여기는 Setup 탭. Voxel Size는 화질을 의미한다. Voxel 수가 많을수록 더 고화질의 FX가 생성된다. voxel size가 높을수록 무조건 좋은 것은 아니다. 실사처럼 보이지 않을 수도 있다. 모든 것은 내가 만든 효과에 맞게 주면 된다.

그리고 아래에 Cache Memory가 있다. 캐싱을 안할거면 이걸 끄면 된다. 캐시 데이터 크기 limit도 정해줄 수 있다.

 

 

 

6. Pyro Bake Volume 노드 (Pyrolook)

더보기

이 노드는 연기의 material 같은 기능을 한다. 실제 material은 아니고 연기 룩뎁 느낌? 한글로 번역하니깐 느낌이 잘 안살아서 영어 그대로 가져오면 It enhances the look of the smoke or the pyro to match the rendering. 이 노드 없이 그냥 렌더를 돌리게 되면 뷰포트에서 보던 모습과는 완전히 다른 모습으로 보일 때가 있다.

material에는 기본적으로 Pyro_Shader가 들어가 있고 Density Scale이나 Color 등을 바꿀 수 있다. 여기서 값을 바꾼다고 해서 다른 노드처럼 다시 1프레임으로 돌아가서 재생할 필요는 없다. 실시간으로 바뀐다! 왜냐면 material을 이용하기 때문.

 

 

 

< Smoke Collision >

이제 연기가 box같은 곳에 Collision이 적용되게 해보자. 방법은 정말 간단함!

일단 콜리전이 적용될 박스를 생성하자. 그다음 이것을 PyroSolver의 두번째 input에 연결하면 끝!

반드시 두번째 input에 연결해야 한다. 왜냐면 첫번째 input은 그냥 plain 그 모양 그대로의 콜리전이고 두번째 input이 VDB의 형태를 띄기 때문! Null로 input들을 연결해서 확인 비교해보자.

그러면 연기가 박스에 부딪힌다!

 

 

 

 

< Caching Simulation >

FX를 캐시데이터로 저장하는 것은 필요하다! 만약 어떤 효과를 몇시간에 걸쳐 렌더링한 후 후디니를 껐다. 그 다음날 효과를 다시 보고 싶으면 몇시간동안 렌더를 한번 더 해야한다..! 그리고 일단 한번만 캐싱 해놓으면 시뮬레이션 돌릴 때 빨라지니깐! 캐시데이터가 있으면 CPU랑 메모리는 더이상 시뮬레이션에는 신경 안쓰고 렌더링에만 신경쓸 수 있게 됨. 캐시가 없다면 시뮬레이션+렌더링을 동시에 해야돼서 아마 크래시 날 듯^^ 그리고 또 좋은 점은 렌더링하다가 크래시 나도 캐시가 남아있어서 다시 이어서할 수 있다는 점!

 

 

그래서 캐시는 어떻게 하냐면 ROP Geometry Output 노드를 생성하면 된다

pyrolook은 머티리얼이니깐 캐싱할 필요없음. PyroSolver 뒤에 추가하면 됌

 

여기 파라미터 창에서 값들을 조절하면 되는데 일단 저 Output File$F.bgeo.sc 는 건들면 안됌!

$F는 frame number,

bgeo는 format (확장자). SOP에서 쓰는 모든 데이터를 담을 수 있다. obj랑 비슷한데 용량이 작고 볼 수 없음 

sc는 compression. 그러니깐 캐시의 용량을 줄여주는 역할을 함.

$HIP : 내 후디니 파일이 있는 경로

$HIPNAME : 내 후디니 파일의 파일명

$OS : ROP Geometry Output 노드의 노드명 (여기선 rop_geometry1 이겠지)

저건 건들지 말고 $HIPNAME.$OS 부분을 지우고 내가 원하는 이름을 넣어주면 됌. 강의에서는 SimpleSmoke로 했음.

아니면 그냥 저 옆에 문서버튼 눌러서 경로를 지정해주면 됌. Output File을 MMB 클릭하면 실제 경로를 볼 수 있다.

또 Valid Frame Range에는 Render Current Frame, Render Frame Range 등이 있다.

또 상단에 Save to Disk, Save Disk in Background (또 다른 후디니 창을 열어서 캐시. 그동안 나는 원래 후디니 창에서 작업할 수 있음) 설정 등 여러 설정이 존재한다.

그리고 캐싱하기 전에 저장 먼저 해줘야함! 그리고 Save Disk in Background를 눌러줬다.

 

그러면 이 창이 뜨는데 Open Scheduler를 눌러보자

 

이렇게 상태를 볼 수 있다. Schedular를 여는 또 다른 방법은 상단에 Render > Schedular를 클릭하면 된다

 

 

그래서 캐시 파일을 어떻게 가져와서 쓰냐면,

네트워크 창에서 새로운 Geo를 생성하고 그 안에 File 노드를 생성해보자

그다음 저 문서 아이콘을 누르면 파일탐색기가 뜨는데 거기서 캐싱 파일을 불러오면 된다!

그럼 그대로 불러와짐! 중요한 것은 저 Show sequences as one entry에 체크해야 한다는 것. 이렇게 불러오면 전체 시퀀스를 하나로 묶어서 불러올 수 있게 된다. 체크 해체하면 프레임별로 캐시파일이 주르르르르륵 나옴. 이게 약간 에펙에서의 이미지 시퀀스로 불러오기 같은 기능임. 걍 영어를 읽어보면 무슨 뜻인지 앎.

 

 

그다음 이 캐시파일에 pyrolook을 추가해서 쓰면 된다. 캐시 전에 만들어둔게 살아있다면 거기 pyrolook을 복붙해도 되고, 새로 Pyro Bake Volume 노드를 추가해도 되고.

 

++ 파티클을 재생할 때 Realtime을 켜고 재생하면 속도가 더 맞게 나온다! 로딩 시간은 더 걸리겠지만.. Realtime은 1초에 24frame이 렌더링되는 것이라고 한다.

 

끝!