I'm in the middle of developing a movie in which there is a car chase. You know me I can't live without a car chase. But this time I'm trying to make the movie properly. By "infiltrating the movie industry" as some people suggested to call it. Which means ( since I live in Israel ) I need to write something that is possible to do in Israel. Getting $40 million to shoot a first feature film in Israel is not something that I can expect to happen. So instead I need to come up with something else.
So a real cinema movie project is being developed, and as explained in my previous article about it I don't have the money to shoot a real chase scene. Instead I gonna use CGI as much as possible, to cut down the costs ( but not my sanity ).
This was a good start. I found a real car I want to mess with, photographed it, and based on those photographs ( in a matter of a few days ) made a good enough model of it inside of Blender.
Since then I produced a few more renders of this car. For example this one:
This one was very easy to do. I simply setup the shot, hit render and did a very basic compositing in blender's compositor to bring it together. And it worked almost out of the box. But not that other one:
This one didn't work so well. With the help of the community I understood that position and scale are stupidly important to make it work. And then I worked my ass off to make the lights be actual models and not textures sourcing the photos of the original car. And that lead me to this version of the same render.
This one I showed to a few people and without knowing that they are looking at a CGI car, they were fooled into thinking it was real. I mean you know that it's CGI and therefor you see flaws in it. And I see them too. But that is very damn close. And I like it.
As you can see here I tried compositing a reflection of the car onto that Mitsubishi SUV and there is also a reflection of the Mitsubishi on the Honda. This was achieved with two hacks.
For the reflections on the Honda I used simple planes with the texture being a part of the original photo. They would have obstructed the car, from the camera view, if not the ability of Cycles Render to filter them out, while still preserving their reflectiveness.
As you can see in the material you can add this Light Path node thing, which has a bunch of black and white outputs. For example Is Shadow Ray will be white everywhere where there is a shadow on the surface of the object, you are using this material for, everything else will be black. So you can do neat tricks like hiding certain things only in the shadow and stuff like that. But for our purposes we need Is Camera Ray. This gives us white if we are looking at the object from the camera. And black if it is reflection or something. So we can now use that to mix between the actual light shader Emission and the nothing shader Transparent BSDF. And from the camera we see nothing, while it is seen in a reflection.
You could probably use this in reverse to render a vampire, so he will be seen by the camera but not rendered in a reflection. In that case you would just need to plug the Transparent shader in the top socket of the mixing node.
But that is not something I can use to add a reflection of the car onto that other car. I need to be more clever.
Technically the shadow catcher ( the object on the bottom that captures the shadow ) can capture certain reflections in blender too. But the problem is, if you put that in front of the Honda to capture the reflections on the SUV, it will block the Honda in that area leaving a spot of mostly transparent pixels. That means I either need to do something about it, or I need to be very precise and model the SUV too, extremely carefully, to capture the reflection.
Instead of course I used a hack. I put something that has the characteristics I need for just this particular reflection. An egg shaped object was enough. And then I separated this object into it's own View Layer.
You can add more than one rendering passes, called "View Layers" in which you can enable and disable different collection in your scene. So for example in the Shadow / Car view-layer, I would have the floor shadow-catcher and the invisible reflection thingies. But I will disable the egg. And then in a Reflection view-layer, I will enable the egg, and disable the other shadow catcher.
Now if you press render, you will see it will render the image twice with 2 configurations. And saving it into OpenEXR Multilayered you will get all of the data ( both renders and other render passes that you might want to enable in the settings ) all neatly organized in one very space-hungry little file that is now useful in compositing.
From there using a simple hand drawn mask I can isolate only the reflection and only where I want them to be visible on the SUV. And calmly overlay them over the image of the SUV to add something you probably can't even see all that well anyway.
I knew from those tests I did that I can indeed model a car ( I mean I made a few short films in Blender, of course I can model ). And I knew that I can render it. About that I wasn't quite sure. My other projects usually were very stylized. But due to those renders being 95% there I felt confident to move to the next step. Animation!
A lot of the CGI fails as soon as it starts to move. It may look stupidly real as a still image. But as soon as there is motion, usually you can immediately tell something isn't right. And I cannot tell you that I have gotten away with it either.
I decided I will rig the car. I used a similar rig to the cars in Moria's Race but now with the risers of individual wheels. So I can raise a wheel up ( say to clear a bump ) and it will automatically pivot the body of the car too.
This wasn't easy by the way. First you need to trick the body to rotate toward the direction of this thing ( while you have 4 of those things ). And then you need to also account for suspension. So the effect of rising the wheel will not be immediate.
Here is a simple version of the same concept that I did to figure it out. You have 4 bones on each side of the plane I want to cause to rotate and one control bone that actually will get this plane rotating.
As you can see the control bone is itself rotated 45 degrees. So it faces each of the 4 corners straight on. This is important. That means I can use Locked Track Constraint for it to basically always face toward one of the corner bones. Locked Track works kind of like Auto-Aim, but only allowing it to spin on one axis of rotation. So I can choose say X for one corner. And Y for another corner. But there is a catch. Each axis now has 2 points to track. One forward facing one backward facing.
For example if I lift the forward right wheel and then also lift the back left wheel, the two motions should cancel each other out and there should be no rotation. For that I can simply add two constraints to the control bone. The second of them set to 50% strength. Making both wheels control the rotation of the bone on the same axis. And the 45 degree rotation makes it so I need to add only 2 constraints for one axis and not all 4, which would be way too complicated.
Then to give it a little suspension play, originally I simply used two Transformation constraints on each of the corner bones. That only operate at a certain range above the threshold of movement. Allowing for the wheel to slightly move on it's own before taking the body of the car with it.
I thought it was enough, so I continued with it. In the end I had to go with a lot more complex system for that. ( Apparently suspension is a spring and therefore there is always some movement of the body, just it is getting stronger the harder you push, which is way more complicated to rig ).
With that I animated this shot. As you can see I spent some time tracking the footage. But because I was shooting from a far with long lens ( a lot of zoom ) I ended up simply using the Tripod option in the solver ( which disables trying to solve 3D movement of the camera ), which did a descent job giving me this camera move.
What was not as easy was to guess how much zoom there was actually in that shot. I tried using fspy ( an app specifically designed for this sort of thing ) but it couldn't give me a good answer, due to how strong the zoom actually was. So I had to basically guess and try a bunch of numbers until I arrived at something that somewhat worked I suppose.
I rendered one version of it, using similar compositing techniques I used on the still shots and it was surprisingly good. I had to of course rotoscope out some of the stuff in front of the car, but it wasn't that hard to do. And then compositing it all together gave me a lot of hope.
To achieve the changing light as the car is passing by the store, I used the footage itself as the light source. I made the shadow catcher actually emit light onto the car, and mapped the footage onto the shadow-catcher. Making it actually surprisingly effective at recreating the lighting conditions ( despite the footage not being HDR ).
Next challenge was to add lights to the car itself. I want to make the chase in the movie I'm making during the night. Which complicates things. At night cars have their headlights turned on, and those illuminate everything. Yet observing the real life at night, I noticed that the illumination is not as strong as might seem at first. And is more like a bright reflection on the surface of the road. So using the same trick with which I did the reflections on that SUV Mitsubishi, this time I captured lights from the headlights ( and the rear lights ) to composite them into the footage.
Yeah, the shot falls apart by the end. I'm not that good at it yet. But the first few seconds of it are very promising. Still I wasn't sure that it would work in a movie. So I came back to the scene of the crime and recorded a few more shots of myself reacting to the Honda driving like and idiot, in hopes that it will all work in the end of the day.
I mean, it somewhat works. Apart from that hump animation in the end ( why did I add it in ? ). And as you can see I got stupidly lucky when making it. At one point when I did takes of my reaction face I saw the same exact fucking Honda doing pretty much the same exact move ( minus the reckless driving ) and I just snapped into "production value" mode and pointed the camera at it, capturing a shot I later ended up using in this stupid test of mine. Yeah, the Honda that passed by there was way cleaner and shinier than the reference Honda. So it does look different. And it seems I messed up the scale a bit. But what a lucky shot that was. OMG.
After all of this I realized that the animation isn't that great. So I went back into the rig. The main issue in the animation happened when the car hoped over that little hump toward the end. And it seems like it is due to the suspension suddenly jumping from no stiffness to full stiffness. That should not happen.
I decided I will redo the controls. Instead of being driven by a Transformation constraint, I could make it be driven by a Driver instead. In Blender almost any value could be Driven by almost any other value with a system called Drivers. Say I want the controller to move up and down ( on Y axis when it comes to rig bones ) by referencing an up and down movement of a wheel. I can right click on that Y coordinate in the object settings and select the option to Add Driver and then via the Driver Editor window, I can change it's characteristics and stuff.
It allows me to take the value I'm referencing, do some math with it, and then apply it to the value I'm controlling. And the coolest part is, I can even use my own custom python functions as parts of the math operation.
So I wrote this little piece of code
# Fuction to rig soft supension of a cardef Soft(var, travel=5, softness=2):# Soft suspension function.# I tried doing it with curves in driver-editor. And using code# was a much better option. LOL absVar = var
if absVar < 0: absVar = -absVar
try: frac =( absVar / travel )if frac < 1: ans = travel *( frac ** softness)else: ans = taver * frac
if var < 0: ans =-ans
except: ans = var
return ans
# Adding this function to the driver's math operations
import bpy
bpy.app.driver_namespace["Soft"] = Soft
This function takes the var, which is the value we are referencing, and then returns the value we want to use in the end of the day. I did a lot of mathy figuring out and came up with a function where you can also control the travel distance before the suspension is stiff to 100%. And the smoothing force. Basically how fast it becomes this stiff.
Here is what it looks like when I make the suspension very soft. It looks rather cool actually. ( In this shot the wheels are glued to the surface of the ground with a Shrink-wrap Constraint. )
I think I need to work on animation separately. Doing simple shots. Simple tests. Trying to figure out how to do everything so it will work in the end of the day. And then do more video compositing shots. Hopefully getting over that fakeness I had in the end of that shot and actually getting to the next step in this journey ( which is to make a fully CGI shot that cuts flawlessly with real footage ).
Shazam! Fury of the Gods is another David F. Sandberg film that has an issue with it's opening. I just reviewed his film Until Dawn and if you can survive the not so good dialogue of the first couple of scenes, you are in for a very good movie. This film has a similar issue.
As far as my speculation goes, I think, it is safe to assume, the following happened: In 1994 ( before doing Bad Boys ) Michael Bay signed a 10 year contract with Jerry Bruckheimer which expired in 2004 ( after Bad Boys 2 ). Knowing that the contract is about to expire, 2 years prior ( in 2002 ) Steven Spielberg, in an attempt to get on good terms with Michael Bay, added a small reference to Bad Boys into his film Minority Report. And then took Bay under his supervision for the next 10 years. Starting with the 2005 film The Island. And through the Transformers franchise. Bay returned the favor by showing a concept car designed for Minority Report ( Lexus 2054 aka Lexus Minority ) multiple times in the background of The Island. Still that's just a theory. I don't actually know what happened. But it seems plausible.
I saw an interview where Quentin Tarantino praises the 1980 Hitchcockian Bryan de Palma film Dressed to Kill. And now after actually watching it myself, I can totally understand why.
A lot of people claim that they need to use proprietary software, either for work or something else. And the question is. Do they consent to it, or the existence of a need makes it some sort of a power dynamic?