2026/01/09

Phoenix FD Maelstrom tutorial 漩渦教學


By Hammer Chen

(This Tutorial was disapproved by my supervisor cause it take some tricks and might not be physically accurate maelstorm. Anyway, today I share it here for those who need it.)

This tutorial will show you how to make a big whirlpool with Phoenix FD. Instead of using a 3dsMax standard vortex force, we will design a particular geometry (a large funnel), and an array of emitters sit on the edge of a funnel, creating an artificial whirlpool. The idea is inspired by the Giant Whirlpool outside Marina Bay Sands Hotel, a Singapore attraction. We will also simulate Foam, Splashes, and Mist. A ship was also placed in the scene, and we set keyframes for the ship, and created a realistic whirlpool.

This method is excellent for a close-up shot, highly detailed whirlpool, but it might not be suitable for making whirlpools on an infinite ocean. For maelstrom on an infinite ocean, we will prepare another tutorial using 3dsMax standard vortex force, which is perfect for a wider shot.


1. System Unit
The funnel geometry in this tutorial is about 1650 cm in diameter, and the length of the ship is about 235 cm, so we use centimeters as our system unit.



2. Animation Length

Set the animation length to 300 in Time Configuration. Because it takes a few frames until water flood covers the whole surface of the funnel, the actually usable animation is ranging from frame 190 to frame 290.


3. Scene Layout

There is a ship in the scene; its size is about 238 cm in length. A funnel with a diameter of 1650 cm. A sphere with a radius of 99 cm, and placed right below the funnel. We also use this sphere as the source of the Body Force, letting the liquid flow down the funnel, and also attracted by the Body Force, like a sinkhole. There are 16 Boxes arranged along the edge of the funnel. The emitting direction is tangent to the side of the funnel so that the liquid flow forms a whirlpool naturally. A LiquidSrc, select 16 boxes as the source. The three Particle Shaders for Splash, Foam, and Mist respectively. We also created a Cylinder that can be used as a liquid Cutter Geom at the edge of the funnel, which cuts off the liquids and particles we don't want.





4. The Funnel


Add the Lathe modifier to the Line and hit the Min button to create the geometry of the funnel.


Add the Edit Poly modifier, remove those bottom faces as indicated by the red arrow.



As shown above, now we have a funnel with an opening at the bottom.


Since Phoenix FD doesn't like geometry without thickness, we add Shell Modifier to make it thicker. Set it's to Inner Amount to 20.0 cm


Add the Turbosmooth modifier, Iteration = 2, to make the geometry smoother. Now our funnel has completed.


With funnel geometry selected, right-click and select Object Properties.


Since this funnel only for simulation, it doesn't have to render out, so we uncheck its Object Properties / Renderable option.


4. Liquid Source
Create a 40 X 40 X 40 cm Box in the scene and select one of them, making the emission direction is tangent to the edge of the funnel, and set this face to ID = 2


Uncheck the Renderable of this Box's Object Properties so that it doesn't render out.



With box selected, right-click and select Phoenix FD Properties


Since we don't want the Box to collide with the liquid, we also uncheck the Solid Object checkbox.


In the top view, select Box, go to Hierarchy / Pivot and hit the Affect Pivot Only button to move the axis of the Box to the center of the funnel.




Go to 3dsMax top-down menu / Tools / Array.



As shown above, copy 16 boxes along the edge of the funnel.

Go to Create Panel / Helper / PhoenixFD, hit LiquidSrc button, click and drag a Liquid Source in the scene. Use the Add button to add the 16 boxes we have just created, set the Emit Mode to Surface Force, and set the Outgoing Velocity to 600.0cm, Noise = 0.1.


In the Polygon ID, set to 2, so the liquid will only be emitted from the face of Polygon ID = 2.




As shown above, the liquid is emitted only the face ID 2.



5. Ship Animation

Here we already prepared a ship geometry, a Point helper, and Circle shape. Because rigid body dynamics for Phoenix is still under development, we will manually keyframe the ship's animation so that it appears floating on the surface of the water. We are going to path constraint the Point to the Circle, and link the Ship to the Point.



Create a Circle shape with radius of 278.5 cm. Be sure to check Adaptive so that the Point can move smoothly as it moves along the Circle.


