To place the cycle crash in context, I’ve started animating a short sequence (roughly based on my ‘previz‘). This is basically what leads to the cycle crashing. My son was adamant that the blue cycle be the one that snuffs it, so that’s what happens. I’ve rendered the second camera angle with the frame rate cranked up by a factor of eight. This will allow for moving in and out of slow motion during this part of the animation.
Here’s a quick flat render of the animation:
These trails were created by dropping particles behind the bike. For this, a number of points have been positioned at the exhaust of the cycle. These points function as the source for dropping the particles behind the animated cycles. The particles are just being created without further manipulation and they stick to the location where they were spawned and basically create the ‘scaffolding’ of the exhaust walls.
The particles that belong to a single ‘source’ point can be grouped together through the ‘origin’ attribute set on the particles (which contains the point number of the source point). The next step is to connect the particles into curves based on this ‘origin’ grouping.
These curves are then ‘skinned’ together to form the surface of the exhaust wall. UV’s are generated based on the origin, for the V (scaled to 0-1) and the average position in X and Z for the U.
An attribute transfer is used to transfer the velocity of the bike to the front area of the wall. This is needed to add correct motion blur to the leading edge of the wall which is moving as fast as the cycle.
The last step is to add displacement and subdivide the surface. The displacement adds the turbulence directly behind the cycle and it increases the overall height of the wall, curving up nicely from behind the cycle. Both the intensity of the turbulence and the ‘height ramp’ of the wall are controlled by an attribute derived from the age of the particles (they age as they get further away from the cycle).
The image below shows the basic stages of the creation of the exhaust walls:
The displacement and subdivision was actually only added at the geometry level here for preview purposes. In real renders it will be performed render time, which makes it nicely high resolution. Good thing about Houdini is that the VEX code for the displacement can be shared between geometry displacement and render time displacement, which makes this very easy.
The only slightly complicated thing to do for the correct displacement was to calculate the direction in which to displace. This is done based on the normal of the surface of the wall. The normal is rotated 90 degrees around an ‘up’ vector that was created by using a ‘sort’ sop to shift point numbers on the curves by one (before skinning). The original and the shifted points positions are then subtracted to create a vector that points backwards in the direction of the wall. The rotation of the normal is done along this axis, which results in a ‘normal’ that points ‘upwards’ (taking into account the general angle of the wall). This ‘normal’ is used with a regular ‘displacealongnormal’ vop. This normal is of course not used for shading.
The shaders, including displacement, for the exhaust wall will be touched on in more detail in a later post. These will include additional ‘horizontal’ displacement of the surface adding more turbulence effects. The new shaders (in relation to the shaders used on this animation test and the original animation for SalesForce) will also add reflections and refractions, which should further enhance the look of the exhaust walls.
I’ve also by now done an initial fracturing of the crashing cycle and created a setup that allows animation of the initial impact and the subsequent explosion for the fragments of the cycle. In the next post in this series, I’ll start showing the results of that (animation and hand over to dynamics sim).