이번 Blender 4.5의 Fluid 시뮬레이터를 이용한 Fire와 Smoke 시리즈의 아홉 번째 튜토리얼에서는 Turbulence와 Curve Guide 같은 Force Fields를 사용해 시뮬레이션 요소들의 거동과 궤적에 영향을 주는 방법을 살펴보겠습니다.
이 튜토리얼은 Blender 4.5의 불과 연기 기초에 관한 10편짜리 미니 시리즈의 일부입니다. 전체 에피소드 목록을 보려면 여기를 클릭하세요.
영상 자막 텍스트
안녕하세요! 이번 Blender 4.5의 Fluid 시뮬레이터를 이용한 Fire와 Smoke 시리즈의 아홉 번째 튜토리얼에서는 Turbulence와 Curve Guide 같은 Force Fields를 사용해 시뮬레이션 요소들의 거동과 궤적에 영향을 주는 방법을 살펴보겠습니다.
이번 튜토리얼에서 사용할 시작 씬은 매우 단순하며, Domain과 Fire와 Smoke를 Inflow 모드로 방출하는 구체만으로 구성되어 있습니다.
씬에 Empty를 추가하면 여기에 Force Field를 할당해 시뮬레이션 요소를 교란하거나 유도할 수 있습니다. Force Fields는 Mesh 오브젝트의 Fluid 시뮬레이션과 마찬가지로 Physics 패널에서 찾을 수 있습니다. 저는 일부 Force Fields가 특정 방향으로 작동하기 때문에, 이를 시각적으로 바로 이해하기 쉽도록 Empty 타입을 Arrows로 선택했습니다.

그런 다음 Force Field를 추가했는데, 기본 타입은 Force입니다. 각 Force Field에는 Tooltip이 있어 해당 작용과 영향을 주는 방향을 설명해 줍니다. Force는 기본적으로 Point 모양을 가지며 중심에서 방사형으로 작용합니다. 그러나 시뮬레이션을 재생해 보면, Inflow 오브젝트가 Force Field 범위 안에 있는 것처럼 보여도 눈에 띄는 효과는 없습니다.
이런 경우 작동하는 절차 중 하나는 다음과 같습니다. 먼저 프로젝트 파일을 저장하고 캐시 폴더를 지정합니다. 그다음 Domain의 Baking 모드를 All로 전환하고, Blender가 최소한 몇 프레임이라도 시뮬레이션을 계산하도록 둡니다. 이 과정이 끝나면 Play를 눌러 시뮬레이션이 제대로 계산되었는지 확인합니다.
제대로 실행되면 Domain Cache를 비우고 Baking 모드를 다시 Replay로 설정합니다. 프로젝트의 애니메이션 길이와 Domain의 시뮬레이션 프레임 범위를 조정한 뒤 Timeline에서 Play를 누릅니다.
시뮬레이션이 이제 정상적으로 실행되면, 이후부터는 Replay 모드에서 다양한 효과를 테스트할 수 있습니다.
효과의 강도를 제어하기 위해 Force Fields에는 Strength 필드가 있으며, 이는 선택한 Force Field에 적용되고 애니메이션이 가능합니다. 참고로, ALT 키를 누른 상태에서 필드를 클릭해 값을 변경하면 여러 개의 선택된 오브젝트에 동시에 적용할 수 있습니다.

