SYDNEY MARIE SMITH

View Original

Dr. Strange VFX Recreation: Battling Burnout

At long last, I’ve made it to (just about) the halfway point and can finally take a breather during spring break. Having spring break on the horizon proved to be both a blessing and a curse this week when it came to my motivation and hit me with a bad wall of burnout, but I just barely managed to push through to try and get this project to a good place halfway through the semester.

You know the drill, I’ll quickly go over the small fixes I made first and then move on to the bigger stuff. To absolutely no one’s surprise, I am once again iterating on the cobblestones and their layout this week, this time making the heights of all the cobblestone variations more uniform and also trying to reduce the spaces between the stones. The latter was a bit of a tricky task, since the spacing between each cobblestone depends on the width of each cobblestone in the row, and how many stones there are in that row. The easy answer is to reduce the variation in the width of each cobblestone, but doing that also puts the stones in danger of looking too uniform again. Still, I wanted to try the simple method first, so that’s what I ended up doing this week. I do have a feeling I’m probably going to have to figure out a more complex method to determine the space between stones based on the width of each stone, but that’s a task for another week.

I also ended up delving back into my textures again and adding displacement textures to all my scene elements, since I realized I hadn’t included them previously. This definitely helped to up the realism factor and improve the look of my overall scene as I started to fix the lighting again, so I’m glad that issue was caught sooner rather than later.

The magic stream mostly received some cosmetic changes regarding its coloring and shape, though I also had the pleasure of playing a fun little gambling game with randomized attributes to attempt to get the overall flow shape of the magic stream to look less rectangular and uniform. After adjusting and shrinking the start and end point groups and playing with values for a good hour or so, I managed to get a more promising-looking stream shape that felt less rectangular.

For the magic sparks, I switched up the emission geo a little bit to achieve the effect of having more particles emit from the front of the stream than the back. To do this, I created a density mask attribute on the magic stream geo I used as the particle emitter by adjusting the curveu values with a ramp. I then fed this attribute into a scatter node so that more points would be scattered more densely at the front of the stream, which would allow for more particles to emit from there as well. I also ended up adjusting some of the particle dynamics as well as adding more variation to the particle sizes.

One stubborn issue I need to figure out how to tackle is now that I’ve switched up the way I’m emitting the sparks, the velocity of the sparks feels very off and strangely erratic compared to how they previously looked. Additionally, I swear I added like 10x the amount of sparks when I made them smaller, but at this point it definitely does not look like there’s nearly enough sparks in the scene, so I either need to adjust the minimum size of the magic sparks or just add even more particles to my simulation.

At this point, I thought I was done with refining my previous elements for the week, but something was still bothering me. This was, of course, the infamous cobblestones. The cobblestones haunted me every time I opened my scene file, reminding me that they’re still not looking quite right and the stones in the reference shot look much less uniform. This lingering feeling lead me to go off on an unplanned tangent of work, where I was determined to try out new ways to get even more variation between my cobblestones. The most successful method I attempted was creating a new randomized float attribute based on point number and utilizing a for loop with the copy to points node to grab that new attribute and use it to dictate the bevel amount on each cobblestone, as well as the offset of the mountain noise applied to it. Through lots of trial and error, I even managed to get the cobblestones to have different values applied to these parameters for every single stone copied to a point. That means that even between the 4 different copies of the cobblestones that were scattered across the grid, no two stones have the same number applied to each parameter (in theory). I took this as my big W for the week regarding the layout of the cobblestones, though I’d be lying if I said I was totally satisfied with them even now.

The last thing I decided to do with the cobblestones was going back in and adjusting the movement curves. After watching and analyzing my reference clip for the thousandth time, I realized that it felt like the cobblestones at the back moved higher up vertically than the cobblestones at the front, with the vertical height decreasing in a diagonal line moving forward. Since I have both willingly and unwillingly been learning a lot about VEX code lately, it actually wasn’t too hard for me to dive into the attribute VOP where I shaped the movement curves and figure out what needed to be done to get the effect I desired. The method I ended up using was plugging in the primnum value as a multiplier to the existing curveu and up attributes being multiplied and driven by the ramp that dictated the way the curves looked. I used a fit node to reverse the max and min values since the primnums went from low to high from back to front and I needed the opposite effect to be applied, and also adjusted the strength of the height taper by playing with the max output value.

To my surprise and delight, my little experiment worked! However, I did have a slight issue in that the height taper was also being applied before the cobblestones started moving, meaning in their rest position their height was offset diagonally, so they didn’t sit right in the grid with the rest of the cobblestones anymore. This took a little more problem solving and some more research on my end, but I was eventually able to implement an if statement block into my attribute vop to tell it not to apply the height taper when the curveu value of the line was equal to 0 (AKA before it starts moving along the curve).

So, after having conquered some new problems and lots of R&D work for the week, I ended up with this work in progress shot:

Although I didn’t get quite as many actually new elements completed this week as I would’ve liked, I’m definitely not leaving this week totally unsatisfied with what I was able to learn and accomplish. It was pretty nice to see my VEX coding endeavors paying off in a small way when I had to problem solve and come up with my own solutions to implement new features to my scene, and I look forward to hopefully being able to do so more in the future. That being said, once I get back from the break I definitely need to kick myself into gear again to tackle the remaining half of the elements of this shot that still need to be created, since I still have a little ways to go. Until then, I will be enjoying some time away from Houdin and catching up on missed sleep!