TWA Houdini1/Starter & Particles

TWA 후디니 1 Particle_05 : 스파크 묘사 & IMG에서 합성하기

yiss09 2023. 2. 4. 02:42

https://www.twahoudini.com/course/starterparticles1

 

HOUDINI1_ STARTER & PARTICLES

1️⃣ 후디니 작업을 위한 기본 프로세스 이론을 공부합니다. SOLVER 작동 개념을 훈련하고 PARTICLE 시스템을 구현합니다.

www.twahoudini.com


1. Particle System

 

DOP Network node에서 Substeps를 조절해 디테일을 늘려주는 것은 이미 이전에 배워 잘 알고 있을 것이다. 그런데 어떤 경우에 사용하는 것이 적절한가를 잘 알아야한다.

만약 현재 Particle들에 층이 생기거나 각진 느낌이 든다면 Substeps를 늘려주어 부드럽게 만들어줄 수 있다.

 

- Points 생성 갯수도 매우 중요하다. 너무 많은 양의 Points를 생성시키면 자칫 Particle이 너무 무거워질 수 있다. 하지만 반대로 너무 적게 생성시키면 느낌이 살지 않게 된다. 하지만 지금 우리가 만들 Spark에서는 Points의 양이 어느정도 많아야한다고 판단되어 40000개를 생성시켜 주었다.

- Points의 Life를 어느정도 줄 것인지 적절히 판별해주어야한다. Spark의 경우엔 Points의 life를 적게 주면 된다.

 

Bounce와 Friction을 조절해 강력한 힘의 Particle이 Static Object에 부딪힌 후 강하게 튀어오르는 것을 막아준다.

 

- 혼자서 고민하고 공부할때에는 Variance 값을 전부 통일해주었었다. 강의에서는 Points가 이동하는 방향에 더 높은 값을 주었는데 이 부분은 생각지도 못한 부분이었다.

- Force의 중력을 아래로 떨어지게 하여, Points들이 조금 남아있다 사라지게 되는 효과를 주었다.

 

Force의 힘이 너무 강력하여 너무 지면과 가깝게 Points가 떨어지게된다. vel에서 Points를 y축 방향으로 1 올려주어 적당한 높이를 찾아주었다.

 

혼자서 만들 당시엔 단순하게 직선으로 나아가다 튕겨나오는 Particle을 구상했었다.

강의에서 중력을 아래로 주어 튕겨져 나온 Points들이 바닥에 남아 조금씩 사라지는 효과를 준 것이 엄청 인상적이었다.

 

 


2. Save to Cache

 

DOP Network를 바로 File Cache에 연결해도 된다. 하지만 앞으로의 작업에서 DOP Import가 많이 사용될 예정이기 때문에 미리 친해져 보도록 하자.

1. DOP Network에 대한 정보를 불러온다.

2. Object Mask에서는 DOP Network에서 사용할 정보를 불러올 수 있다. p01이 적혀있는데 이는 p01에 대한 정보만 가져가겠다는 것이다.

3. Import Style을 반드시 Fetch Geometry from DOP Network로 변경해주어야 DOP Network의 정보가 들어오게 된다.

 

File cache에서 이름과 Folder의 위치를 정해준 뒤 Save to Disk를 해준다.

+ 반드시 Load from Disk를 체크하자.

 

 


3. Point to line & material

 

앞으로 생성될 Particle의 갯수를 조절하기 위해 Limit에 관한 정보를 생성해주겠다.

랜덤한 Seed를 생성해 랜덤하게 Points들이 사라지게 하겠다.

1. 조건을 달아준다. 앞서 만든 rand값이 limit보다 큰 Points들을 제거해주겠다는 식을 생성해준다.

2. 이제 파라미터를 조절해 Points의 양을 조절해 줄 수 있다. 숫자가 커질 수록 남아있는 Points가 많아진다.

 

Particle에 색을 입히기 위해 chramp를 사용해주려한다.

하지만 그 이전에 chramp에서 사용할 0~1 사이의 정보가 필요하다.

life는 points들의 고정된 수명값을 보여준다. age는 points들이 생성되고 얼마만큼 시간이 지났는지 보여준다. 즉 0에서 life로 가는 과정을 age라고 할 수 있다. 이때 age를 life로 나누게 되면 0~1 사이의 값이 발생하게 된다. 그 값들을 float play로 정의내려 준 뒤 chramp 값으로 사용해준다면 Points가 생성된 시간에 따라 Points에 색을 입힐 수 있게 된다.

또한 색의 맨 앞부분에 민트색을 넣어주어 완성도를 높여주는 방법을 배웠다.

 

@width의 값이 변경되지 않았을 때 Render view에서는 line이 매우 두껍게 출력된다.

@width의 값을 조절해 Spark의 느낌이 나도록 얇게 만들어주자.

 

1. Glow의 값이 너무 어둡다고 느껴진다면 1보다 큰 수를 적어 넣어 더 밝게 만들 수 있다. 이것이 가능한 이유는 Glow Color의 작동방식이 기본 Color에 Glow Color가 곱해진 것이 결과로 나오기 때문이다.

2. Glow Ramp Rate를 높여주게 되면 Glow 특유의 뿌옇게 되는 효과를 가지게 된다. 반대로 0으로 낮추게 된다면 Constant와 별반 차이가 없어지게 된다.

