top of page
  • zarahnajmi

Avatar VFX Shot Recreation Week 10: Shaping Pyro and Floating Islands

We've arrived at week 10! I will admit things have been going slower than I'd like lately, but things are starting to turn.


Creating a Custom Velocity Field for the Main Pyro FX

The biggest thing my shot is missing is that custom velocity field to accommodate the motion of the Samson helicopter's rotors. So, that was my first goal for this week.


I found several videos on creating custom vector/velocity fields, but I'm going to start by keeping things simple with a torus. Then I computed the normals.


The next step was to create a bounding volume and fill it with particles using a scatter node. This forms the bounds of the velocity field. An attribute copy gives the scattered points normals from the the torus. Adjusting the threshold lets you fine-tune how much of the nomrals are copied.



Now for the fun part. Inside an attribute VOP, you can take the cross product of the normals by an axis to get some direction for the velocity field. Taking the cross product with the y axis (vector of (0, 1, 0)) gave that swirl that might be produced by spinning rotors.



Finally, to add some outward force to the velocity field I converted the original torus to a VDB volume then used a VDB analysis to compute the gradient, which was saved as an attribute "force". This is simply added to the normals to push them outwards. The final vectors are outputed to the velocity attribute. I added multipliers for the velocity and force scales too.



Then, I lined up the final field with the helicopter's rotor.


Finally, a volume rasterize attributes, with v as the attribute to rasterize. This can be merged with the rasterized attributes from the pyro setup and then all together plugged into a pyro solver.


I ended up experimenting with a whole number of combinations of settings to create different velocity fields until I could find one that I liked. I'm currently working on a video compilation of all those attempts, which I will post separately.


Ultimately, the simple setup described above ended up being the most promising, though I did play with scaling the force and velocity quite a bit. I also added a dot of curl noise to the velocity to break it up a little. I'll definitely have to dive back into it though to further fine-tune it, and I also may need to add more to be able to better control the shape of my smoke and fire.



Volume Slice and Volume Trail nodes can be used to visualize the final velocity field.



Jumping Back Into Procedural Islands

I'll admit, I had been scared to go back to this one. I'd been messing around with them over the past couple weeks but I was never able to land on a look that I liked. However, I've gone back through Rebelway's videos on creating procedural cliffs as well as a couple other videos, and I'm ready to give this a new shot.


I've decided this week to focus just on the island in the center of the screen so I can take the time to experiment. I started by subdividing the base shape a few times to get rid of any sharp edges. Then, I used a VDB from Polygons to allow me to scatter points inside the object, which I then plugged into a voronoi fracture node. I kept the number of scattered points pretty low so I could get larger chunks, and messed with the seed a bit to get an arrangement I liked.


After I got all the pieces in place, I needed to add a little bit of displacement between each one to get some variation in the cracks. I used an assemble node to create separate packed pieces, then an exploded view node to spread all the pieces out. Then, using a rest position for the pre-exploded positions, I was able to mix between the positions of the exploded and non-exploded views with a bit of noise to get some variation.



Then, I repeated the process a second time to create smaller pieces among the larger ones. I used attribute VOPs to add some noise along the normals as well, to break up some of the straight edges between fractures.



After this setup was complete, I could convert everything to volumes and use Volume VOPs to create some nice noises. This part is pretty much the same as what I had done previously. Although, to get some larger noise patterns in, I had to shrink the object first then scale it back up afterwards. This is because, in VOP noise, lower frequency values gave larger noise patterns. However, since my islands are so massive, I just couldn't get a small enough value. After getting the larger scale noises in, I could scale the island back up and use a second Volume VOP to add smaller-scale noise.



I messed around a lot with different settings, but I've decided to leave it at the above point since I was afraid of going too far. Plus, it was getting to the point where my PC was starting to struggle with computing everything. I had already ended up overheating it by adding a little too much earlier and had to dial back. I threw in a couple file caches too to save my PC.


Note: Unfortunately, I ran out of time to render the updated islands, so they won't be in this week's render.


Fireball Tweaks

One major issue with my fireballs is that near the end of their paths, their speed matches up near perfectly with that of the camera, resulting in the fireballs looking near-suspended in one area of the screen. To solve this, I found the best solution to be adding variation to the speed scale and trail duration. I also tweaked the start frame offset just a bit. The trails now move at slightly different speeds from both each other and the camera. I also ended up adding a third pyro trail path since it's randomly generated path fit nicely in the shot.



Adding Slow Motion

Finally, before heading to cache and render, I've gone back through all my pyro fx and turned down the time scale. This is something I'd been neglecting to do for the past few weeks and it was about time I rectified that. Of course, I ended up having to make a few tweaks to some of the fx afterwards, but all clear now.


Adding Motion Blur

Another thing previous weeks' renders were missing was motion blur. In the Karma render settings, it's as easy as enabling motion blur and velocity blur. For the Samson, Dragon, and missile assets, I had to go in and add a point velocity node to computer their velocities for the velocity blur to work. Also, I felt the velocity blur on the Samson was too great, so I dropped in an attribute wrangle and scaled the velocity down a bit.


A Quick Lighting Tweak

Something I noticed in the render view as I was preparing my render was that the tail of the Samson was completely unlit under the thick smoke. I want the light of the fire on my main pyro to reach the tail, however, so it doesn't look completely black. So, I hopped into the geometry light node in Solaris attached to my main pyro fire (it's basically a render geometry settings node with "Treat as Light Source" toggled) and increased the "Light Source Diffuse" and "Specular" multipliers. This seems to be helping, so I'll render things out and see how it all looks together in comp. If I feel more light needs to be added, next week I might just parent a spotlight to the helicopter and point it at the tail (I wouldn't like to mess with the multipliers too much).


The Final Render

Here it is!



A few notes on the render:

The main thing is that I've been running into an odd shader issue on the fireballs, and near the end of the main pyro, in which the shader flickers a whole bunch. I'll have to troubleshoot that. Also, I went back to the island blockouts for now for the sake of render time.

1 view0 comments

Comments


bottom of page