FrontPage › DangerousEffectsAnimation
Contents
- 1. dynamic window layouts
- 2. use playblasting to check motion
- 3. a one-minute ocean
- 4. SOFT BODY ROPE TRICKS
- 5. ALL SOFT BODIES MUST REST
- 6. JUMP THAT ROPE
- 7. A SIMPLE RIGID BODY ANIMATION
- 8. A SIMPLE EXPRESSION TO MOVE A PASSIVE RIGID BODY
- 9. USING PARTICLES TO VISUALIZE NOISE VERSUS RANDOM
- 10. RANDOMLY SIZED PARTICLES
- 11. BIgger Particles fall faster
- 12. Playback every frame or else
- 13. Making particles collide with a floor
- 14. particle looping
- 15. KILL PARTCLES WHEN THEY GO BELOW A CERTAIN HEIGHT
- 16. WORKING ON THE CHAIN GANG
- 17. BATTLE TWO TURBULENCE FIELDS TOGETHER
- 18. SWARMMING BUGS OR ATTACHING FIELDS TO INDIVIDUAL PARTICLES
- 19. MAKE APARTICLE EMIT A TRAIL OF PARTICLES
- 20. EMIT PARTICLES FROM AN IMAGE OR TEXTURE
- 21. KNOW YOUR FIELD OPTIONS
- 22. GET YOUR TURBULENCE ON
- 23. Emit more particles as the emitter goes Faster
- 24. Particle replacement
- 25. INVASION OF THE BLOB
- 26. CACHE AND CACHE AGAIN
- 27. WHIRLING DERVISHES
- 28. holy smokes!
- 29. HOLY SMOKES!(continued)
- 30. FADING IN AND FADING OUT
- 31. RING OF FIRE
- 32. INTERACTIVE PLAYBACK
- 33. PARTICLE DEFORMATION
- 34. Using Numeric display mode
- 35. Birthing particles into noise space
- 36. CREEPY CRAWLY PARTICLES
- 37. CONSERVE YOURSELF!
- 38. INTERPENETRATION?! WHAT DID I "COLLlDE" WITH?
- 39. DEACTIVATING PARTICLE COLLISIONS
- 40. RUNNING MULTIPLE RIGID BODY SIMULATIONS
- 41. Row,row,row your sim gently down number streams
- 42. RENDERING HARDWARE_BASED PARTICLE TYPES IN SOFTWARE
1. dynamic window layouts ¶
종종 다른 일들 사이에서 효과를 주고 있는것을 발견할 것이다. 이것은 특별히 dynamically 애니메이션을 할 경우 레이아웃을 절약하는데 도움이 된다. 두개의 좌우로 나오는 레이아웃에서 왼쪽에는 dynamic relationship을 켜두어라. 이것은 outliner와 같은데 연결을 하는것과 끊는 것을 가능하다. 레이아웃을 절약하기 위해서 new layout button으로 dynamics와 같은 이름의 레이아웃을 만든다. 이제 다이나믹 에니메이션을 원한다면 이 레이아웃을 선택해서 과정을 더 쉽게 할 수 있다.
[JPG image (323.19 KB)]
2. use playblasting to check motion ¶
[JPG image (197.62 KB)]
다이나믹 에니메이션에서 timeline 재생속도의 고정값으로 인해서 애먹는 경우가 있다. 그래픽 카드의 속도에 따른 시뮬레이션을 하는 것은 실제적인 시간이 아니다. 비록 오늘날 그래픽 카드의 속도가 굉장하다고 하지만. 너의 애니메이션이 실질적이라고 생각하는 한, playblasting으로 체크하는 것이 좋다. menu-window-playblas option box에서 프레임 범위를 정하고 fcheck를 선택하고 display size를 정하고 playbast를 눌러라. 이것은 선택된 viewport에서 순차적으로 계산 후 fcheck에서 재생된다. fcheck에서 't'를 눌러서 실질적인 시간으로 재생된게 한다. 실제적인 속도와 당신이 지각하는 것과 많이 다를것이다. 또한 적당한 시뮬레이션을 하기 위해서 playback section에서 모든 프레임에서 playback을 설정하는 것을 기억해라.
3. a one-minute ocean ¶
당신은 움직이는 물을 빠르게 만들 수 있다. 이것은 매우 복잡한 일이었다. option box의 fluid effects, ocean, create ocean을 선택하고, create preview plane으로 완성한다. 그리고 directional light를 아래 방향으로 생성한다. 씬을 재생할 때 preview plane은 움직이고 default motion의 대략적인 아이디어를 얻을 수 있다.
[JPG image (387.05 KB)]
4. SOFT BODY ROPE TRICKS ¶
[JPG image (141.04 KB)]
오히려 카우보이 모양밖의 기묘한 짓들에 쓰기에 나은, 이것은 동적인 로프동작 애니메이팅에 실제로 냉정한 트릭이다. 당신의 격자는 Status Line 안의 Snap to Grids option을 나타내고 누른다고 확신한다. Create > EP Curve Tool을 사용해완전한 각각의 점이 근처의 그리드위의 점에 있는 직선의 커브를 만들어라. 임의의 10개의 유닛을 생성하기 위해서 왼쪽에서 시작해서 오른쪽의 한개의 grid point를 클릭해라. 커브를 선택하고 메뉴로부터 Soft/Rigid Bodies > Create Soft Body option box를 선택한다. 아래쪽의 Creation Options > Duplicate 선택, Make Original Soft로 가라. Hide Non-Soft와 Make Non-Soft a Goal을 클릭해라. weight를 1로 정하고 Create를 눌러라. Line 상태에서 Select by component Type을 누르고 커브의 모든 포인트를 끝의 두개 빼고 선택해라. Ctrl-A를 눌러 Attribute Editor를 열고 제목 밑의 Per Particle Attributes에서 goalPP에서 우클릭하고 Component Editor를 선택해라. 맨 위에 있는 Particles 탭을 선택하고, 선택된 점들을 올려라. 창을 펴서 당신은 goalPP attributes의 모든 것을 봐라. goalPP의 맨 위의 값으로부터 맨 아래의 값까지 클릭하고 드래그, 0을 누르고, Enter를 눌러라. 모든 선택된 점들은 우리가 선택하지 않은 끝의 점들의 값이 1로 존속될 때 0의 goalPP를 가질것이다. 창을 닫고 Status Line에서 Select by Object Type 버튼을 누르고 우리의 본래 커브를 선택해라. 메뉴에서 Fields > Gravity를 선택해라. 커브선택을 취소하고 메뉴에서 Soft/Rigid Bodies > Create Springs를 위한 옵션 박스를 선택해라. Creation Method를 Wireframe으로, Wire Walk Length는 2로, stiffness는 10으로 바꾸고 Create를 눌러라. scene을 실행하면, 당신은 어떻게 soft bodies가 재미있게 하는지를 볼수 있다. spring stiffness와 damping을 실험했다. 실시간으로 보기에 playblast 해준다.
5. ALL SOFT BODIES MUST REST ¶
[JPG image (125.8 KB)]
이제 로프를 이용하여 앞의 tip에서 우리는 만들것이다. 일직선으로 출발하고 떨어지고 주위로 튀는 것을 주의해라. 때때로 우리는 resting position에서 시작하는 부드러운 몸체를 필요로 하는 만큼 훌륭한 애니메이션을 원한다. 그곳을 얻는 하나의 방법은 당신의 frame 범위를 진짜 높고 물체가 튀겨 멈출 때까지 배치하는 것이다. 공교롭게, 우리의 작은 조각은 천천히 내려올때 아무것도 가지고 있지 않아서, 그것은 하는동안에 가질수 있지만, 그들은 좋은 방법이다. 로프를 선택하고 Fields>Drag options의 Set the Magnitude를 1로 하고 Attenuation을 0으로 해라. scene을 재생하는 동안, 로프는 내려가고 오히려 빨리 와서 멈출것이다. 이제, 로프와 선택된, Solvers>Initial State>Set for Seleceted를 선택해라. 되갑고, scene을 플레이 하고, 당신은 Dynamics Relationship Editor와 오른쪽 가의 Fields button 체크한것, 한번 dragField1을 꺼라 커브로부터 로프로부터 좋은 resting state>Disconnect the Drag Field 에서 찾아낼 것이다. 이제 다른 이름으로 파일을 저장하고 예제에 Rest to the end를 더해라. 이 테크닉은 무언가 커튼 같은 것을 매다는데 유용하다. 당신의 rest state로부터의 애니메이션을 시작하고 바람을 추가하고 거친 움직임을 얻어라.
6. JUMP THAT ROPE ¶
이전의 팁에서는, 우리가 원래 창조해낸 목표개체를 copyOfcurve1라고 부르고, 그것은 로프의 마지막에 연결되어 있습니다.
1 goalPP 특성(?)을 포함하는, 그것은 아직까지도 정말 유용하게 사용되고 있습니다. 어느정도까지 우리는 그것을 단순히
공간의 로프를 포함하는데 사용해왔지만, 우리는 공간에서 움직이는 로프의 끝을 원할지도 모릅니다. 체널 박스의
copyOfcurve1를 선택하고, Translation Z 필드를 우 클릭한 후 Expressions을 선택합니다. Expression 필드에 들어갑니다:
1 goalPP 특성(?)을 포함하는, 그것은 아직까지도 정말 유용하게 사용되고 있습니다. 어느정도까지 우리는 그것을 단순히
공간의 로프를 포함하는데 사용해왔지만, 우리는 공간에서 움직이는 로프의 끝을 원할지도 모릅니다. 체널 박스의
copyOfcurve1를 선택하고, Translation Z 필드를 우 클릭한 후 Expressions을 선택합니다. Expression 필드에 들어갑니다:
translateZ=8*sin(time*2);
translateY=8*sin(time*2);
translateY=8*sin(time*2);
원래 있던 커브를 선택하여 Dynamics Relationship Editor에 우리들의 로프의 필드를 드래그하여 재연결한 다음, 우측에서,
dragField1을 클릭합니다. dragField1을 선택하고, 그것의 특성창을 열어, Magnitude를 1로 바꿉니다. 당신의 장면을 많은
프레임에서 재생되도록 설정합니다, 아마도 3000일 것이고, 그때 재생합니다. 우리가 목표개체를 넣은 식은 로프의 끝으로
이동할 것입니다. 장면을 재생하고 동장을 개발시켜 봅니다. 지금 멈추고, 되감고, 반동의 Stiffness 설정을 20으로
변경합니다. 장면을 재생하고, 이제 로프는 대략 1000프레임 정도 후에 멋지게 작동하게 됩니다. 어떻게 되는것인가, 당신이
반동의 stiffness를 변화시켰을 때, 로프의 반응이 극적으로 변화하게 됩니다. 다이나믹 애니메이션의 만은 시간동안,
당신은 그 달콤한 방법을 찾을 많은 변수들을 경경험하는 것 필요합니다.
dragField1을 클릭합니다. dragField1을 선택하고, 그것의 특성창을 열어, Magnitude를 1로 바꿉니다. 당신의 장면을 많은
프레임에서 재생되도록 설정합니다, 아마도 3000일 것이고, 그때 재생합니다. 우리가 목표개체를 넣은 식은 로프의 끝으로
이동할 것입니다. 장면을 재생하고 동장을 개발시켜 봅니다. 지금 멈추고, 되감고, 반동의 Stiffness 설정을 20으로
변경합니다. 장면을 재생하고, 이제 로프는 대략 1000프레임 정도 후에 멋지게 작동하게 됩니다. 어떻게 되는것인가, 당신이
반동의 stiffness를 변화시켰을 때, 로프의 반응이 극적으로 변화하게 됩니다. 다이나믹 애니메이션의 만은 시간동안,
당신은 그 달콤한 방법을 찾을 많은 변수들을 경경험하는 것 필요합니다.
[JPG image (48.63 KB)]
7. A SIMPLE RIGID BODY ANIMATION ¶
[JPG image (34.08 KB)]
종종, 기술을 배운다는 것은 매우 간단한 예로 실험하는것이고 도로에서 큰 예를 배워 적용하게 됩니다. 수평 NURBS 플랜을
생성하고 모든 방향을 10으로 키웁니다. 폴리 큐브를 생성하고 Y 5가지 유닛들을 향상시킵니다. NURBS 플랜을 선택하고
Soft/ Rigid Bodies를 선택하며, Passive Rigid Body를 생성합니다. 이제 큐브를 선택하고 여전히 큐브가 선택되어져 있는
상태에서 Active Rigid Body Next를 선택합니고, 중력 Fields를 선택합니다. 장면을 재생하면, 바로 거의 완고히 탄생된
애니메이션이 가능하게 됩니다. 장면을 되감고, 큐브를 선택하고, 몇 개의 축의 회전량을 조금 넣어봅니다. 다시 장면을
재생하고, 훨씬 더 흥미로운 것이 얻어진 것을 볼 수 있게 됩니다. 바닥이나 큐브의 설정을 조절하는 것에 되돌아가고,
개체를 선택합니다, 그리고 채널박스에서 튜브를 만들기 위해 Scale X 또는 높이를 높이기 위해 Translate Y같은 많은
변수들을 변화시킬 수 있습니다.
8. A SIMPLE EXPRESSION TO MOVE A PASSIVE RIGID BODY ¶
[JPG image (27.38 KB)]
이전의 방법으로 동일한 장면을 사용하는 것에, 강력한 기능을 사용하여 수정해보도록 하겠습니다.
Dynamics Relationship Editor에서 NURBS 플랜을 선택하고, 우클릭한 뒤, Show Shapes를 선택합니다. NURBS 플랜 옆의
크로스를 클릭하고 rigidBody1를 선택합니다. Delete를 누르고, NURBS 플랜을 다시 선택한 뒤, 채널박스의,
Translation Y를 우클릭하여 Expressions를 선택합니다. 이 방정식에 들어갑니다:
t y=.5* noise (time*3);
Create 버튼을 누르고 장면을 재생합니다. 상자가 플랜을 건들이지 않겠지만, 플랜은 위아래로 진동할 것입니다.
이제 되감고, 플랜을 선택하여, 다시 Passive Rigid Body를 만듭니다. 바로 장면을 재생해보면, 당신은 박스가 플랜의
이동에 반응하는 것을 볼 수 있을 것입니다.
이제 되감고, 플랜을 선택하여, 다시 Passive Rigid Body를 만듭니다. 바로 장면을 재생해보면, 당신은 박스가 플랜의
이동에 반응하는 것을 볼 수 있을 것입니다.
9. USING PARTICLES TO VISUALIZE NOISE VERSUS RANDOM ¶
[JPG image (128.72 KB)]
새로운 효과를 적용할때, 이해해야될 중요한 개념이 Noise field이다.어떤 이는 이것이 랜덤이라고 말하겠지만, 완전하게 랜덤은 아니다.이것은 구름이나 산과같은 자연적인 무질서에 기초하고 있다고 볼 수 있다.Particle -> Particle Tool 을 통해서 파티클의 Grid를 만든다.Create particle grid를 체크해서 Placement의 with text field 를 활성화 시킨다.Minimum Corner = -10, 0, -10 Maximum Corner = 10, 0, 10 Particle Spacing = 0.2로 설정한다.이제 Particle로 만들어진 평면을 볼수 있다.Attribute의 Per Particle Attribute의 Position값에서 우클릭을 하여 Runtime Expression을 선택하고 Expression창에서다음과 같이 입력한다.
Position+=<<0,noise(position),0>>;
Current frame값을 2로 바꿔서 살펴보면, 산악지형과 같은 모양으로 변경되있음을 확인 할 수 있다.Expression값을 다음과같이 변경해서 살펴보자.
Position+=<<0,rand(1),0>>;
변경된 프레임을 확인해보면 rand는 더욱 무질서한 형태를 생성했음을 확인할 수 있다.
10. RANDOMLY SIZED PARTICLES ¶
파티클 사이즈를 다양하게 만들기 위해서는 간단한 Fountain을 만드는것에서 부터 시작해야한다. Particle -> Emitter option의 Emitter type에서 Directional을 선택한다. Distance/Direction Attribute에서 direction을 0,1,0으로 spread를 0.2로, speed을 10으로 설정한다. Particle을 선택하고 Field -> Gravity를 선택한다. Particle의 Attribute editor의 Render Type을 Spheres로 설정한다. Dynamic Attribute의 General을 선택하면 3개의 탭을 가진 새로운 창이 뜬다. Particle탭을 선택하고 radiusPP값을 선택한후 OK버튼을 누른다. Per Particle Attribute의 radiusPP값에서 마우스우클릭으로 Create Expression을 통해 Expression창을 연후 다음과같이 입력한다.
radiusPP=.1+.0*rand(1);
이제 애니메이션 Play를 시켜보면 Expression에 기초해서 0과 1사이의 값을 랜덤으로 생성하여 불규칙적인 크기의 구들이 생성되는 것을 볼수 있다.
radiusPP=.1+.0*rand(1);
이제 애니메이션 Play를 시켜보면 Expression에 기초해서 0과 1사이의 값을 랜덤으로 생성하여 불규칙적인 크기의 구들이 생성되는 것을 볼수 있다.
[JPG image (139.24 KB)]
11. BIgger Particles fall faster ¶
[JPG image (192.66 KB)]
이제 저번 팁에서 만들어 본 것을 사용하여 큰 파티클이 작은 파티클보다 먼저 떨어지도록 해 보자. 파티클1 속성 에디터의 Per Particle (Array) Attributes acceleration field에서 오른쪽 클릭을 하고 Runtime Expression을 선택한뒤 다음을 입력한다 :
acceleration = 10*<<0, -particleShape1.radiusPP,0>>;
신을 플레이 하기 전에, Dynamic Relationships Editor에서 중력 필드와 파티클의 관계를 끊어놓는다. 이제 Runtime에서 입력한 표현식이 파티클이 어떻게 떨어질 것인지를 관리하기 시작하여, 작은 것은 큰 것에 비해 매우 적은 중력을 받게 될 것이다. 이러한 효과를 더 강화시키고 싶으면 다음과 같이 치면 된다 :
acceleration=10*<<0,-particleShape1.radiusPP=.34,0>>;
12. Playback every frame or else ¶
[JPG image (185.63 KB)]
파티클 시뮬레이션은 실행이 필요한데, 이는 다음에 올 프레임을 효과적으로 계산해 다음 프레임을 보여주는 것을 가능하게 한다. 이러한 실행은 일반적으로 사용자에게는 보여지지 않는데, 이를 Animation Preferences->Playback->Playback Speed에서 매 프레임마다 볼 수 있게 할 수 있다. 이상한 행동은 이것을 잘 적용해놨을 경우 수정할 수 있다. 그리고 기억해야 할 것은 새로운 테스트를 하기 전 playback의 프레임을 0으로 하여 전부 리셋해ㅑㅇ 한다는 점이다.
13. Making particles collide with a floor ¶
[JPG image (156.32 KB)]
앞에서 만든 팁을 같은 애니메이션에 사용하는데, 층을 추가해 두자. 그리고 평면 넙스를 만들어 30단위로 스케일을 늘린다. 이후 몇 프레임을 재생하면 파티클과 새로운 넙스 플레인이 보이는 화면에 나타나게 될 것이다. 그 둘을 같은 시간에 함께 선택하여 Particles->Make collide를 선택하자. 이것이 잘 되었는지 확인하려면 Dynamics Relationships Editor에 가서 particle1을 선택하고 오른쪽 단에 SELECTION MODES의 Collisions를 선택한다. 그러면 nurbsPlaneShape1이 보일것이다. 이것도 선택되어 있어야 하며, 이를 통해 이 파티클이 이 오브젝트과 충돌을 할 것이라는 것을 알려준다. 이제 신을 플레이해보자, 그러면 무언가 문제가 있다는 것을 알 것이다. 하지만 찬스가 있다. 평면의 0,0,0에 있는 Emitter가 있어서, 어떤 파티클은 위로 올라갈 것이며 다른 파티클은 내려가게 될 것이다. Emitter를 Y축으로 올리는 쉬운 방법은 모든 파티클이 평면 위에 있게 하는 것이다. 그리고 충돌의 영향을 바꾸기 위해서는 nurbsPlane1을 선택하여 Attribute Editor를 연다. geoConnector1이라고 된 탭을 선택하고, Tesselation Factor를 무시하고, Resilence를 조절하면 반향을 조절할 수 있고, friction을 조절하면 평면이 얼마나 미끄러운지를 조절할 수 있다.
14. particle looping ¶
[JPG image (98.66 KB)]
자주 파티클 이펙트는 mapped 2d card replacements나 rhythmic effects를 만들 때 유용하게 순환되게 반복적으로 쓰일 수 있다. 경계를 만들어서 임시로 연결시키기 위해서는 마지막 프레임에서 파티클을 선택하여 solvers->Initial State->Set for Selected를 선택한다. 이제 처음 프레임과 마지막 프레임이 연결될 것이며 매끄럽게 연결 될 것이다.
15. KILL PARTCLES WHEN THEY GO BELOW A CERTAIN HEIGHT ¶
[JPG image (346.65 KB)]
이전의 팁에서와 같이 다시 만들고, 파티클이 충돌하는 대신 없앤다. 당신은 파티클이 튕기는 대신에 단순하게 없애는 것을 필요로하는 경우가 있을 수 있다. 더 적은 파티클로 더 좋은것을 행하는 것을 의미하고, 그래서 파티클이 보이지 않게 없애는 것을 빠르게 할 것이다. 그것이 충돌하는 plane을 없애고, 파티클1을 위한 Attribute Editor를 연다. 그리고 Life Span Attribute로 가서, Lifespan Mode에서 단지 lifespanPP만을 선택한다. 지금 Per Particel Array Attribute에서, lifespanPP를 오른쪽 클리하고 Runtime Expression을 선택한다. code line에 다음의 line을 붙여 넣는다.
$pos = particleShape1.position;
if ($pos.y<0)
particleShape1.lifespan = 0;
Edit를 클릭하고 씬을 play한다. 지금 파티클이 0위로 떨어질 때, 그것들은 사라질 것이다. emission을 제한해야 하기 때문에 Y축에서 0보다 위에 emitter를 위치 시킨것을 유지해야만 한다.
16. WORKING ON THE CHAIN GANG ¶
[JPG image (255.96 KB)]
랩퍼 패션의 액세서리의 가장 늦은 렌더링에 도움이 되고, 여기에서 rigid bodies를 위해 특이하게 사용된다. Create, Polygon Primitives, Torus의 옵션 박스를 선택하는 것으로 시작한다. Radius를 선택하여 .2로 바꾸고, Subdivisions Around Axis와 Height를 10으로 한다. radius는 1에, twist는 0에, 그리고 Axis는 Y로 만들어야만 하고, Create를 누른다. 지금 선택되어진 pTorus와 함께, Edit, Duplicate의 옵션박스를 선택한다. Copies의 Number를 10으로 set하고, 모든 옵션들은 Copy와 Parent를 제외하고 모두 unselected로 해서 만들어야 한다. Translate box에서, 1.25,0,0을 넣고 Rotation box에는 90,0,0을 넣는다. Scale은 1로 만들어야 한다. 그리고 Duplicate를 누른다. 지금 단지 원래 pTorus1을 선택하고 Soft/Rigid Bodies를 선택한다. 그리고 Create Passive Rigid Body를 만든다. 지금 모든 다른 복제품들을 선택하고 Soft/Rigid Bodies, Active Rigid Bodies를 누른다. 그것들이 여전히 선택되어 있는 동안에, Fields, Gravity를 선택한다. 지금 씬을 play하면 당신은 달랑거리는 chain을 가질수 있다.
17. BATTLE TWO TURBULENCE FIELDS TOGETHER ¶
[JPG image (288.87 KB)]
실제로 tubulence fields와 함께 질높고 미묘한 효과를 얻을 수 있고, 대부분 동일한 setting이 아니라 약간 다른 frequencies와 magnitudes 두가지를 사용한다. Phase Field Attribute에서 반대 expression을 넣는다. starter를 위해서, one turbulence field에서 phaseY = time*3. 그리고 PhaseY=time*-3.3을 시도한다. 이것은 당신이 single field와 함께 얻을 수 없는 상호작용적이고 cool motion을 위한 field가 될 것이다.
18. SWARMMING BUGS OR ATTACHING FIELDS TO INDIVIDUAL PARTICLES ¶
[JPG image (385.83 KB)]
당신의 다음의 다량의 벌레 공격 영상을 위해, 이 TIP을 사용하라. Particles menu에, Create Emitter를 선택하라. 속도를 0으로 최대 거리를 1로 설정한 Omni로 바꿔라. 30에서 40의 scene을 play하라, 하지만 전혀 움직이지 않는 방출된 particle들이 있다는 것을 주의하라. 여기서, 우리는 적시에 이 particle들을 멈추길 원하고 방출을 끊기 원한다. particle1을 선택하고 Solvers를 선택하고, 선택을 위해 초기 상태를 setting하라. 다음은, Dynamics Relationships Editor안에 방출을 끊어라. particle1을 선택하는 것으로 이것을 하고 그때, 우측 위에 있는 Emitters를 선택하고 unhighlighted 되어 있다면 emitter1을 클릭하라. 이제 당신이scene을 되돌리고 play할때 아무것도 일어 나지 않고 particle들은 놀고 있다. particle1을 선택하고 Fields, Newton을 선택하라 particle1과 newtonFile1을 둘다 선택하고 Fields를 선택하라, Field의 Source로서 Selected를 사용하라. 이제 그 field는 각각의 particle에 부착될 것이다. newtonField1 Attribute Editor안에 Special Effects 아래에 Apply Per Vertex를 선택하라. 이제 Magnitude를 .1로 setting하고 Newton Field Attributes Attenuation을 setting하라. 마지막으로, Use Max Distance가 check가 안되어 있음을 확인하라. 당신은 timeline을 1000정도로 setting하고 play때리고 살충제를 잡아라-아마 당신은 필요할 그게 것이다.
19. MAKE APARTICLE EMIT A TRAIL OF PARTICLES ¶
[JPG image (352.51 KB)]
이 trick을 위한 이전의 tip안의 bug swarm을 사용하자. 우리가 Newton Fileds를 적용했던 particle1을 선택하고 Particle들을 선택하고 Object option box로부터 방출하라. Omni Emitter Type을 명기하고 Create를 눌러라. 이제 당신이 scene을 play하길 원하면 당신은
질질 끄는 action을 보여주지 않는 퍼진 particle들을 가질 것이다. 우리는 그저 만들었던emitter2를 선택하고 Attribute Editor, Basic Emisstion Speed에 속도를 .1로 setting하라. 다음에, particle2를 선택하고 그 것의 Attribute Editor 안에 Lifespan Mode를 Constant로 Lifespan value를 .3으로 setting하라. 다음에, Add Dynamic Attributes section으로 가서 Opacity를 고르고 Add Per Particle Attribute를 선택하라. Per Particle(Array) Attributes에 opacityPP안에 Right-click을 하라. 이제 이 field에 Right-click을 다시하고 Edit Array Mapper를 선택하라. 1에서 .2로 Max Value를 바꿔라. focus를 particleShape2 main attributes로 바꾸고 Render Attributes에 Current Render Type을 말하는 button을 누르고 그때 Point Size를 1로 바꿔라. scene을 play하고 다른 lifepans를 실험하거나 Add Dynamic Attributes, Color에 color를 추가하고 쩌는 효과들을 위한 Per Object Attributes를 추가하라.
20. EMIT PARTICLES FROM AN IMAGE OR TEXTURE ¶
여기 초현실적인 것이나 파티클 사용에 좋은 팁이 있다. 수평 NURBS plane을 생성해서 사이즈를 30으로 한다. nurbsPlane1을 선택하고 Dynamics > Particle > Emit from Object 옵션을 연다. Emitter type를 Surface로 바꾼다. emitter1을 선택하고 Ctrl-A를 눌러 Attribute Editor를 연다. 가장 아래에 Texture Emission Attributes가 있다. Texture Rate slider 아래의 Enable Texture Rate를 체크해준다. 다음에 Texture Rate slider 옆에 버튼을 누른다. Create Render Node 창이 뜨고 사용할 텍스처를 선택할 수 있다. Checker pattern을 선택한다. 이제 파티클은 오직 하얀색 checker pattern에서만 발생할 것이다. emitter1 attributes에서 Speed를 0으로 바꾸고 씬을 플레이한다. 천천히 파티클이 checker pattern을 형성하는 것을 볼 수 있을 것이다. Basic Emitter Attributes의 Rate(Particles/Sec) 수치를 올려주면 패턴을 더 빠르게 더 확실하게 볼 수 있다. 패턴을 바꾸려면, emitter Attributes로 가서 Texture Rate에서 마우스 오른쪽 버튼을 눌러 Break Connection을 선택한다. 이제 창조적이고 다양한 다른 텍스처를 추가할 수 있다. 움직이는 이미지맵 시퀀스같은 것에도 적용이 가능하다.
[JPG image (886.44 KB)]
21. KNOW YOUR FIELD OPTIONS ¶
Dynamics를 사용하는데 있어서 시작 지점에 특정 설정을 적용할 수 있다. 이는 기본 설정을 무시하고 특정 설정이 나오므로 유용하다. 이러한 설정은 모든 필드에 동일하게 적용된다. 여기 일반적인 설정이다: Magnitude는 필드의 힘이나 어떻게 세게 파티클 미는 정도를 말한다. 이 설정은 씬의 규모에 따라 틀리지만 일반적으로 1로 설정한다. Attenuation는 Magnitude가 거리에 따라 영향 받는 정도이다. light decays와 비슷하다. 0은 거리에 상관없이 똑같은 영향을 준다는 뜻이다. 이 값을 증가시키면 효과는 줄어든다. 1에서 2정도가 적당하지만, 0에서 시작해야 한다. 또한 Max Distance를 꺼주는 것도 도움이 된다. 이제 이 셋팅으로 필드를 생성하면 좋은 시작지점에서 할 수 있다. Max Distance와 Attenuation을 끈 것이 당신이 처음 필드를 추가할 때 잠재적 혼동을 줄여준다.
[JPG image (258.04 KB)]
22. GET YOUR TURBULENCE ON ¶
파티클에 Turbulence field를 추가해서 흥미롭고 풍부한 동작을 만들 수 있다. 불행히도 기본 설정은 그 자리에 파티클이 그대로 남는다. 간단한 expression을 Phase Y attribute에 추가한다. 시작점에 phaseY=time*3을 넣어라. 시간에 따라 Turbulence 움직임을 볼 수 있다. Phase X, Y, Z를 조합해서 어떤 방향으로든 turbulence를 움직일 수 있다. 종종 멀리 움직이거나 카메라를 향해 움직일 경우 유용하다.
[JPG image (290.06 KB)]
23. Emit more particles as the emitter goes Faster ¶
여기 굉장히 유용한 트릭을 소개하려 한다. 마야는 전형적으로 속도에 맞는 emission 비율을 조절을 못하게 한다. 구를 만들고 expression을 구의 translation X attribute에 더하라. tx = sin (time*3). scene이 움직이면 그 구는 뒤와 앞으로 부드럽게 x축을 따라서 움직일 것이다. ball이 선택되면, particles -> Emit from Object option ->setting 을 눌러라. Surface Emitter Type 에서 Rate(particles/Sec) 를 2000으로 하고, speed를 0으로 바꿔라. particle1 Attribute Editor에서 Emission Attributes아래 Inherit Factor를 1로 바꿔라. Lifespan Attributes-> lifespanPP only를 선택해라. Per Particle Attributes로 가서 lifespanPP에서 오른쪽 클릭하고 Runtime Expression을 선택하라. 그리고 다음 expression을 기입하라.
$magv=mag(velocity);
if (rand(1)<linstep(0,1,$magv/3))
lifespanPP=1;
else
lifespanPP=0;
장편을 재생할때 보면, 오브젝트가 빠르게 움직일수록 파티클 배출량이 많아진다는 것을 볼 수 있다. 오브젝트가 느려지면, 줄어든다. 다른 장면에 적용할때는 속도가 얼마나 줄어드는지 알아야 할 것이다. 그것을 바꾸기 위해서는 $magv/3의 3을 다른 정수 값으로 바꿔주어라. 이 트릭은 Creation Expression 안의 종속적인 속도만을 마야에서 보여줄 때만 작용한다. if (rand(1)<linstep(0,1,$magv/3))
lifespanPP=1;
else
lifespanPP=0;
[JPG image (178.41 KB)]
24. Particle replacement ¶
dynamics 패키지의 부분중에 큰 단위의 무리 움직임을 가장 획기적으로 컨트롤 할 수 있는 방법이 있다- Particle geometry instancing. 기본적으로 핵심이 되는 오브젝트들의 인스턴스 카피들을 각각의 파티클에 놓아라. 이것은 새들의 무리라 구름, 떨어지는 돌들을 움직이는 상당히 좋은 방법이다. 소스 오브젝트는 움직여 지거나, 그것들의 시퀀스가 될 수 있다. Per-particle attributes는 행동의 개인적인 수정을 가능하게 하고, 다른 오브젝트들은 서로 다른 파티클의 인스턴스가 될 수 있다. 약간의 창의력이 있으면, rich particle toolset와 합쳐졌을 때, 복잡한 애니메이션을 위한 많은 가능성이 존재 한다. 시작하기 위해서 너의 선택의 간단한 초안을 만들거나, 계층 모델을 만들어라. 다음에는 파티클의 배열을 만들고, Particles ->Particle Tool options set에서 Create Particle Grid checked에 Text Fields checked 를 선택해라. 그리고 Corner set을 -5,0,-5와 maximum Corner set을 5,0,5로 맞춰라. particle array 가 만들어지면, obeject를 선택하고, Ctrl-click을 통해 particle을 더해라 그리고 파티클 과 Instancer(Replacement)를 선택하라. 각각의 파티클에 instance 카피들이 나올 것이다. 좀더 흥미롭게 만들자면, 파티클에 필드(하늘, 중력, 난류)를 적용하라. 재생된 하면 상당히 느릴 것이다. 그래서 Playblasting으로 애니메이션을 검사한다. instancer option menu에 많은 독창적인 옵션이 존재하니 잘 사용 해 보라.
[JPG image (153.18 KB)]
25. INVASION OF THE BLOB ¶
마야에서 무드러운물체는 정말 재밌고 파워풀한 모형이다. 간단하지만 그들이 할 수 있는 것의 그래픽 표현은 고전 공상과학소설 The Blob 에 대한 경의이다. 16spans 와 sections로 구성되어진 넙스구를 생성해보자. F를 누르면 뷰에 적절히 맞춰진다. 구 위에서 오른쪽버튼으로 클릭하고 Materials 를 Blinn으로 맞추자, 컬러를 RGB 값에 각각 64, 80, 83로 바꾸자.구를 선택하고 화면 해상도를 3을 클릭하여 높이자. dynamics 메뉴에서 Soft/Rigid Bodies를 선택하고 Sofe Body options 를 선택하고 -> Create Soft Body 옵션에 들어가서 Creation Otions 를 Duplicate, Make Copy Soft로 선택하고 Hide Non-Soft Object와 Non-Soft a Goal을 클릭하고 Weight를 0.7로 범위를 맞추자. 자 이제 Paticles 로 가서 Creat Emitter옵션을 선택하고 type을 omni로 rate를 12로 speed를 4로 바꾸자. particle1의 Attribute Editor을 열고 Redder Attribute를 셋팅하자 Particle Render Type 을 Streak로 바꾸고 Lifespan Mode를 Constant 로 하고 Lifespan을 0.5로 하자. Inherit Factor 을 0으로 셋팅하자. Frame Range 100으로맞추고 particle emission을 체크하자. 자 이제 아무것도 선택하지말고 Fields-> air를 선택하자. Magnitude를 10으로 잡고 Speed 를 1로 Direction XYZ 모두 0르호 하자 Maximum Distance를 1로 하고 airField1과 particle1 모두를 선택하자 다시 Fields로 가서 Use Selected As Source of Field를 선택하자. 이제 copyOfnurbSphere1Particle Attribute Edotor 을 열자. nurbsSphereShape1의 Goal Weight이 default 0.7보다 낮아질대까지 아무것도 일어나지 않는다. Blobby animation은 시작될 것이다. Emission Speed 그리고 AirField Attenuation, Goal Smoothness가 바뀜에 의해 많은 효과 가능하다. 필요할때 government rtoops를 가져와라
[JPG image (73.4 KB)]
26. CACHE AND CACHE AGAIN ¶
보통 파티클 시뮬레이션의 playback 이나 playblasting 은 충분하다. 그러다 만약 scrubbinf 한다면 reverce에서 playing 하거나 타임라인에서 각각의 플레임을 클릭하는 것이 요구된다. run-up calculation은 run-up calculations 는 RAM cache 나 disk에 아웃풋 될 수 있다. 이것은 오브젝트나 scene-wise 에 사용되진다. 각각의 파티클 오브젝트는 RAM에 저장된다. 파티클 노드를 선택하고 Solvers, Memory Caching, Enable을 선택해라. Windows-> Settings/Preferences->preferences, Dynamics, Run Up to Current Time이 꺼졌는지 확인해라. Play back sequence 가 cache에 로드 되기위해그리고 그렇게됐을때 Solvers, Memory Catching, Delete를 선택해라. 디스크에 저장하기위해 Solvers, Create Particle Dish Cache를 선택해라. 이 방법은 심지어 만약 추가의 필드가 더해졌더라도 그래서 사용 볼가능하더라도 cache를 활용화한다. Solvers,Edit Oversampling 또는 Catche Settings선택하고 Particle Disk Cache, Use Particle의 선택을 해제해라. 만약 모든 이것들이 routine work에 연관되어 있는 것처럼 보인다면 마야는 좀 더 쉬운 run- up 옵션 을 제공한다. window,settings/preferences,preferences,settings, dynamics 에서 Run uo to current time 옵션을 선택해라. 이 코맨드를 무시하면 만약 너가 필요할때 다른 non dynamic 애니메이션 실행을 취소를 필요로하면 dynamics 는 계산되지않을 것이다. Save Startup cache 옵션은 디스크와는 대조로un-up cache를 당신의 파일에 저장함으로 당신을 도와준다.
[JPG image (57.39 KB)]
27. WHIRLING DERVISHES ¶
이번에는 굉장한 팁이 되는 유익한 것이 있다. 일부는 particle instancing machanism을 로봇이 바람에 날려 날아가거나 돌맹이들이 떨어지는 그러한 instance geometry에만 사용된다고 생각한다. 그러나 명백하지 않은 것은 흥미로운 이팩트들은 instancing particle system으로 성취되어진다. 처음 파티클 시스템을 만드는 시도를 해봐라. 파티클 툴 메뉴에서 파티클 수치를 100, 최대 radius를 4로 하고 만든다. 파티클 구름을 만들기 위해 처음것을 선택하라. 그다음 파티클, emitter 생성을 통해서 두번째 파티클을 만들어라. emitter의 rate와 speed를 2로 맞춘다. 구름 파티클을 먼저 선택해서 두개의 파티클을 선택하고 particle ->instancer은 선택해서 instancer을 만들어라. 자, 파티클 위에 파티클이 만들어졌다. 이제 처음 파티클의 y축 회전의 움직임을 통해서 전체가 움직이는 것을 봐라. particle render type을 streak으로 설정하고 tail size를 20정도로 놓는다. line width을 2로 놓을 수도 있다. 그리고 multi pass rendering을 체크하고 render passes 25정도로 설정하고 하드웨어로 렌더를 건다. 마지막으로 motion blur를 30정도로 설정한다. 만약 이방법으로 전체의 애니메이션을 렌더하고 싶다면 motion blur를 위해 적당한 cache가 필요하다. 이것은 또한 하드웨어 렌더 버퍼의 유용성을 강조하는 기회가 될 것이다.
[JPG image (339.12 KB)]
28. holy smokes! ¶
이것은 담배연기나 먼지를 나타내는데 굉장히 유용한 기술이다. 이것을 실제적으로 표현하기 위해서는 이것들이 실제로 그러한 것처럼 꽤 오래 남아 있어야 한다. 이것을 시각화하는 쉬운 방법은 파티클을 surface로부터 내뿜는 것이다.6.0 버젼부터 폴리곤으로투버 내뿜을 수 있기 때문에 plane(수치20)을 만들고 다음의 순서대로 행해봐라. 1.surface의 emitter type을 설정해라. 2.타임라인의 앞부분 프레임에 많은 양의 파티클들을 생성하게 keyframe 한다. 3.particleshape's 속성에서 lifespan mode에서 lifespanpp 만 선택한다. 4. add attributes for current render type을 선택하고 포인트 사이즈를 50으로 한다. 5.general을 선택한 후 ismin, ismax, clumpyness이라고 불리우는 파티클 시스템의 노드에서 세개의 scalar float 속성을 각각 5,15,0,5로 지정 후 더한다. 6. lifespanpp속성을 우클릭 후 expressin을 생성한다. 중요한 것은 noise function으로 lifespanpp를 조정하는 것이다. 다음 이 expression을 더한다. "lifespanpp=lsmin + (lsmax-lsmin) * (0.5 + 0.5 * noise(position * clumpyness));
29. HOLY SMOKES!(continued) ¶
첫째로, 그것을 조각 시스템의 모양 마디의 당신의 속성을 더하고 주의해라, 당신은 조각들의 창조물 expression.Maya는 당신을 위하는 안의 그들을 사용할 때 그들의 이름에 "."을 붙이는 규칙을 제한하는 것을 필요로 하지 않는다. 여기의 각각의 조각들의 수명 값이 최소값 lsMin과 시작하고, 그 때 추가의 더해진 noise space와 IsMax의 최대값의 탄생 위치 기본의 총계를 가진다. noise space의 크기는 덩어리진 속성에 의해 통제되고 어떻게 매끄럽거나 임의의 결과물의 지각을 할지는 조각 구름의 붕괴는 초과시간이다. 마지막으로 noise 함수의 돌려받는 값의 이유는 -1과 1, 이것을 첫번째 갖는 값에 의해 0-1로 바꾸고 그 때 이것을 위로 반(0.5+0.5*) 이동시킨다. 각각의 조각이 받는 좋게 보여지는 수명값, rgbPP 속성을 Color button을 클릭할때 더하고 Add Per Particle Attribute check box를 선택하고, 표현을 창조하는데 이 줄을 추가한다.
rgbPP = lifespanPP / lsMax;
빛나는 조각, 긴 실물들. 세개의 속성들을 위한 다른 값들에 당신이 넣기를 시도할 때, 특히 덩어리값 일때, 아마도 noise space 그것 자신이 보일 것이다. image를 위해, 나는 Particle RenderType을 "Sprites"와 한개의 연기 이미지 지도로 모든 조각을 바꾼다.[JPG image (262.63 KB)]
30. FADING IN AND FADING OUT ¶
[JPG image (122.1 KB)]
[JPG image (77.57 KB)]
particle effects를 위해 이전의 팁의 연기 묘사 처럼, 그것은 사실성을 더하고 조각이 생겨났을 때 성가신 "popping" 동작을 피하기에 항상 particle 시스템의 불투명도를 수정하기에 최고다. 불투명도를 통제하고, Attribute Editor의 Opacity 버튼을 써서 opacityPP 속성을 더하다. 불투명도는 표현법에 통제될 때 할 수 있지만, 나는 ramp가 쉬운것을 사용 하는 경우들의 한개를 찾는다. 그래서, Attribute Editor의 opacityPP 줄 위에 우클릭을 하고 Create Ramp를 선택해라. 그 ramp는 기본값에 의해 grayscale이다. 튀는 현상을 피하는데, 나는 ramp의 밑의 색 조종자를 추가하고 검은색으로 만든다. 이 ramp의 바닥은 조각의 생명의 시작과 같고 정상은 이것의 죽음과 같다. 마찬가지로, 검은색은 투명한 조각을 만들고 흰색은 완전한 불투명을 만든다. 나는 보통 상황에서 Bump나 Smooth를 지키는데 ramp의 interpolation type을 set한다. 이것은 종종 조각들과 작은 불투명도값의 많은 양의 결합을 사용하는데 유용하다. 때때로 적은 것의 원하는 결과값을 이루는데 불투명값을 단지 ramp editor로 가진다. 당신이 더 좋은 통제를 필요로 할 때 당신은 ramp의 Array Mapper의 연결점 ramp editor의 페이지나 조각 모양의 Attribute Editor 페이지의 opacityPP 라인의 우클릭하기과 Edit Array Mapper선택의 Output Connections 버튼을 클릭하기에 조종 할 수 있다. 그중에, 당신은 ramp를 위한 값의 정상화 맞추기를 할수 있다. 예를 들어, 당신은 Max Value 0.5 값으로 효과적인 모든 ramp값 반 떨어뜨리기를 할 수 있다.
31. RING OF FIRE ¶
“Holy Smokes!” 팁으로부터 나온 노이즈기반의 수명 기술을 사용하는 또다른 예는 간단한 불 시뮬레이션입니다.
NURBS 원을 생성하고 모든 축의 스케일을 10으로 키웁니다. 방출형태로 원을 사용하는 “Holy Smokes!” 팁에
설명된데로 파티클 시스템을 만듭니다. 그때, 다음을 따라합니다.
NURBS 원을 생성하고 모든 축의 스케일을 10으로 키웁니다. 방출형태로 원을 사용하는 “Holy Smokes!” 팁에
설명된데로 파티클 시스템을 만듭니다. 그때, 다음을 따라합니다.
ㆍEmitter Type to Curve
ㆍRate to 5000 and Speed to 3
ㆍDirectionX to 0 and DirectionY to 1
ㆍParticle Render Type to MultiStreak
ㆍColor Accum to on
ㆍIsMin to 0, IsMax to 5, and clumpyness to 0.35
ㆍRate to 5000 and Speed to 3
ㆍDirectionX to 0 and DirectionY to 1
ㆍParticle Render Type to MultiStreak
ㆍColor Accum to on
ㆍIsMin to 0, IsMax to 5, and clumpyness to 0.35
이제 시간이 지남에 따라 불의 고리에 약간의 변화와 움직임을 주는 두가지를 하게 될 것입니다.
먼저, phaseMult로 불리우는 파티클 쉐입 노드의 특성에 스칼라 입자 특성을 추가하고 값을 0.25로 설정합니다. ;
두번째로, 식을 다음과 같이 수정합니다.
먼저, phaseMult로 불리우는 파티클 쉐입 노드의 특성에 스칼라 입자 특성을 추가하고 값을 0.25로 설정합니다. ;
두번째로, 식을 다음과 같이 수정합니다.
lifespanPP = IsMin + (lsMax - IsMin) * smoothstep( -O.5, I, noise(position * Clumpyness + time * phaseMult));
식에서 time * phaseMult요소는 노이즈 계산을 변화시키고, 기본적으로 결과는 시간이 지남에 따라 노이즈 공간을
통해 이동하게 됩니다. Smoothstep의 기능은 당신이 가깝게 유지시키는 것들중 하나가 될 것이며(?),
그것들의 brother linstep 과 함께, 당신의 MEL 포병 무기고 안에 있을 것입니다. 처음 두 범위의 두 함수를
모두 표준화한 세번째 값은, 1차로 행해지는 linstep 그리고 2차로 행해지는 smoothstep이 됩니다. 이 경우,
0에서 1의 범위 안에서 노이즈 값을 -0.5와 1사이 안으로 바꾸게 됩니다. 아랫쪽 영역은 0으로 채우게 되고
위의 영역은 1로 채워지게 됩니다. 0으로 생성된 아랫쪽 영역에서는 더많은 죽은 파티클들의 결과를 일으게 되고,
밖으로는 불꽃을 생성하게 됩니다. 당신은 파티클 시스템에 이러한 두가지 영역을 추가할 수 있습니다.
마지막으로, 규칙 rgbPP식을 수정하여 불에 일부 색상을 생성할 때 다음과 같이 합니다.
통해 이동하게 됩니다. Smoothstep의 기능은 당신이 가깝게 유지시키는 것들중 하나가 될 것이며(?),
그것들의 brother linstep 과 함께, 당신의 MEL 포병 무기고 안에 있을 것입니다. 처음 두 범위의 두 함수를
모두 표준화한 세번째 값은, 1차로 행해지는 linstep 그리고 2차로 행해지는 smoothstep이 됩니다. 이 경우,
0에서 1의 범위 안에서 노이즈 값을 -0.5와 1사이 안으로 바꾸게 됩니다. 아랫쪽 영역은 0으로 채우게 되고
위의 영역은 1로 채워지게 됩니다. 0으로 생성된 아랫쪽 영역에서는 더많은 죽은 파티클들의 결과를 일으게 되고,
밖으로는 불꽃을 생성하게 됩니다. 당신은 파티클 시스템에 이러한 두가지 영역을 추가할 수 있습니다.
마지막으로, 규칙 rgbPP식을 수정하여 불에 일부 색상을 생성할 때 다음과 같이 합니다.
rgbPP = <<1 , 1 , 0>>;
그리고 Dynamics 식이후에 Runtime에 따라 추가합니다.
rgbPP = <<1 , 1 - ageNormalized , 0>>;
이것은 불길이 타들어가는동안 빨간색이 생긴 부분에 노란색 파티클을 생성합니다. 많은수의 랜더패스와 많은
모션블러를 사용하는 “Whirling Dervishes”에서 언급한 Hardware Render Buffer 같은 방식을 시도합니다.
또한 Color Accum 체크박스에 전환 뿐만 아니라 Attribute Editor에서 Render Attributes 부분의 multiStreak 파티클의
꼬리 싸이즈 길이도 바꿀 수 있습니다. 당신은 파티클에 난류 필드를 추가할 수 있고 그것들의 Conserve 특성을
0.97쯤으로 설정하여 파티클이 막히지 않도록 컨트롤합니다. 마지막으로, “Fading In and Fading Out”에서
설명된 대로 파티클에 불투명도를 추가해 봅니다.
모션블러를 사용하는 “Whirling Dervishes”에서 언급한 Hardware Render Buffer 같은 방식을 시도합니다.
또한 Color Accum 체크박스에 전환 뿐만 아니라 Attribute Editor에서 Render Attributes 부분의 multiStreak 파티클의
꼬리 싸이즈 길이도 바꿀 수 있습니다. 당신은 파티클에 난류 필드를 추가할 수 있고 그것들의 Conserve 특성을
0.97쯤으로 설정하여 파티클이 막히지 않도록 컨트롤합니다. 마지막으로, “Fading In and Fading Out”에서
설명된 대로 파티클에 불투명도를 추가해 봅니다.
[JPG image (38.07 KB)]
32. INTERACTIVE PLAYBACK ¶
잘 조정된 Dynamic구현을 위해서 6.0버젼에서 새롭게 선보이는 Interactive Playback기능을 추천한다.
Interactive Playback은 실시간으로 시뮬레이션이 구현되는 동안 상호적인 작용을 조정할 수 있도록 한다. 예를들어서, 20*20의 바닥으로 사용될 평면을 만들고 반지름이 0.2인 팔각실린더를 만들고 3~4회 복제시켜서 각각의 것들이 불규칙적으로 보이도록 만든다. 다만 실린더가 바닥평면의 상위에 위치하는 것은 확인해야 한다. 다음으로, 평면을 Passive Rigid Body object로 만들고 실린더에 영향을 주기위한 gravisy field를 추가한다. 완료가 되면, Solvers->Interactive Plaback을 실행하여 실린더 오브젝트들에 변화를 주자. 영향을 받는것을 즉각적으로 확인할 수 있을 것이다.
Interactive Playback은 실시간으로 시뮬레이션이 구현되는 동안 상호적인 작용을 조정할 수 있도록 한다. 예를들어서, 20*20의 바닥으로 사용될 평면을 만들고 반지름이 0.2인 팔각실린더를 만들고 3~4회 복제시켜서 각각의 것들이 불규칙적으로 보이도록 만든다. 다만 실린더가 바닥평면의 상위에 위치하는 것은 확인해야 한다. 다음으로, 평면을 Passive Rigid Body object로 만들고 실린더에 영향을 주기위한 gravisy field를 추가한다. 완료가 되면, Solvers->Interactive Plaback을 실행하여 실린더 오브젝트들에 변화를 주자. 영향을 받는것을 즉각적으로 확인할 수 있을 것이다.
[JPG image (233.03 KB)]
33. PARTICLE DEFORMATION ¶
파티클의 모양을 잡는것은 간단한 작업이 아니어서, 프로세스를 효과적으로 만들기 위해 추가적인 툴이 요구되기도 한다. 6.0에서 파티클의 모양을 잡는 기능이 가능해졌다. 파티클은 Skinning 과 Blend Shape Deformer들에 의해 모두 영향을 받을 수 있도록 되었다. 파티클의 변형을 위해서, 파티클오브젝트를 선택하여 파티클을 만들고 원하는 파티클 오브젝트를 선택한후 Animation메뉴의 Deformer에서 원하는 Deformer를 선택하여 변형하면 된다.
[JPG image (217.34 KB)]
34. Using Numeric display mode ¶
만일 파티클이 당신이 생각한 대로 행동하지 않을 경우, 이는 자주 그것들의 파티클당 수치 속성이 반사되기 때문이다. 이러한 속성값을 쉽고 편리하게 보기 위해서는 파티클 형태의 파티클 렌더 타입을 수치로 바꾸어 주면 된다. 기본적으로 각 파티클은 id속성을 의미하는 숫자로 보여진다. 그러나 그 외에도 라벨을 추가하는 속성 옆에 현재 렌더 타입 버튼을 클릭하는 것으로 다른 속성을 보여줄 수 있다. 이것은 속성 이름 필드에 보여주고 싶은 속성 값의 이름을 적는 것으로 보여줄 수 있다. age를 써 넣고 애니메이션을 재생하면 파티클의 age를 보여주어 age스케일러 값이 증가하는 것을 볼 수 있다. velocity를 적어 넣어보자. 그러면 각 파티클의 위치에서 세개의 값이 파티클의 속도를 보고하는 것을 볼 수 있다. 이러한 메커니즘은 파티클의 상태과 파티클 당 표현식의 에러를 수정하는데 도움을 주어 많은 시간을 절약하고 두통을 완화시킬 수 있다.
[JPG image (211.53 KB)]
35. Birthing particles into noise space ¶
noise space를 기반으로 파티클을 만들어 내어 재미있는 효과를 만들 수 있다. 이러한 아이디어는 noise space의 공간에 만들어졌는데 특정 값 이하의 값을 가진 파티클은 죽이고 그 외에는 살리는 것이다. 연습을 해보려면 다음과 같은 셋팅을 가진 방사체를 만들면 된다 :
Emitter Type = Volume
Rate = 100000
Volume Shape = Sphere
Away from Center = 0.0
Rate = 100000
Volume Shape = Sphere
Away from Center = 0.0
이 방사체의 크기를 10으로 늘린다. 그리고 파티클 시스템의 렌더 타입을 스피어로 정한다. 그리고 이 지속시간 모드를 lifespanPP 만으로 설정하고 만드는 룰에 다음의 표현을 추가한다:
float $freq = 0.35;
float $cut = 0.5;
lifespanPP = (noise(pos * $freq) > $cut) ? !)) : 0;
float $cut = 0.5;
lifespanPP = (noise(pos * $freq) > $cut) ? !)) : 0;
$freq 변수는 noise space의 사이즈를 결정하고 $cut 변수는 파티클의 특정 값을 정하여 그 이하가 된 파티클의 lifespan을 0으로 정해 파티클을 죽이게 한다. 애니메이션을 재생해 보고 안이 차는 것을 조금 기다려 보자. 아무도 포도라고 생각한 사람 없나요? 이제 돌아가서 와인 한잔과 좋은 책을 볼 때이다.
[JPG image (133.28 KB)]
36. CREEPY CRAWLY PARTICLES ¶
particle goal weighting과 per-particle attribute의 사용은, particles가 surface 또는 mesh를 통하여 서행하도록 만들 수 있다. geometry의 U와 V 값은 그것들에 기대되어지는 매우 중요한 효과의 기반이 된다. 여기에서 crawler의 방식은 poly torus와 함께 시잔한다.
- poly torus를 만들고 바랐던 scale로 키운다.
- Particle, Emit from Object를 사용하여 torus로 부터 Particles를 방사한다.
- Particles, Goal menu를 사용하여 torus에 goal object를 만든다.
- Surface를 위해 emitter type을 바꾼다.
- Need parent UV option을 체크한다.
다음으로 particle shape 노드의 Goal Weights and Objects frame에서 torus의 Goal Weight를 1로 set하고 Add Attribute 창의 Particle tab으로부터 particle system을 위한 다음의 attribute를 추가한다. : parentU, parentV, goalU, goalV. setup을 완성한다. 지금 당신은 particles crawling을 얻기 위한 expressions를 만들고, 각각의 프레임에서 U나 V중의 하나에서 particle의 goal을 단순하게 발전시킨다. 첫번째로, surface 상에서 particle이 생성될 위치에 particle을 붙여넣을 expression을 만든다.
goalU = parentU;
goalV = parentV;
그리고 난 후, Runtime before Dynamics에서 goal position을 점차적으로 증가시키고, U에서 surface를 가로질러 particle을 움직인다.
float $inc = 0.005;
goalU = (goalU +$inc) % 1;
modulo operator(%)는 goal value cycle에 사용되고, U = 1 boundry에 cross하기 위한 particle과 그들의 여행을 다시 하도록 허용한다; 그렇지 않으면 그들은 border에 모두 정제된다. $inc 변수는 particles가 surface에서 frame 당 움직이는 거리를 결정한다. 그리고 그들의 속도도 결정한다. 여기에서 모든 particle 들이 같은 속도로 기어간다. 변경된 goal setting line에 따라 그들을 다양화 시키는 것은 쉽게 된다.
goalU = (goalU + $inc * (abs(noise(id)) % 1;
노이즈 function은 그것의 id number에 기초한 각 파티클의 속도를 변경하는 것에 사용되어 진다. 또한 그 절대값 function은 particle의 뒤로 멈춤과 움직임 없이 확신하는 것에 사용되어 진다.
- poly torus를 만들고 바랐던 scale로 키운다.
- Particle, Emit from Object를 사용하여 torus로 부터 Particles를 방사한다.
- Particles, Goal menu를 사용하여 torus에 goal object를 만든다.
- Surface를 위해 emitter type을 바꾼다.
- Need parent UV option을 체크한다.
다음으로 particle shape 노드의 Goal Weights and Objects frame에서 torus의 Goal Weight를 1로 set하고 Add Attribute 창의 Particle tab으로부터 particle system을 위한 다음의 attribute를 추가한다. : parentU, parentV, goalU, goalV. setup을 완성한다. 지금 당신은 particles crawling을 얻기 위한 expressions를 만들고, 각각의 프레임에서 U나 V중의 하나에서 particle의 goal을 단순하게 발전시킨다. 첫번째로, surface 상에서 particle이 생성될 위치에 particle을 붙여넣을 expression을 만든다.
goalU = parentU;
goalV = parentV;
그리고 난 후, Runtime before Dynamics에서 goal position을 점차적으로 증가시키고, U에서 surface를 가로질러 particle을 움직인다.
float $inc = 0.005;
goalU = (goalU +$inc) % 1;
modulo operator(%)는 goal value cycle에 사용되고, U = 1 boundry에 cross하기 위한 particle과 그들의 여행을 다시 하도록 허용한다; 그렇지 않으면 그들은 border에 모두 정제된다. $inc 변수는 particles가 surface에서 frame 당 움직이는 거리를 결정한다. 그리고 그들의 속도도 결정한다. 여기에서 모든 particle 들이 같은 속도로 기어간다. 변경된 goal setting line에 따라 그들을 다양화 시키는 것은 쉽게 된다.
goalU = (goalU + $inc * (abs(noise(id)) % 1;
노이즈 function은 그것의 id number에 기초한 각 파티클의 속도를 변경하는 것에 사용되어 진다. 또한 그 절대값 function은 particle의 뒤로 멈춤과 움직임 없이 확신하는 것에 사용되어 진다.
[JPG image (1.1 MB)]
37. CONSERVE YOURSELF! ¶
partivles로 장난 치는 건 자주 gravity와 turbulence의 사용을 동반한다. 이 힘들은 particles에 속도를 부여하고 당신이 그것을 알기 전에 당신의 particle system은 통제불능이 될 수 있다. 너무 많은 속도를 얻는 것으로 부터 particles를 유지하기 위해서 Conserve attribute는 turned down될 수 있다. 그 이름이 암시하는 대로, 이 attribute는 frame에서 frame으로의 속도의 percentage의 보존을 통제하고 작은 변화는 큰 효과를 가진다. 기대된 일처럼 보이지 않는 모든 갑작스런 자극들은 조작할 수 있게 되고 전망적이 된다. 빠른 예로써, emitter를 만들고 200으로 rate를 올리고 setting changes을 따라 turbluence field를 추가하라.
Magitude = 5.0
Attenuation = 0.0
Frequency = 0.4
Interpolation Type = Quadratic
Attenuation = 0.0
Frequency = 0.4
Interpolation Type = Quadratic
animation을 되 돌려보고 particles를 turbulence pattern에 따라 어떻게 실행할지에 대해 주목하고 그때 공간으로 drift하라. 이제, 1부터 0.94까지 particle shape node위에 Conserve value를 감소시키고 어떻게 interestion pattern이 발생하는지 보라. 이 점에서 희망적으로 당신은 "Cool!"이라고 말할 것이다.
[JPG image (499.42 KB)]
38. INTERPENETRATION?! WHAT DID I "COLLlDE" WITH? ¶
만약에 인접한 오브젝트 그룹이 부서지는 시뮬레이션을 할 때(예를 들어, 유리나 벽돌벽) interpenetration error들로 귀찮아지면, 당신은 각 오브젝트를 다른 collision layer에 넣어서 떼어놓을 수 있다. 충돌하는 오브젝트는 모든 collision layer들에 반응하도록 설정한다. collision layer는 rigid Body node 설정에서 기본 0으로 설정된다. 이 스크립트를 이용하여 선택된 rigid body 오브젝트의 collision layer 설정을 바꿔준다.
string $rbs[] = ls -sl;
int $i;
for($i-0; $i<size($rbs); $i++)
setAttr ($rbs + ".collisionLayer") $i;
이제 각 오브젝트는 서로 충돌하지 않지만, collider object와 충돌은 원하지 않는다. collider의 collision Layer 설정값을 -1로 하면 이제 모든 collision layer들과 반응한다.
string $rbs[] = ls -sl;
int $i;
for($i-0; $i<size($rbs); $i++)
setAttr ($rbs + ".collisionLayer") $i;
이제 각 오브젝트는 서로 충돌하지 않지만, collider object와 충돌은 원하지 않는다. collider의 collision Layer 설정값을 -1로 하면 이제 모든 collision layer들과 반응한다.
[JPG image (896.75 KB)]
39. DEACTIVATING PARTICLE COLLISIONS ¶
[JPG image (199.55 KB)]
만약 당신이 씬에서 기하학적으로 파티클 충돌할 경우, collisions를 일시적으로 비활성화할 수 있다. geoConnector 노드의 Resilience값을 -1로 해서. 다시 활성화하려면 간단하게 이전 값으로 돌리면 된다. 만약 파티클 시스템의 particle collision event를 정의하지 않으면 이는 작동하지 않는다.
40. RUNNING MULTIPLE RIGID BODY SIMULATIONS ¶
Rigid body setups는 생성하는 동안에 할 수 있고, 시스템 작업을 얻어 시간을 아낄 수 있고, 당신은 당신 것과 슈퍼바이저의 것의 숫자가 달라서 곤란하지 않을 것이다. 인터페이스를 통해 명백하지는 않지만, 마야의 rigid body 시뮬레이션 처리를 기록 메커니즘과 멀티플 baking 교환으로 대비한다. 어느 정도 캐싱 시스템에서 당신이 가만히 있다면. 처음 bake할 때 애니메이션 커브를 생성하고 rigid body 오브젝트에 지정하고, solver로부터 실시간 계산된 결과로 되돌린다. 각 채널의 경우 선택한 노드는 애니메이션 커브와 기하학사이에 추가된다. 기하학에 대한 허용은 커브나 선택한 노드의 Selector 설정 값을 기본으로 한 rigid body solver로 구동된다. 추가적으로, 새로운 커브는 현재 만들어진 인덱스로 결정되고 rigidBody 노드의 Baked Simulation Index 설정에 연결된다. 위에 말한 Selector attribute에 연결되어 바뀐다. 당신은 Hypergraph창에서 연결할 수 있겠지만, 요약하자면 사실 당신은 바꿀 수 있다.
그전의 시뮬레이션을 재생하려면, 커브의 initial keyframe 값을 선택하고 index number로 바꾸어라. 이 index curves의 모든 것에 접속하기 위한 쉬운 방법은 rigid 물체를 선택하고, Graph editor 보여주고 와 show에 있는 Attribute menu에 Driven by Anim Curve optioin을 선택하여라. 모든 것이 중복 되는Frame the curves, 첫번째 keyframe을 선택하고 ,desired로 선택하라. 선택을 확인하기 위해서 애니메이션을 실행하라.
그전의 시뮬레이션을 재생하려면, 커브의 initial keyframe 값을 선택하고 index number로 바꾸어라. 이 index curves의 모든 것에 접속하기 위한 쉬운 방법은 rigid 물체를 선택하고, Graph editor 보여주고 와 show에 있는 Attribute menu에 Driven by Anim Curve optioin을 선택하여라. 모든 것이 중복 되는Frame the curves, 첫번째 keyframe을 선택하고 ,desired로 선택하라. 선택을 확인하기 위해서 애니메이션을 실행하라.
[JPG image (346.34 KB)]
41. Row,row,row your sim gently down number streams ¶
[JPG image (366.55 KB)]
마야 6.0의 새로운 기능은 반복되는 파티클의 동작과 같은 것들을 편리하게 해주는 다중 임의 숫자 stream에 대한 준비이다. 예를들어 만약에 각각의 파티클의 무거운 속성이 특별한 값을 받을때 파티클 시뮬레이션이 필요 하다면 파티클 시스템은 특별한 임의 수학적 흐름을 사용하여 설정시킬 수 있다. 이는 각각의 파티클 덩어리는 매 번 똑같은 값으로 매겨진다는 것을 알 수 있다. 기본적인 하나의 흐름만 있고 생산환경 안에서 공동 화면 파일이 실행될때 반복의 보장이 없으면, rand function을 쓰는 금기가 될 수 있다. 누가 expression 안의 임의 기능을 불러 왔으며, 기대된 값을 마음대로 망쳐버린다고 알 수 있을까?. Noise function은 임의적 숫자의 시퀀스를 모방하는 논의와 같은 프레임 값의 곱셈을 대신해서 사용 될 수 있다. 이제 random number streams는 이름과 연결 될 수 있으며, 각각의 stream에 다른 이름을 쓸 수 있다. 이 것이 어떻게 작용하는지 몰려면, volume emitter를 하나 생성 하고 XZ를 조절하여 평명에 가깝게 스케일을 조절하라. emitter의 rate를 10와 같이 적게 적고, render type을 numeric으로 정하고, mass를 attribute name으로 정해라. creation rule을 다음과 같이 수정해라.
mass = rand("test",0,10);
첫번째 줄은 쓰고싶은 값의 stream name을 지정하는 것이다. 이 줄은 원하는 대로 마음대 로 쓸수 있다. 만약 stream이 존재하지 않는다면, 마야는 지정된 범위안에서 기본 시퀀스의 숫자들로 값을 뿌려준다. 만약 시뮬레이션을 다시 다시돌리고 실행 한다면, 다른 숫자들이 생성되는 것을 알 수 있다. 이것은 지금 stream의 계속적인 숫자들이다. 각 재생의 시작으로 부터 시퀀스를 반복하려면, 다음 non-particle expression을 더하라.
if(frame == 'playbackOptions -q -ast')seed("test",7);
이것은 만약에 지금 프레임이 타임라인의 시작과 일치한다면 마야는 scratch로 부터 시작한다는 것을 말한다. 다른 숫자는 seed function로 부터 다른 숫자 시퀀스를 생성하는 것을 지나간다.
42. RENDERING HARDWARE_BASED PARTICLE TYPES IN SOFTWARE ¶
만약 파티클 시스템을 렌더해야한다면, 파티클 시스템의 컬러는 마야의 software rederer 를 사용하는 rgbpp per- particle attribute에 의해서정의되어진다. particleSamplerInfo 유틸리티 노드는 우리를 구하기 위해서 개발되었다! 간단하게 당신이 선택한 쉐이더를 생성하고 Color channel slider 옆에 checkered box 클릭만으로 컬러 채널에 particleSamplerInfo노드를 연결한다. 팝업된 Create Render Node에서 top에 있는 유틸리티 탭을 고르고 그 창의 아래에 Particle Utilities frame 에 있는 particleSamplerInfo 버튼을 클릭해라. 다음 rgbpp 어트리뷰트를 가지는 파티클 시스템에 쉐이더를 연결하고 파티클 시스템의 ParticleRender 타입을 셋팅하자 타입은 Blobby Surface(s/w) 같은 소프트웨어 타입중의 하나로 하자. 씬에 라이트를 생성하고 렌더해보자! 예를들어 나는 particles의 컬러를 서페이스에 맵핑된 이미지로부터 뽑아내서 surface-based emission system을 생성해왔다. 나는 또한 blobbies에 threshold value를 가지고 만들고 렌더한 후에 시스템에 어떤 형태를 주기위해 turbulence field를 첨가했다. 그래서 마야 시작 이미지의 걸죽한 연출의 결과를 가져왔다. particleSamplerInfo 노드를 디폴트함으로써 basic per-particle 어트리뷰트들을 알아라. rgbpp 나 opacitypp 그리고 그것들을 다뤄봐라. 그러면 유저가 지정한 플롯 맵핑을 가능하게해주고 array per-particle 어트리리뷰트들을 방향도 잘 알 수 있다. 이런것들은 창의적인 파티클 시스템을 가능하게해준다.
[JPG image (44.84 KB)]