Strength는 개별 Force Field의 강도를 조정할 수 있을 뿐만 아니라, 애니메이션을 통해 그 값을 시간에 따라 변화시킬 수도 있습니다. 하지만 Domain 튜토리얼에서 배운 것처럼, 씬 안의 모든 Force Fields 또는 특정 타입의 Force Fields에 대한 영향을 제어할 수도 있습니다. 이러한 설정은 Domain의 Field Weights 섹션에 있으며, 이 또한 키프레임을 가질 수 있어 하나 또는 여러 Force Field의 효과를 시간에 따라 애니메이션할 수 있습니다.
Force를 포함한 많은 Force Fields의 Strength 필드는 음수 값도 허용합니다. Force의 경우, 이는 Fire가 Force Field 쪽으로 끌려가도록 만듭니다. 화면에는 Empty의 움직임을 애니메이션하고 Force를 음수 값으로 설정한 예시를 보여드리고 있습니다. 보시는 것처럼 Fire와 Smoke를 유도하는 흥미로운 방법이 될 수 있습니다.
Blender에서 제공되는 모든 Force Field의 파라미터를 전부 다루려면 별도의 미니 시리즈가 필요할 정도라서 여기서는 다루지 않겠습니다. 하지만 살펴볼 만한 중요한 섹션이 하나 있는데, 바로 Falloff입니다. 이 옵션은 Force Field의 영향을 미치는 범위를 설정할 수 있습니다.

현재 Force Field는 감쇠 없이 전체 가상 공간에 영향을 미칩니다. 더 명확한 예시를 위해, Force를 Wind로 변경하고 Strength를 음수로 둔 상태에서 확인해 보겠습니다. Wind는 Z축에서만 작동하고 Inflow 오브젝트와는 꽤 떨어져 있음에도 불구하고, 여전히 영향을 주는 것을 볼 수 있습니다.

Force Field의 영향 범위를 제한하려면 Falloff 섹션의 Max Distance 필드를 사용할 수 있습니다. 기본적으로 이 파라미터는 비활성화되어 있습니다. 활성화하면 Force Field의 범위가 3D Viewport에서 원으로 표시됩니다. 다른 많은 파라미터와 마찬가지로 Max Distance에도 키프레임을 넣을 수 있어, Force Field의 효과를 애니메이션에서 제어하는 또 다른 방법이 됩니다. 이 경우 Wind는 Strength를 음수로 두었기 때문에 불꽃과 Smoke를 끌어당깁니다.

이제 Max Distance를 비활성화하고, Force Field를 원래 방향으로 되돌린 뒤 Strength를 양수 값으로 설정해 다른 Force Field 몇 가지를 빠르게 살펴보겠습니다.
불꽃에 움직임을 추가하는 데 매우 유용한 Force Field는 바로 Turbulence입니다. 이 Force Field가 만들어내는 교란은 매우 강력해서 Smoke가 불꽃을 가려버릴 정도입니다. 그래서 Domain에서 Dissolve 옵션을 사용해 이를 줄였습니다.
Turbulence는 Noise 파라미터를 높여 더 무작위적으로 만들 수 있습니다. 이 Noise는 사실 특정 패턴을 따르는 의사 난수이며, Noise Seed 파라미터를 통해 패턴을 선택할 수 있습니다. 불꽃이 Vorticity를 조정하거나 Texture를 추가한 뒤에도 여전히 너무 균일해 보인다면, 작은 Turbulence Force Field가 바로 필요한 해결책일 수 있습니다.
마지막으로 Curve Guide Force Field를 살펴보겠습니다. 이는 시뮬레이션 요소가 경로를 따라가도록 할 수 있습니다. 이 예시를 위해 저는 초기 씬을 처음부터 다시 만들고, 새 파일에 프로젝트를 저장한 후 Domain을 위한 새로운 캐시 폴더를 설정했습니다. 이렇게 하면 씬에 배치된 Domain과 Inflow 오브젝트의 초기 설정은 새로 생성할 때의 기본값이 됩니다. 다만 Smoke가 시야를 너무 가리지 않도록 Dissolve를 활성화하고, 기본값보다 많은 프레임 수로 설정했습니다. 또한 Inflow 오브젝트를 옆으로 옮겨 경로 곡선을 위한 공간을 확보했습니다.