3. Enable Emission을 체크하면 Emission 기능을 사용할 수 있게 된다. 하지만 너무 과한 경향이 있으니 밝기를 더 키우고  싶다면 Emission 기능보다는 Glow Color 값을 높여주는 것을 추천한다.

+ 원하는 느낌이 있다면 사용해도 된다.

 

이때 Glow의 Inspect 값은 5를 넘어가는 것이 있다(Glow color 6 설정하였기 때문).

하지만 Constant의 경우엔 아무리 밝은 색이라도 Inspect의 값이 1을 넘지 않는다.

 

trail과 add로 생성된 선의 길이가 너무 길다고 느껴진다면 Carve 노드를 연결해 그 길이를 조절해 줄 수 있다.

 

 


4. Render setting & Render(exr)

 

가장 먼저 Render를 하기 이전에 무조건 해주어야 하는 작업이다.

지금 현재 DOP Network에서 StartFrame을 11로 설정해둔 상태이다. 그렇기 때문에 11이전의 10  Frame부터는 내용이 존재하지 않는 상황이다. 이때 Mantra의 StartFrame이 11보다 아래가 되면 Render 도중 오류가 발생하게 된다.

이를 방지하기 위해 Null node를 달아주어 Switch node를 활용해 10 Frame아래에서 Null의 내용이 작동하도록 Animation을 준다면, 아주 간단하게 오류를 방지할 수 있게된다.

반드시 Render 이전에 작업해두도록 하자.

 

이제 Render를 하기 위해 Mantra  node에서 주소를 입력해준 뒤 Render to Disk를 해준다.

이때 Motion Blur는 켜주도록 하는데, Geo Time Samples와 Shutter Offset 값을 조절해주자.

 

Render가 완료되었다면, 이제 Houdini가 깔려있는 파일 경로로 가서 mplay 프로그램을 실행시켜준다.

C:\Program Files\Side Effects Software\Houdini 19.0.720\bin  경로 주소이다.

(Render하는데 3시간이 걸렸다; 컴퓨터를 얼른 바꿔야하지 않을까 싶다...)

 

이제 Mplay가 열렸다면 Rendering 해두었던 exr파일을 찾아서 Load해주자.

 

Mplay를 통해 불러온 exr 파일은 왼쪽 아래의 1초당 Frame을  조절해 Play 속도를 조절해줄 수 있다.

 

 


5. Compositing

 

이제 새로운 인터페이스를 만날 예정이다. 전혀 지금까지 해보지 않았던 것을 해야하기 때문에 당황할 수 있다.

합성을 위한 Tool들은 누크,퓨전,에프터이펙트라던지 많이 있다. 오늘 강의는 후디니 강의 안에서 컴포지팅 하는 방법을 배우게 된다. 겁먹지 말고 따라가보자.

 

새롭게 Composite View와 Img Network view를 생성해준다.

두 개의 화면은 같이 사용할 예정이기 때문에 두 화면을 7번으로 고정시켜준다.

 

이제 Img Network View의 Compositing 안으로 들어가서 작업해보자.

File node를 불러와준다.

이때 나비 이미지가 Default로 소환되게 된다.

 

File node에서 Exr 파일을 불러와준다.

 

불러들인 Exr파일이 잘 작동하는지 Play해보자.

이때 File node를 통해 불러들인 Exr파일은 생각보다 렉이 걸릴 수 있다.

그러니 작업의 완성도를 확인하기 위해 Play할때는 MPlay를 활용해보자.

 

 

이제 3D에서 2D로 넘어오게 되었다. 2D에서의 용어들이 3D와는 조금 다르지만 맥락은 똑같다.

3D에서는 같은 위치에 서로 다른 정보가 있는 것이 문제되지 않았다. 하지만 2D에서는 같은 위치에 서로 다른 정보가 있다면 무엇을 먼저 보일지 같은 위치에 있는 정보들을 어떻게 계산해줄지를 신경써주어야한다.

먼저 Compositing에 활용되는 핵심 node들을 살펴보자.

 

먼저 Merge와 같은 역할을 하는 Layer이다. 

Global Operation이 Over로 되어있다면 1번째 프레임 위에  2번째 프레임이 그대로 덮어  씌워진다.

 

Global Operation이 Add로 되어 있다면 1번째 프레임에 2번째 프레임이 그대로 들어가게 된다. 이 경우엔 color 값들이 더해진다고 보면 된다.

 

Global Operation이 Multiply로 되어있다면 1번째 프레임의 color값에 2번째 프레임이 곱해지게 되는데 이때 값이 0인 부분들이 전부 검정색으로 변하게 된다.

각각의 차이를 잘 인지하자.

 

다음은 Fit과 같은 역할을 하는 Levels이다.

Output Levels의 값들을 기준으로 Input Levels 만큼 값들의 범위를 늘리거나 줄려줄 수 있다.

이때 color값이 Output Levels의 최솟값보다 작은 값이 존재한다면 이 값은 Input Levels의하여 음수값을 가질 수 있다.

Input Levels의 값을 조절해 상대적으로 뜨거운 부분만 남겨주자.


이후에 계속 오류가 발생하게 되어 여기까지 공부기록을 남긴다.

완성되는대로 수정하도록 하겠다.