https://www.twahoudini.com/course/starterparticles1
지금까지 Starter 강의에서 배웠던 내용은 정보를 어떻게 다루느냐에 중점이 되어 있었다. 이제부터는 정보를 다루어 내는건 당연한 일에 불과하다. 이제는 이러한 정보를 시각적인 output으로 변환시키는 과정까지가 통합적으로 진행되어야 한다.
오늘 새롭게 시작된 Particle01 강의에서는 먼저 Mantra, Camera, Material에 관한 이야기를 하고 갈 예정이다.
오늘의 공부 순서이다.
1. material & Attribute
2. 점의 출력
3. Material Palette
4. 선의 출력
1. material & Attribute
시작 전 Attribute Vop과 Material network의 관계이다.
Material network는 Geometry가 아닌 VEX Builder이며, 이는 Attribute Vop 내부에서의 형식과 같다.
이말은 즉슨 Material network에서 Tab을 눌려 불러올 수 있는 node들이 Attribute Vop에서의 구성과 같다는 것을 뜻한다.
node안을 들여보고 싶어도 더블 클릭만으로 해결되지 않을 때가 있다. 그 때 node 상단에 자물쇠 모양의 아이콘이 있다면 Allow Editing of Contents를 눌러 잠금해제 시킨 뒤 node 안쪽을 들여다 볼 수 있다.
View Vex Code에서는 해당 node에 대한 Vex 정보들을 열람할 수 있다.
오른쪽의 정보들은 material이 적용되기 전 어떠한 값이 먼저 정의되어 있지 않다면 기본 정보로서 해당 정보들이 활용되어진다.
먼저 Light의 Type에 따른 그림자의 차이를 보겠다.
1. Type을 Point로 설정했을 때는 왼쪽 그림과 같이 그림자의 모양이 깔끔한 것을 볼 수 있다. 오른쪽 그림은 Type을 Sphere로 설정했을 때이며, 왼쪽 그림에 비해 그림자가 흐리게 묘사된 것을 볼 수 있다.
2. Area size를 높여주면 Sphere type 상태에서 그림자를 더욱 더 흐리게 묘사할 수 있다.
Material과 Attribute간의 관계를 살펴보겠다.
Attribute Wrangle은 Material에 비해 밋밋해 모습을 가지게 된다. 그 이유는 Attribute Wrangle만 가지고 작업을 한 경우엔 빛의 반사에 대한 내용이 표현되지 않았다. 그에 비해 Material에서는 빛의 반사가 표현된 것을 알 수 있다.
Material에 들어가기 전 Attribute Wrangle을 사용해 정보의 값을 미리 정해줄 수 있다.
하지만 위처럼 @metallic, @ior, @rough와 같은 정보를 미리 정할려면 다음에 올 node에서 우리가 사용할 정보가 반드시 존재해야한다.
만약 Attribute Wrangle에서 Cd가 미리 정의되었고, Material node가 따라 붙는다면 color의 값은 어떻게 정의될까?
정답은 간단하다. 바로 Attribute Wrangle에서의 Cd 값과 Principled Shader에서의 Base color가 곱해진 값이 결과로 나오게 된다.
사진은 {1,1,1} * {0,0,1} = {0,0,1}로 검정색, 검정색, 푸른색의 결과가 나왔다.
여러 @metallic, @rough, @ior 값들을 비교하며 느낌을 기억해두자.
2. 점의 출력
Sphere에 Scale을 0.05로 줄이게 되면, Render view 상에서 Point와 같은 모습을 띠게 된다.
@pscale을 활용해 Render view에서의 object의 사이즈를 확인해본 결과 point의 기본 @pscale이 0.05로 설정되어 있다는 것을 알 수 있다.
만약 @pscale을 1로 둔다면 사진과 같이 sphere의 기본 사이즈와 같아 지는 것을 볼 수 있다.
사진을 보면 Sphere는 Material이 잘 적용된 반면, point는 material이 적용되지 않은 모습을 볼 수 있었다.
그 이유는 Material은 Primitive에만 적용되기 때문에 primitive가 0인 point에는 material이 적용되지 않은 것이다.
방금과 같이 point에 material이 적용되지 않을 때에는 Copy to point를 활용해 Point에 Primitive를 생성시켜주면 material이 잘 작동한다.
3. Material Palette
만약 Material network에서 단순히 Tab을 통해 constant node를 생성하려 한다면 왼쪽 사진과 같이 Attribute Vop에서의 constant node가 생성된다.
Material로 사용할 constant를 꺼내기 위해서 Material Palette에 들어가 왼쪽 목록에서 constant를 드래그 앤 드롭 해주면 Material network에 아까와는 전혀 다른 constant node가 생성된다.
Material Palette는 우리가 쓸법한 Material들을 미리 만들어둔 저장고(?)라고 생각하면 편하다.
밝게 빛나는 느낌을 주기 위해 Principled Shader의 Emission을 사용할 수도 있지만 Constant를 사용해 조명의 영향을 받지 않는 쨍한 느낌을 줄 수 있다.
Constant는 색상이 빈틈없이 빽빽이 차 있는 느낌이라면, Glow는 표면에 가까워질수록 투명해지는 그라데이션이 들어가있기 때문에 같은 사이즈의 point여도 constant에 비해 부피를 덜 차지하는 것처럼 보이게 된다.
4. 선의 출력
1. @width를 활용하면 line의 폭을 조정할 수 있다. point에서와 같이 0.05의 값이 기본 line에서의 얇기가 된다.
2. f@u = float(@ptnum) / (@numpt - 1);
이러한 내용을 JOY OF VEX에서 다룬 적이 있었다. line에서의 @P를 0~1 사이의 값으로 만들어 통제할 때 사용한다.
오랜만에 보니 잠깐 잊었던 부분이 생각났다. 바로 @ptnum을 float 함수로 정의내려주기 위해서 @ptnum을 괄호안으로 가두어야 한다는 점이다.
3. 앞서 만든 0~1 사이의 값인 @u 를 chramp하여 line의 Cd값과 Alpha(투명도) 값을 변경해준다.
라인을 width 값만을 조절해 만들게 되면 위와 같이 평평한 모양의 평면이 생성된다.
하지만 원통형 모양을 유지하면서 크기를 키우기 위해 Polywire와 Wireframe을 사용해 둘을 비교 해보겠다.
Polywire node에서는 앞서 Attribute Wrangle에서 만들어둔 @width의 정보를 그대로 Wire Radius에 넣어 정보를 연결지어 사용할 수 있다.
attribute wrangle에서 @width의 값을 변경하면 Wire Radius도 변경된다.
하지만 Wireframe node에서는 Wire Radius에 @width를 넣어도 작동하지 않는다.
육안으로는 끝부분이 각지고 둥근 차이가 나는 것을 볼 수 있다.
이러한 차이는 Wire Frame에서 End Caps, Round Corners를 활용해 해결할 수 있다.
@Cd = chramp("twa",@u)의 값을 float에서 color로 변경하여 line의 색에 변화를 주었다.
line의 @width와 @Alpha 값을 조절해 스파크 느낌을 주었다.
렌더링 결과 Wireframe이 가장 예쁜 결과가 나왔지만 이는 Segment의 수를 100이상으로 늘려주었기 때문이다. 오른쪽 그림과 같이 Segment를 10으로 적게 둘 경우 여러개의 point로 이루어진 것 처럼 층층이 나뉘어지는 모습을 보인다. 좋은 결과를 낼 수 있지만 Segment의 수가 늘어남에 따라 용량도 같이 늘어나기 때문에 렌더링 시간이 늘어나게 된다. 그러니 wireframe을 활용해 결과를 뽑아내는 것은 아쉽지만 좋은 방법은 아니다.
하지만 만약 일부러 오른쪽과 같이 층층이 나누어지는 효과를 의도한다면 좋은 방법이 될 수 있다는 점을 명심하자.
결론
1. 우리가 렌더하기 위해 사용해온 Principled Shader는 Attribute Vop이다.
2. Principled Shader가 적용되러면 Primitive가 필요하다.
3. 점이 결과를 출력할 때 Principled Shader를 쓰고 싶다면 면으로 치환하는 과정이 필요하다.
4. 출력시 점의 사이즈를 정하는 Attribute는 @pscale이다.
5. @metallic, @rough와 같은 값을 씀으로써 점을 꾸며주고 싶다면 우리가 쓸 Material이 이와 같은 정보를 쓰는지 확인해야한다.
6. 렌더를 도와줄 유용한 Material이 있는 Material Palette가 있다.
7. 선을 출력할 때의 두께는 @width로 조절 가능하다.
8. 선의 색을 주는 방법으로 chramp를 사용했는데 선의 시작은 0 끝은 1로 @u로 표현했다. chramp의 방식을 float에서 color로 바꾼 뒤에 @u에 색을 대입시켰다.
+ 선에 @Alpha에 대한 값도 줄 수 있었다.
오늘 배운 내용들은 한꺼번에 공부해 서로 비교하면서 공부하여야 어떠한 순간에 어떤 것들을 쓸 수 있는지 파악할 수 있다. 차이를 명확하게 파악하고 자신만의 기준이 생겨야 앞으로의 작업에서 꽤 많은 시간을 단축할 수 있게 될 것이다.
'TWA Houdini1 > Starter & Particles' 카테고리의 다른 글
TWA 후디니 1 Particle_03 : POP Solver 시작 (1) | 2023.02.02 |
---|---|
TWA 후디니 1 Particle_02 : Motion Blur (0) | 2023.01.31 |
TWA 후디니 1 Starter_10 : 고난주간 마지막 & Midterm exam (0) | 2023.01.29 |
TWA 후디니 1 Starter_09_06 : 고난주간 6일차 (1) | 2023.01.27 |
TWA 후디니 1 Starter_09_05 : 고난주간 5일차 (0) | 2023.01.27 |