중요 2012. 2. 13. 03:47

Houdini Training - free tutorial

'중요' 카테고리의 다른 글

FumeFX강좌주소.  (0) 2012.06.04
Concrete Broken by Car  (0) 2012.02.20
Miguel Perez houdini  (0) 2011.11.19
FlowFixer: Using BFECC for Fluid Simulation  (0) 2011.10.28
Maya Fluid 의 이해.  (2) 2011.10.26
중요/중요사이트 2012. 1. 25. 15:07

TED

http://www.ted.com

다양환 분야의 사람들의 강의들을 번역으로 볼 수 있는곳.
여러언어들로 번역을 할 수 있는점이 매우 강점인것 같다. 
중요 2011. 11. 19. 13:53

Miguel Perez houdini

14살때부터 Houdini공부한 천재소년.

http://www.youtube.com/watch?v=qTKEsU91taY
 

'중요' 카테고리의 다른 글

Concrete Broken by Car  (0) 2012.02.20
Houdini Training - free tutorial  (0) 2012.02.13
FlowFixer: Using BFECC for Fluid Simulation  (0) 2011.10.28
Maya Fluid 의 이해.  (2) 2011.10.26
Car Explosion on the set of The Avengers.  (0) 2011.10.22
중요 2011. 10. 28. 00:39

FlowFixer: Using BFECC for Fluid Simulation

'중요' 카테고리의 다른 글

Houdini Training - free tutorial  (0) 2012.02.13
Miguel Perez houdini  (0) 2011.11.19
Maya Fluid 의 이해.  (2) 2011.10.26
Car Explosion on the set of The Avengers.  (0) 2011.10.22
삼각함수.  (0) 2011.06.09
중요 2011. 10. 26. 03:10

Maya Fluid 의 이해.

출저
http://www.didimdol.ac/online2/lec/maya/maya_fluid/Maya%20Fluid%20%EC%9D%98%20%EC%9D%B4%ED%95%B42.html


처음 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와 같은 그라데이션이 된다



(3) Turbulence




그림 10) (이 항목은 주요속성 사이에 끼어 있지만 보조 속성으로 분류하였다 )

- Container 안에 난기류를 만들어 줄 것이다. Velocity의 Swirl 과 비슷해 보이지만 그 효과는 다르다.

* Strength - Turbulence 의 강도를 설정한다.

* Frequency - Turbulence 형태의 크기를 설정한다. 값이 낮으면 큰 형태의 Turbulence 가 될것이고 높으면 작은 형태의 Turbulence가 된다. 결과적으로는 다수의 난기류 형태가 생성된다.




그림 10-1)




그림 10-2)

*Speed - Turbulence 형태가 바뀌는 시간을 설정한다.

(4) Dynamic Simulation




그림 11)

* Gravity - 중력을 설정하는 부분이다. 만일 값을 음수로 돌리면 Fluid는 아래로 떨어지게 되며 0 으로 되면 어떠한 이동도 보이지 앟는다. 다만 값이 음수가 된다해서 Dencity 가 무거워지는 것이 아니라 중력이 역전된다는 점을 알아두자

* Viscosity - Fluid 의 점성을 만들어준다. 이 값이 낮을수록 물이나 연기같이 되고 높게 설정하면 진흙 같은 점성을 띈다.

* Friction - Viscosity 가 설정이 될때 마찰력을 만들어 준다.

(5) Shading

* color , Incandescence



그림 12) 

- 이 부분은 Fluid 의 색과 백열 정도를 만들어줄 수 있다. 기본적으로 이 부분의 Attribute들은 Ramp 의 모양을 하고 있으며 사용법도 Ramp 와 크게 다르지 않다. 다만 Selected Color 에 다른 Texture 를 연결하여 모양을 내는것은 Fluid 를 Texture로 사용할 때만 가능하다.
Ramp 에서 오른쪽으로 갈수록 Fluid 의 중심에 가까워지고, 왼쪽으로 갈수록 Fluid의 장자리가 된다. 이 속성들에서 알아둬야 할 것은 Color, Incandescence Input 과 Input Bias 이다 Color 나 Incandescence 의 조정 값이 어느 속성에 적용이 될것인지를 정하는 부분이 Color, Incandescence Input 이다. 색을 넣고 싶다면 Density 를 선택하면되고, 다른 속성으로 연결도 가능하다.




그림 13) 

Input Bias 는 Ramp Color 의 치우침을 만들어줄 수 있다




그림 14)




그림 15)

* Opacity 




그림 16)

- Density 나 Opacity Input 에 지정된 여타 속성들의 불투명도를 조정하는 부분이다. 재미있는 것은 다른 속성들과는 달리 그래프의 형태로 조정이 가능한데 덕분에 좀더 세세하게 조정이 가능해졌다. 역시 왼쪽으로 갈수록 Fluid 의 가장자리가 되고 오른쪽으로 갈수록 Fluid 의 중심이 된다. 그래프의 형태를 Fluid 의 단면으로 생각하면 이해가 쉽다. 




그림 17)




그림 18)



그림 19)


