Dr. Strange VFX Recreation: Chugging Along

This week was a bit of a doozy when it came to all the different things I tackled-- but in a good way for once! There’s a lot to cover, so let’s get right into it.

One of the first things I worked on this week was, you guessed it, the cobblestones again! Every week I feel like I’m slowly inching towards creating a nice and organic-looking grid of cobblestones, so surely one of these weeks it’ll finally feel right. Long-story-short, this week I messed with the variation in the amount of cobblestones per row and also added a noise to the vertical normals of the stones so that they all weren’t facing perfectly upwards.

I also ended up going into solaris and fixing the textures for the cobblestones, walls, and the fill dirt, since I realized that I had been reading some of the texture files incorrectly (color vs. vector 3). In my defense, it’s been a little while since I’ve worked with regular textures, since last semester I was pretty much exclusively working with the pyro bake material. But this provided a nice opportunity to give myself a refresher on the subject and ended up fixing a lot of the weirdness I was encountering in the way that the materials on my objects were rendering out. Other smaller things I ended up doing included adding a template body in the background of my shot as a size reference, adjusting the camera angle for my shot (I feel like I’m doing this every week and it’s always ever-so-slightly off), adding a mountain noise to the fill dirt to make it less flat-looking, as well as getting rid of the extrusion on the fill dirt so that it’s just a flat plane now.

Now it’s time for the fun (and slightly frustrating) stuff! As you may have seen in my WIP video from last week, the main aspect of the cobblestones animation I was missing was the rotation of the individual stones along with the ripple movement. I managed to get the cobblestones rotating last week, but they looked pretty scuffed and were something I knew I needed to fix this week. To achieve the proper effect, I ended up going back to the orient along curve node, which basically has the exact rotation function I needed to apply to the stones. However, the one problem I kept encountering and the reason I didn’t utilize the node last week, was that if I used the orient along curves node to add the rotation, the moving cobblestones started and ended in a tilted position due to the orientation of the normals on the curves they follow. Nelson was able to give me a (relatively simple, in hindsight) fix for this issue, which was just using an attribute wrangle to set the normals for the start and end points on the curve to be straight up. Once I implemented that simple line of VEX code, I finally had some nicely moving and rotating cobblestones!

After that, I decided to take a break from the cobblestones to work on the magic again, first revisiting the magic stream to finish its animation and movement. The main thing missing from the magic stream was the fact that it’s supposed to disappear after it runs through the cobblestones--something I needed to fix imminently in order to source the magic sparks properly from the stream. You would think that this would not be too difficult of a task, since I had the building blocks in place, surely it wouldn’t be that hard to reverse the effect, right? Wrong.

It took a good hour or two of me just messing with parameters in the attribute VOP driving the magic stream’s movement for me to figure out how exactly to get the stream to grow and then disappear soon after. My main issue was that I knew how to achieve this effect manually when I went in and changed the parameters, but automating it based on frames of the simulation was a whole other matter to figure out.

After lots of trial and error within the attribute VOP seeing what happened when I plugged certain numbers in certain places, switched around numbers, or removed parts of it entirely, I finally figured out how to achieve the correct effect! The solution ended up being swapping some values in the fit nodes that essentially told the vop what the maximum length of the stream should be, as well as promoting some parameters and adding an attribute ramp that would allow me to control how big the active section of the stream is and when it starts to decay. While I was at it, I also turned up the variation in the way that the stream grows so that it doesn’t advance all at the same time and acts more similarly to my reference shot.

Once I was satisfied with my new and improved magic stream, I elected to take an extra step before rendering it out, scattering some points on the polyline I was originally using for the final render of the stream. Nelson and I both agreed the polyline wasn’t looking quite right for the stream, so I wanted to try something new and treat the stream as particles instead, adding some scale and color falloff to the beginning and end of the stream to end up with a much more promising-looking effect. (though I do feel that I might need to scatter more points in the end to limit the more thin and sparse areas of the stream)

Once I had a fully functional magic stream, I used that geometry as the source for the magic sparks particle simulation, which I was able to whip up pretty quickly. With the new knowledge I gained last semester regarding having multiple pop sources in the particle sim, I was able to create a pretty decent first pass of the magic sparks. This included the more numerous faster-rising and short lifespan particles coming from the magic stream, as well as the smaller group of slightly slower-rising and longer lifespan particles that float around and linger even after the cobblestones are moved aside.

This week’s work also had me refreshing my knowledge on adding colliders to my particle sims, since I needed the particles to collide with and be affected by the movement of the cobblestones around them. I ended up using the VDB method to source the collision geo for the cobblestones, since I wanted a high res and not super heavy sim that would interact dynamically with the particles, which ended up working very well! The only slight issue I had was that the velocity that is sourced from the cobblestones is a bit erratic at times, which can send some particles flying while others just bump off the stones and continue floating. But, that’s something I’m hoping I can account for by further adjusting the velocity scale of the cobblestones as well as the friction and bounce values for the particles.

To finish up this first pass of the magic sparks, I added some variation to the size, color, and brightness of the particles based on their lifespans, essentially replicating part of the system I used for my Scarlet Witch magic particles. Getting that perfect Dr. Strange orange color is something I’m definitely still working on and I think will definitely be aided by comp effects, but for now I’ve just laid down the base colors that I can adjust more in later weeks.

After going back and adjusting the timing of the animation of my effects to try and better match it to my reference shot, I came out with this work in progress for the week!

It was honestly pretty crazy writing down everything I did for this week’s work in progress, since it really didn’t feel like as much as it was. I think I’m also just quite lucky to still be at least semi in my comfort zone at the moment, since the scariest thing I’m dealing with is VEX code, which I do at least have some experience in already. I’m willing to bet that my most difficult work is looming ahead of me in the coming weeks, where I’ll be learning vellum grain simulations as well as rigid body dynamics for the last part of the FX I have to create. 

But, even so, I’m cautiously optimistic at the moment about my progress! It has been very satisfying lately seeing the knowledge that I’ve gathered in this past year and a half about Houdini and VFX pay off and allow me to work on this new project not feeling totally lost and unqualified. Though I am a bit scared about diving into more complicated and potentially heavy simulations again to continue working on this shot, I’m also excited to see what else I can learn to add to my Houdini knowledge repertoire!






Previous
Previous

Dr. Strange VFX Recreation: Battling Burnout

Next
Next

Dr. Strange VFX Recreation: VEX Code Crash Course