After selecting Point, go to Animation / Constraints / Path Constraint, select the circle from the scene.



Since liquid flow does not adequately cover the funnel until frame 175, therefore we set the %Along Path start from frame 175, so from that frame the ship start moves with animated Point along the Circle.

Hit the Autokey button and change the value of %Along Path as follows


frame

%Along Path

0

56

175

56

300

83




Go to the Track View / Curve editor, and you should see the curve like that.

Use the Select and Link button to link the ship's model to Point so that when the Point moves along the circle, the ship will follow the point.




In addition to horizontal movement of the ship, we need to pay attention to vertical movement of the ship, because water level do rises up over time. Therefore, we have to animate the ship in Z axis. Make the settings as follows:

frame

Z-axis value

0

1.742

175

1.742

300

30.318



Go to the Track View / Curve editor and see the curve above.



6. Force

We want the liquid flow towards the drainage hole of the funnel, so we put a Geosphere at the hole. A sphere with a radius of 99.0 cm.

With the GeoSphere selected, right-click and choose Phoenix FD Properties.



Check Clear Inside so that when liquid enters the interior of the sphere, it deletes the fluid automatically.


Again, in Object Properties...




Check the Display as Box to display the sphere as a box. Uncheck the Renderable.



Go to Create Panel / Helper / PhoenixFD, hit the BodyForce, click and drag a Body Force anywhere in the scene.

Select the GeoSphere you just created in the scene so that the sphere will become a source of attraction. Set its Strength to 50.0



Left: without Body Force; Right: with Body Force. When there is no Body Force, despite having gravity, the liquid rotates toward itself without sinking toward the sinkhole. Adding Body Force do facilitate the liquid rush to the sinkhole.



6. Liquid Simulator

Go to Create Panel / PhoenixFD, hit the LiquidSim button, click and drag a Liquid Grid Simulator in the scene.

Set the scope of the Grid as shown above. Green box Grid size, its x, y, z = 1221, 1221, 311. Scene Scale = 2.0, Cell size = 1.346 cm. The smaller Cell size, the more liquid the details, the longer the simulation time. Therefore, during the RnD phase, it is recommended to use a larger Cell size for faster iterations. On the other hand, if you want to show more details, you can adjust the Cell size to be even smaller than 1.346 cm.

We increased the Scene Scale to 2.0, increasing the size of the Grid to twice the original size, making the whirlpool more spectacular.

We want the liquid to flow down the funnel faster, so Gravity is increased to 2.0. In general, slower fluid looks beautiful than it's in normal speed. Therefore we set the Time Scale to 0.5.



In the Foam rollout. When Enable, Phoenix will pop out a dialog, "Would you like to create a Particle Shader as well?", click Yes.

We don't want Foam to be produced at the beginning of the liquid emission, only for mesh under the certain threshold that converts to foam; therefore we set Foam Amount to 0.

Rising Speed = 3.50 cm, Falling Speed = 1000.0 cm makes the foam stay to the surface of the liquid easier. The Surface Lock option also helps to lock the water on the surface of the liquid.

Patterns control the pattern formation by the foam. We set the Strength to 0.1, allowing foam to form patterns a little. Radius is set to 10.0 cm. For a comparison of the effects of the Strength and Radius, please see the online documentation:https://docs.chaosgroup.com/display/PHX3MAX/Liquid+Foam#LiquidFoam-Patterns








In the Splash/Mist rollout, when Enable, Phoenix will prompt a message " Would you like to create a Particle Shader as well." Click Yes.

Check Enable to make Phoenix FD simulate Splash and Mist. Set Splash Amount and Threshold to the appropriate values. In this example, we set them to 120.0 and 2.0 respectively.

Splash to Mist controls how fast the splash particles are converted into the mist, which we set to a low conversion rate of 0.1.

Foam on Hit Controls how many foam bubbles are created when a single splash particle hits the surface. This is an important parameter of this tutorial; we set it to 0.1. Depth is set to 2.0

When we enable Foam and Splash/Mist, Phoenix FD will automatically generate the corresponding Particle Shader for us. However, as for Mist, we have to create a Particle Shader for Mist manually.

Liquid-like controls the ability of the splash particles to stick to each other, forming different strings and tentacles. For a comparison of the different values, please see the online description:

