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 ).
I'm Not Even Human is a dystopian short film I directed in 2018. I'm Not Even Human ( The Game ) is a game in the same universe and with same characters as I'm Not Even Human. The game is done in pixel art style drawn primarily by ayyzee ( ayyzee.net ). The game engine is written almost from scratch by me. Using python, GTK and Cairo.
In Germany by law you have designated areas where people can go Nude. Some areas where people can't, by law, wear any clothes. But other areas where people can't go without clothes. But that will be only a very minor crime. And only if somebody was offended, but people rarely do. In 2016 in Italy a 69 year old man ( nice ) masturbated himself in front of a female student in University of Catania in Sicily. The judge gave him a small fine and ruled the case in his favor. Technically legalizing public masturbation in Italy. Giving rise to a few Italian based exhibitionist porn channels. On the other hand a career of comedian Luis CK was nearly brought to an end when it's been shared that he was masturbating in-front of people too. The Schrodinger's Cat is a thought experiment to explain quantum superposition. Where you put a can into a box with a bomb that has 50% chance of blowing up. Until you open the box, the cat is either dead or alive. He is in a superposition. Let's talk about the Schrodinger's Exhibitionism. Or Exhibitionism in moral superposition.
1941 ( a 1979 Steven Spielberg action comedy film ) seems like a parody of Michael Bay. The film's credits literally have explosions happen all throughout, under the scrolling text. There is so much colorful destruction, so much over the top action scenes, so much loud over-bombardment, that I believe this is the Ultimate Steven Spielberg film.
There are more than one crash in Moria's Race. But the most exiting ones happen during the race of the movie. And because this kind of thing was hard for me when I was starting out with Blender, I suppose it will not be a terrible idea to write about how I did it.
Reviewing a movie made by the author of the website, surely there are no conflicts of interest! This review is as honest as I can be without being petty. For the experience to be more enjoyable, reading the context would be beneficial.