처음 Maya 4.5 를 접하였을때 Fluid의 기능에 모두 놀라 벌어진 입을 다물지 못하였던 기억이 난다. 그렇게 고민스러웠던 연기의 효과와 불, 구름, 그리고 품질에 비해 매우 간단하게 만들어지는 바다등.....
새버전을 기다리던 마야유저들에게 많은 기쁨을 가져다 주었다. 허나 기존의 Dynamic의 개념과는 다른점이 있고 3D Container 의 높은 하드웨어 점유율등 당장 쓰기에는 문제가 되는 부분도 많았던것은 사실이다.
이번호에는 Fluid의 중심이 되는 개념과 메뉴를 알아보고 예제를 통하여 Fluid의 활용법을 알아보도록 한다.
(편의상 빨리 효과를 볼 수 있는 2D Container를 기준으로 설명하였다.
3D Container 와 다른점은 거의 없으므로 양해하기 바란다)
1. Fluid의 기본개념
- Fluid는 기존의 Dynamic과는 달리 Container 라는 영역안에서 모두 구현이 되도록 되어있다. 이 Container 안에서 각종 시뮬레이션이 되는데 여기엔 가장 중요한 개념들인 Density 와 Velocity,Temperature, Fuel 들이 있고 이 중요속성을 보조해주는 Display,Dynamic,Shading등이 있다.
(편의상 이것들을 주요속성과 보조속성으로 분류한다. )
1) 3D , 2D Container
Fluid가 시뮬레이션되는 공간을 Container 라고 하며 형태에 따라 3D , 2D Container 로 구분한다.
3D Container 는 일종의 2D Container 의 집합이다.
2D Container 에는 없는 깊이 개념을 가지고 있으며 카메라를 어느쪽에 놓더라도 입체적인 모습으로 만들어준다.
Cube와 같은 모습으로 Cube 안에서 시뮬레이션을 한다.
2D Container 는 Plan의 모양을 하고 있으며 가로와 세로 개념외에 깊이의 개념은 없다. 물론 카메라에 잘 맞추어 사용을 해야하며 3D Container 에 비해 입체적인 느낌이 덜하지만 3D Container 에 비해 훨씬 빠른 연산 속도를 가지고 있으며 정도에 따라 3D Container 못지않은 효과를 낼수도 있다.
2) 주요속성 및 주요속성 Menu 의 이해
(1) Density - 말 그대로 하자면 밀도를 의미하는데 이것은 좀 포괄적인 의미를 가지고 있다. 만일 Container 안을 연기로 가득 채웠다고 가정을 할때 이 Density가 높은 곳은 더 진한 연기를 가지게 될 것이다.
그림 1)
기본적으로 Container 안은 균일한 Density 를 가지고있는데 사용자가 Emitter 나 Paint Fluids Tool 등을 이용해 보다 높은 밀도를 설정하여 그림 1)과 같이 뭉쳐있는 모습을 볼 수 있다.
그림 1-1)
( 이 이후의 그림에서 보이는 메뉴는 Container 의 Attribute에서 볼 수 있다. )
* Density Scale - 이 값을 높이면 Density 가 진하게 된다
* Buoyancy - 이것이 양수의 값으로 되면 가벼워져서 위로올라가게 되고 음수의 값으로 가면 무거워져서 아래로 가라앉게 된다 부력을 설정하는부분이다
* Dissipation - Density 의 소실값을 정의한다. 이 값이 설정되면 만들어진 후 어느정도 시간이 지난 뒤 Density 는 사라지게 된다
* Diffusion - Density 가 확산되는값을 설정한다. 이 값이 높으면 Density 는 빨리 퍼져버리게 되고 낮으면 고유의 형태를 오래도록 유지한다 |
|
(2) Velocity - 속도를 의미하는데 이 속성을 조절하여 Fluid 의 빠르기나 방향등을 조절 할 수있다 그림 2)과 같이 화살표로 표현이 되는데 이 방향이 Fluid의 운동경로가 된다.
그림 2)
그림 2-1)
* Velocity Scale - 어느한 방향의 Velocity 를 제한하거나 활성화할 수 있다 만일 Velocity Scale X 가 다른값에 비하여 낮으면 Y 방향으로 진행하는힘이 세지고 Velocity Scale X 가 다른값에 비해 월등히 값이 높다면 옆으로퍼지는힘이 강해질 것 이다
* Swirl - 소용돌이를 만들어낼 수 있는 부분 값이 낮으면 Velocity 는 균일하게만 움직이게 되고 값이 높으면 작은 소용돌이가 생기기 시작한다.
그림 2-2) Swirl = 0
그림 2-3) Swirl = 10
* Damp - Velocity 의 속도를 둔화 시킬 수 있다 너무 높으면 아예 움직이지도 않을것이지만 적당한 양은 Velocity 의 진동을 막아줄 것 이다
(3) Temperature - 온도를 의미한다 이것은 결과적으로 대류 현상을 조절할 수 있게 되는데 뜨거운 공기는 위쪽으로 흘러 가고 차가운 공기는 아래쪽으로 내려온다는 사실은 모두 알고 있을것이다. 결과적으로 Container 의 특정한 위치를 온도가 높게 설정하여 공기가 그 쪽으로 흐르게 만들수 있다 Velocity 의 방향은 기본적으로 Temperature 에 의해 영향을 받게 되어 있다
그림 3)
그림 3) 에서 파란색의 영역안이 Temperature 가 높게 설정 되어 있다.
그림 3-1)
Temperature의 Attribute는 Density와 같다 다만 Turbulence 가 하나 더 있는데 이값이 높아지면 Temperature 가 불규칙해져서 Velocity 에 영향을 주게된다.
|
|
(4) Fuel - 필자가 가장 이해하기 어려웠던 부분이었다. ( 알고 나니 정말 단순한.... ㅡ,.ㅡ;) 연료를 의미 하는데 이것은 단독적으로는 의미가 없으며 Density 와 같이 쓰여야 한다. 이 Fuel 이 Density 와 같이 만들어지면 일종의 휘발유나 가스와 같은 의미를 지니게 된다 이 가연성 물질이 Temperature에 의해 발화점에 다다르면 말 그대로 Density가 " 타오르게 " 된다. Velocity 나 Temperature 에 영향을 주지 않으며 Rendering을 통해 Density 가 발화하는것을 알 수 있다
그림 4)
이 Fuel은 실제 발화를 일으키므로 연소되어 없어지는 설정도 가능하다. 문자 그대로 " 연료 " 인 셈 이다
그림4-1)
* Fuel Scale - 연료의 양을 조절한다
* Reaction Speed - Fuel 이 온도에 얼마나 빨리 반응하여 점화될것인지를 정한다. 이 값이 낮으면 천천히 타게될것이고 높으면 순간적으로 타게 된다. 예를 들면 Reaction Speed 가 낮게 설정이 된다면 미처 Fuel 에 불이 옮겨붙기도 전에 Fuel 이 흩어져버릴것이다 이 Reaction Speed 가 매우 높게 설정이 된다면 폭발하듯 타오르게 된다.
* Ignition Temperature - 발화점을 설정하는 부분이다 Reaction Speed 와 흡사한 부분이 많은데 이 수치가 높으면 Temperature가 그 온도에 다다를때까지 반응을 보이지 않는다. 반대로 이값이 낮다면 금방 반응을 보일것이다. 이름은 발화점이지만 일종의 시간으로 이해 하는것이 빠를것이다.
* Max Temperature - 가장 활발한 반응이 일어나는 때를 설정한다. 역시 Ignition Temperature 와 같이 쓰이는데 Ignition Temperature 이후 진행속도를 조절한다고 보면 되겠다. Ignition Temperature 에 가까울수록 Fuel이 신속한 반응을 보인다.
* Heat Released - Fuel의 가연성을 조절한다. 이 값이 낮으면 가연성이 낮고 높으면 가연성이 높아지는데 이를테면 마른 나무는 불이 순식간에 붙는다. 허나 젖은 나무는 느리게 타거나 꺼질것이다. Heat Released 가 낮으면 젖은 나무가 되고 Heat Released 가 높으면 바싹 마른 나무가 된다.
* Light Released -
* Light Color -문자 그대로 Light의 색을 설정한다.
|
|
3) 보조속성 및 보조속성 Menu 의 이해
(1) Container Properties
그림 5)
* Resolution - Container 의 해상도를 정할 수 있다. 단순히 Display 의 해상도를 정하는 것이 아니라 Voxel의 갯수를 늘려주기 때문에 Resolution이 높으면 섬세한 조정이 가능해진다. (물론 Resolution 이 높으면 속도가 느려진다)
그림 6) Resolution 10*10
그림 7) Resolution 50*50
* Size - Container 의 크기를 조절한다. 단 2D Container 에서의 Z 값은 기본적으로 Opacity 의 역할을 하게된다
* Boundary X , Y - Container 의 영역을 닫을것인지 열어둘것인지를 설정할 수 있다. Both Sides 로 되어있다면 Fluid가 Container 안에 갇히게 될 것이고 어느 한 쪽 을 열어둔다면( X , Y , -X , -Y Side, None) 더이상 같히지 않고 흘러나가게 될것이다. 단 흘러나간 Fluid 는 더 이상 보이지 않는다. 재미있는것은 Wrapping으로 설정하였을때 Texture 처럼 Container 가 반복이 되며 Wrapping 되어 다시 나타난 Fluid 는 계속해서 영향을 주게 된다. (Create 2D Container With Emitter 를 만들고 Boundary Y 를 Wrapping 으로 설정하면 위로 계속 가속도가 붙는 Density 를 볼 수 있다.)
그림 8)
* Use Height Field - 이 기능은 2D Container 에만 적용이 된다. 이것이 활성화되면 높이를 만들 수 있게된다. Size의 Z 값이 높이가 되는데 이렇게하면 Fluid의 입체적인 모습을 어느 정도 만들어낼 수 있다.
그림 9)
(2) Contents Method
- Contents Method는 주요속성의 제어하는 방식을 설정한다
* Off - Off 로 되어진 속성은 사용하지 않는다 .
* Static Grid - Static Grid 가 적용되면 사용자가 Paint Fluids Tool 로 그려주거나 만들어준 속성에 Dynamic 이 적용되지않고 고정이 된다.
* Dynamic Grid - 기본적으로 Density 와 Velocity 는 이 Dynamic Grid 로 설정이 되어있는데 이 속성이 되면 자동적으로 시물레이션이 되어진다.
* Gradient - 이것은 해당 속성을 Container 안에 가득 채워주는 기능이다 Contents Method 가 Gradient 되면 바로 밑의 ~~ Gradient 항목들이 활성화되는데 이 활성화된 설정에 따라 각 방향으로 Ramp와 같은 그라데이션이 된다 |