Opacity 역시 Input Bias 를 가지고 있으므로 좀 더 다양한 변형이 가능하다
(6) Textures

- Static Grid 를 이용한 Non-Dynamic Fluid 에 아주 유용하게 쓰일 수 있다. 사용자가 만든 기본적인 Fluid 에 다른 Texture를 입힘 으로써 좀 더 사실적인 묘사를 하거나 Texture 에 직접적인 Animation 을 하여 시뮬레이션과정을 거치지 않고도 Fluid 의 움직임등을 만들어 낼 수 있다.




그림 20) 이렇게 되었던 녀석이...




그림 21) Texture 를 입히면 이렇게 된다.

기본적으로 Texture 는 Color , Incandescence , Opacity 에 넣어줄 수 있으며 대부분 SolidFractal 의 형태를 띠고 있다 
그림 22)는 Texture Type 을 설명한 그림이다. 




그림 22) (Maya 의 Help 에서 발췌한 그림..)

* Coordinate Method 
- 주어진 Texture 좌표를 움직이는 방법에 대하여 설정한다. Texture Time과는 다른 개념 이다 

* Color, Incand , Opacity Tex Gain 
- Texture 를 사용하게 되면 활성화가 되는 항목인데 값이 높을수록 Texture 의 효과가 선명해진다.

* Threshold 
- 이 Threshold 는 Texture 의 뭉침 정도를 설정한다. 높은 값을 주면 Texture 가 두리뭉실 해진다.

* Amplitude 
- Texture 의 Contrast 에 관련된 설정이다. 값을 높이기 시작하면 어두운 부분은 더 어둡게 밝은 부분은 더 밝게 된다. 1 이상의 값을 주면 Contrast 가 더욱 증폭되어 Texture가 구멍이 난것처럼 만들어 질 것이다.

* Ratio 
- Texture의 noise 값을 늘려주거나 줄여줄 수 있다. Ratio 가 높으면 세밀한 곳까지 noise 가 생길것이다.

* Frequency Ratio
- Ratio 를 조정하여 Noise 를 주었을때 만들어지는 모양의 크기를 결정한다. Ratio 가 높더라도 이 Frequency Ratio 가 낮으면 전반적으로 두리뭉실한 모양이 될 것이다.

* Depth Max 
- Texture 를 주었을때 얼마나 세밀한 곳까지 Texture를 이용하여 제어할 것 인지를 설정한다. 값이 낮으면 전반적인 Texture의 모양만 들어갈 것 이고 높게 주면 Fluid 의 세세한 곳까지 Texture 가 들어가게 될것이다. 물론 값이 높을수록 렌더링 시간이 더 걸린다. 

* Invert Texture 
- Texture 의 효과를 반전시킬 필요가 있을때 쓰게 된다.

* Inflection 
- Texture 에 뒤틀리는 형태를 적용한다. Texture 가 과장되게 하거나 울퉁불퉁한 효과를 만드는데 도움이 된다.

* Texture Time 
- 기본적으로 Texture는 Texture Time 을 통해서 Animation이 가능하게 되어있다. Texture 의 좌표 (Coordinate) 가 움직이는 것과는 달리 Texture 스스로 움직임을 만들어 낸다는 것이다. 이 항목에 직접 Key 를 주거나 Expression 을 주어 제어한다. 예를 들어 " Fluid xxxx .Texture Time = Time; " 이라는 Expression을 주게되면 시간이 진행됨에 따라 Texture 가 저절로 Animation 될 것이다 

* Frequency 
- 이 값이 높아지면 Texture는 점점 세밀하게 될것이다. 위에서 설명한 Ratio 와 거의 같은 기능이다

* Texture Scale 
- Texture 의 크기를 정한다. 커질수록 Fluid의 Texture 는 성글게 들어갈 것이다. 위에 설명한 Frequency 와 반대가 되는 효과를 가지고 있다.

* Texture Origin
- Texture 의 중심축을 설정하는 부분이다. 이것으로 Fluid 의 어느 한 부분을 중심으로 Texture Scale 이나 Frequency 를 줄 수 있다.

* Implode 
- 예를 들어 폭파할때 폭파의 중심점은 사방을 향해 빛나는 형태로 나타날 것이다. 이 Implode 는 Fluid 의 Texture 에 이런 기능 만들어 준다. 값이 높으면 방사형태가 강해지고 낮으면 원래의 모양으로 돌아갈 것이다. 역시 Animation Key를 주어 제어해야 할 것이다.

여기까지가 Fluid 를 이해하는 가장 기본적이 속성이라 생각된다. 많은 부분을 건너 뛰었음에도 불구하고 상당히 많은양이 되었는데 앞에서 언급한 속성들은 Fluid 를 이해하고 사용하는데 가장 기본인 것이라 생각된다. 꼭 알아두도록 하자 
 

'중요' 카테고리의 다른 글

Miguel Perez houdini  (0) 2011.11.19
FlowFixer: Using BFECC for Fluid Simulation  (0) 2011.10.28
Car Explosion on the set of The Avengers.  (0) 2011.10.22
삼각함수.  (0) 2011.06.09
RanderMan Shader.  (0) 2011.06.09