This shot was created in Houdini 19.5 mainly with native POP solver. The particles were advected by volumes simulated with Axiom. And the comp was done in Nuke.
I was responsible for all aspects except for the models and the textures, and the shaders of the snow and the river.
I will try to breakdown this shot in detail in this post. If you have any question, feel free to reach out, you can find my contact info in my profile.
*If you don't see the videos below playing, please check the autoplay settings on your browser.
Preparation
First things I did same most of the other shots were brining in the models and set up the animations and the cameras. And then I created the collision SDF for simulation down the line.

I copied a single point point velocity to the SDF with a volume wrangle so it was easier to calculate. And then I used a VDB project non-divergent node to project the vector VDB onto SDF. That gave the collision VDB a more interesting velocity.



And then I copied the engine models onto a circle and animated the rotation.
Simulation
There are 2 stages of simulation,
- advection volumes
- particles
Each could be broken down into several layers/components on their own.
The volume sources were just some simple shapes with pressures or pumps to guide the smoke. And the collision volumes I prepared earlier were plugged into the sim as well.

After I was satisfied with the advection smoke, I then moved to work on POP sims. The 1st layer source was just several circles with noised-up positions and velocities.
In POP solver, I set up some POP force curve force follow original source circles.

And then I set both of the advection volumes to update position with trace midpoint method. It'll make the particles follow the volumes more closely.


And with some POP drag and POP attraction to the center, that was my first layer of the portal. One other thing I did is to still import my space ship model as a static object. I didn't really need it for simulation because I had already made it affect the advection volumes which driven the position of the particles. But I still put it in so I could detect the hit group and use it for shading later on.
I multiplied the speed and the normalized age with a ramp to drive the pscale, and I used a similar setup for the color as well.

And a distorted space ship model was used to volume sample the particles close to where the collision happened. Those particles were brighten up significantly.

The 2nd layer source was a points scattered on a circle and then distorted with aanoise that was driven by uv coordinate offset.
And then I followed a similar POP net setup as the 1st layer for the simulation. The pscale and color setup were also almost the same just with different numbers and ramp curves.
And for the trails that came behind the space ship, I scattered some points on the selected geometry with seed offset on every frame, and there was only a pop wind to blow the particles off the tail of the space ship. The color and pscale were very similar to previous setups.



The last part of the effects was those particles connecting the spinning engine and the actual portal.
It was several lines distorted by some noise. Offset and amplitude was controlled by uv coordinate. In this case the curveu attribute might work as well.
And then it was copied to each engines' positions. A pscale and a color ramp were applied.
That was all for particle simulation. The only thing left is the thruster fire. Although the space ship was flying in Z direction, I simulated the fire in Y direction because it would be way easier to control the fire shape when it's going up. (positive temperature and buoyancy both goes up)
The emitter was some scattered points with noised up velocities, mostly in Y direction.
I simulated with 3 substeps and 2.5 timescale, some disturbance, some turbulence and some confinement, and then applied a pyrobake look.
*If you are interested in the fire simulation, please consider check out my other post about it. It was a shot all about fire.

And it was copied to the space ship thruster position.
One thing I originally wanted to do but ended up gave up on was to render some extra volumes. I used a volume rasterize particles to compute density of the particles, and then volume sampled them back to the particles. After that, I rasterized the density again to create the final volume.


It added some nice atmospheres to the shot, but at the cost of 10 times the render time. So I didn't render them at the end.
Rendering
There wasn't too much complication rendering theses elements. I imported everything into Solaris and setup material libraries for all the geometry and particles. I also enable velocity blur for the volume and the particles. Node tree and scene graph were quite straight forward as shown below.


In this scene, I had 3 camera angles, so I separated them with different render settings and rop nodes. And to do a batch render, I used a top net to schedule it.

Compositing
Compositing this shot was mostly adding glows to direct emission.

And I added even more motion blur to the shot even though I already had it enabled in the render. A stary background(with some more glow) was added at the end. And that's the shot. Let's view the final result again.
Final Result
Thanks for reading the breakdown blog. If you have any question or suggestion, please let me know. And if you find this helpful or interesting, please consider checking out my other breakdown, you can find them on my profile. Cheers.