Bezier Curve를 추가하고 위치를 조정해 Curve Guide Force Field를 부여했지만, 결과는 상당히 실망스러웠습니다.
Curve와 Curve Guide Modifier에 익숙하다면, 경로의 시작점에 Curve의 Origin을 설정하는 것이 좋은 습관이라는 것과, 무엇보다 Curve가 올바른 방향을 가져야 한다는 것을 알고 있을 것입니다. 이는 Edit Mode에서 Curve Overlays로 확인할 수 있으며, 방향이 잘못되었을 경우 Switch Direction으로 수정할 수 있습니다. 시뮬레이션을 다시 시작하면 상황이 약간 나아지지만 여전히 완벽하진 않습니다.
저는 Domain에서 Gravity를 비활성화하거나 Field Weights에서 Curve Guide 값을 높이는 등 여러 설정을 시도했습니다. 물론 Vorticity와 Reaction Speed를 낮추거나 Resolution을 높이는 등의 방법도 시도했습니다.
무언가 변화는 있었지만 충분하지 않았습니다.
그래서 제가 원하는 결과를 얻기 위해 보통 사용하는 방법을 보여드리겠습니다.
Inflow가 있는 오브젝트에 Emitter 타입의 Particle System을 추가하고, 파티클이 제대로 방출되도록 기본 파라미터를 설정합니다. 파티클은 이미 Force Field의 범위 안에 있기 때문에 곡선을 바로 따라가는 것을 볼 수 있습니다.

Force Field의 범위는 해당 패널에서 Minimum Distance 파라미터로 설정할 수 있습니다. 여기에서 Clumping을 1로 설정하면 모든 파티클이 곡선의 끝점으로 모이게 됩니다. 이 시점에서 파티클은 렌더링되지 않아야 하므로, Emitter의 Particle System에서 Render를 None으로 설정한 뒤 다시 Inflow 패널로 돌아갑니다.
이 패널에서 Flow Source를 Mesh에서 Particle System으로 바꾸고, 방금 만든 파티클 시스템을 지정합니다. 이렇게 하면 경로를 따라 움직이는 파티클에서 Fire와 Smoke가 방출됩니다. 여기서부터는 Fuel, Vorticity 등의 파라미터를 조정해 원하는 불꽃 형태를 만들 수 있습니다.

튜토리얼을 마무리하기 전에, 곡선의 컨트롤 포인트를 외부 오브젝트에 연결해 곡선 형태를 쉽게 애니메이션할 수 있는 Hooking이라는 기법을 보여드리겠습니다. 먼저 곡선을 선택하고 Edit Mode로 들어가 마지막 컨트롤 포인트를 선택합니다. 그런 다음 Hook 연산자를 사용해 Hook To New Object 옵션을 선택하면, 이 목적을 위한 Empty가 생성됩니다.

Object Mode에서는 이 Empty를 이동하거나 애니메이션할 수 있으며, 그에 따라 곡선과 불꽃도 변형됩니다.
물론 다른 컨트롤 포인트에도 더 많은 Empty를 추가해 동일한 기법을 사용하면 더 복잡한 애니메이션을 만들 수 있습니다.

이미 눈치채셨겠지만, 어느 시점에서 파티클 방출이 멈춥니다. 이 파라미터는 Frame End라고 하며 Particle System 패널에 있습니다. 같은 패널의 Lifetime 파라미터는 파티클이 곡선을 따라 이동하는 속도를 제어합니다.

마무리하기 전에 몇 가지 더 고려해야 할 점이 있습니다. Emitter 오브젝트의 크기는 방출 면적의 크기를 결정합니다. 따라서 파티클을 더 좁은 곡선을 따라 집중시키고 싶다면 이 오브젝트의 크기를 조정하세요. 파티클 수는 불꽃 곡선이 얼마나 잘게 나뉘어 보이는지에 영향을 주므로, 불꽃이 더 부드럽고 연속적으로 보이게 하려면 수를 늘려야 할 수도 있습니다.
이와 관련해, 다음 튜토리얼에서 다룰 Motion Blur를 사용하는 것도 도움이 될 수 있습니다.