https://docs.chaosgroup.com/display/PHX3MAX/Liquid+Splash+%7C+Mist#LiquidSplash|Mist-chaining

Affect Liquid Controls the conversion of liquid to splash, and splash back into liquid. we set it to a slightly lower value of 0.25


Go to Create Panel / PhoenixFD, hit press the PHXFoam button to create a new Particle Shader in the scene. We renamed this Particle Shader to PHXFoam-Mist.



Above are settings of the three Particle Shaders. From left to right: Splash, Foam and Mist's Particle Shader. First, when the Phoenix FD simulates the particles of water, foam, and mist, it produces a corresponding group of particles in the scene. In addition to Splash, Foam will automatically generate a Particle Shader when you check Enable. For Mist's Particle Shader, one must create it manually, and Mist's particle group must be manually added to the Particle Shader. As shown in the top right image, we use the Add button to select the Liquid Simulator in the scene and select the particle group of PG[Mist]of system[PhoenixFDLiquid001].

Furthermore, the Mode for Splash is Splashes; the Mode for Foam is set to Points; the Mode for Mist is set to Fog. Finally, both Splashes and Foam's Size Multiplier are reduced to 0.1. Mist's Size Multiplier is set to 0.5. Count Multiplier is set to 10.0. Cutter Geometry is checked, and the Cylinder has been created in the scene.


In the Liquid Simulator / Preview, check Show Mesh to display a preview of the liquid mesh.




In the Liquid Simulator / Preview, you can change a variety of particles: Splash, Foam and Mist previews. Raise the Detail reduction a bit so that we can see the particles more clearly; otherwise particles will be too dense.



In this tutorial, we set Foam to green color, Splash to red color, and Mist to yellow color. So we can clearly see where the bubbles, water splashes, water mist are in the scene and we can tell their relative ratios.



Although the Simulator has only a Pattern Strength of 0.1 which is a low value, through Preview, you can still see the foam particles (in green color) forming patterns.



7. Rendering

As shown above, since the liquid in this article is emitted from 16 Boxes, it will produce an unwanted water volume, which you won't see in a realistic ocean whirlpool.



Create a Cylinder in the scene with a radius and height of 723.0 cm and 378.5 cm, respectively.




We can go to the Phoenix FD Liquid Simulator / Rendering, check Cutter Geom and select the Cylinder that has been created in the right. Use this Cylinder to cut off the excess water volume at the outer-ring of the liquid mesh.


After cutting with Cutter Geom, we have a cleaner liquid mesh in a disk shape.


When using Cylinder as Cutter Geom, be sure to add this Cylinder to the Exclude list of Liquid Simulator / Scene Interaction. Otherwise the Cylinder will collide with the liquid in the scene, which is not what we want.


The same can be applied to the particle system of the scene, splash, foam, and Mist. Set the Cutter Geometry to the Particle Shader in the scene, and cut off those particles (foam, splashes, and mist) at outer-ring of the funnel.



8. Material, Lighting and Camera
Go to Create Panel / Light / VRay, hit the VRaySun button, click and drag a VRaySun in the scene, which will automatically generate VRaySky and put it in the Environment.



Use Viewport / Realistic shading to preview the shadow effect of sunlight



Be sure to check invisible of the VRaySun; otherwise there may be unwanted white spots in the rendering.



As shown above, without check the invisible, the reflection of sunlight produces many white spots on the sea surface.

Create cameras at different angles in the scene.


Because it is an outdoor daytime scene, the parameters of the camera are focused on not letting the picture be overexposed. F-Number = 8.0, Shutter speed = 200.0


The ocean material. Use the V-Ray Material. Set the parameters as shown above.




Render Liquid Mesh without particles.


Render Liquid Mesh + Splashes


Render Liquid Mesh + Foam

Render Liquid Mesh + Mist

Render Liquid Mesh + Splash + Foam + Mist

We render Splash, Foam and Mist particles render separately, and we can clearly see each of their contribution to the scene. By this way, we can determine whether to adjust the numbers of the particles for a realistic ocean wave. You might want to fine-tune particle number by changing the Count Multiplier of each Particle Shader.


9. V-Ray Frame Buffer

Finally, we do color correction in VFB.
The following are the rendering results of different cameras.






No comments: