| Back to Effect House |
![]() |
| 3ds max 5 - San Diego Flyby |
| background |
|
The background image started out from a series of stills taken from the centennial park in Coronado overlooking San Diego downtown.
The camera was a handheld Fuji Finepix 3800 and actually at that point it wasn't planned to use the still for an animation. Usually
for that kind of panoramic picture a stationary camera is used to get the least amount of difference in rotation and vertical position
between the pictures as well as perspective distortion towards the edges of the single frames. The stills were later imported into Photoshop and joined by hand. Also some fine-tuning was necessary to eliminate some boats on the water, bojes and also flags upon the rooftops. It was first planned to replace the nonmoving flags with moving digital ones, but since the focus would later be on other objects the flags would be not significant enough to stand up against the amount of work put in it. Also in the final panoramic picture the water had to be removed, with an alpha channel in place to later be able to fill in the digital water. Since the background was a still it would have been noticeable that the water wouldn't move and so a digital equivalent had to be created. |
![]() [fig. 01 | completed background image] |
| digital environment |
|
The background was mapped on a plane that had the exact width and height ratio as the the photograph itself to avoid unwanted stretching
or squeezing of the image. The next task was to figure out the right position and distance of the camera to the mapped image. This position was crucial since the size and perspective appearance of the spacecraft depended on it. So it was necessary to find some reference material to determine location and dimension. Some aerial photographs and maps found on the internet helped to perform this task. The most detailed reference picture was then loaded into Photoshop for capturing the significant buildings and outlines with paths which were later exported as an AI file. These paths imported into 3ds max and scaled to the right dimension helped to set up the basic layout of the scene and also create some rough buildings for orientation. |
![]() [fig. 02 | complete scene layout with rough reference geometry] |
|
Now with the camera set-up in place and aiming at a general direction, it was possible to move the plane mapped with the background image
to a position where the buildings from the image and the rough geometric structure would line up. Next the field of view of the camera had to be adjusted. Starting from a regular 4:3 ratio in output size, the amount of FOV was altered until the upper and lower edge of the background plane touched the render-safe area of the viewport. This step probably contained the most lack in accuracy since the zoom-factor of the digital camera was unknown as it's not given on any "inexpensive" camera. But again the result was sufficient enough to create the right illusion. |
![]() [fig. 03 | left: standart FOV with 45 deg.; right: adjusted FOV with 103 deg.] |
|
Still one last step had to get accomplished. The idea of the camera panning from one side to the other included the fact that the background
picture had to be always the same distance from the camera whatever direction the camera would be looking at. For that a bend modifier was
added to the background plane to achieve the right amount of curvedness. Just for reference a circle shape was created, centered at the
camera's position with a radius as wide as the distance to the background plane. With that visual reference it was easy to apply the
needed value of bend to the plane. All in all the methods in achieving the right position and perspective were very cruel but sufficient enough for this particular scene. The perspective of the original image isn't obvious enough through the buildings being so far away and also the lack of close reference such as foreground objects. All that led to the decision that an overdone amount of perfectionism would not be visible to the regular viewer. |
| handheld camera |
|
The idea of the shot was to give it the visual style of a handheld tourist camera. In order to accomplish that a significant amount of shakiness
and imbalance was necessary. Since the camera would be standing still the camera target would have to get appropriately animated. The camera target was linked to a series of dummies. The idea was to not directly animate the dummy itself in case the strategy of animation would change. For that the camera target would contain no animation tracks whatsoever and exchanging the object would be quite simple. The same strategy was followed with the animation of the space craft. The craft itself has no animation tracks but it's motion is controlled through a series of dummies. The rough stand-in model for preparing the animation and fine-tuning could then later be exchanged with the hi-res model but keeping the wanted animation. Back to the camera target subject. First a general aiming position of the camera was necessary to create, so a dummy took over that task. An additional dummy was then linked to the first one. It's function was to add a specific amount of shake to the otherwise pretty smooth following animation. Finally, the camera target was linked to this second dummy controlling the camera's aiming direction. The basic movement was created with the animation of the first dummy. It was not told to follow any path since then the animation would be too smooth and too much "locked" onto the flying object. Instead the dummy roughly followed the animation path of the ship with keyframes at more or less regular intervals. Through this the amount of "lagging" behind the object or "overshooting" was very controllable and already resulted in a very natural look. |
![]() [fig. 04 | trajectory of the first dummy (flight path is shown in green)] |
| The secondary camera motion or shake was then added with the second dummy linked to the first one. It's position controller got replaced with a position list and a noise position controller added to that list. Since the needed amount of shakiness had to be subtle but still noticeable it was with the try-out of several settings to achieve the right mixture. Later the noise strength itself went through some fine-tuning at particular time positions when the look of the shakiness was just not right and needed some "calming". |
![]() [fig. 05 | noise controller parameters for the handheld camera] |
| water |
|
Creating the digital water was probably the biggest task. It needed to at least remotely resemble the original look of the water even though
these things hardly ever stick out because of missing reference. But on the other hand it was also a challenge to create some realistic water
without the use of any additional plug-ins, scripts or such. Prior to the start of making the sequence some tests for creating a realistic water went along, since the entire scene would stand or fall with the result from those tests. |
![]() [fig. 06 | the visual reference of the water] |
|
The tests first focused on the creation of the right amount of waviness that was visible in the reference material. Using just bump maps was
a failure right from the beginning since there is no real deformation of the surface and from the camera point of view, just a few meters
above the water surface, the fake was too obvious. The solution to this of course was the use of displacement. The tests that followed after
that were much more promising even though it wasn't clear at this time how to handle the generated amount of geometry at render time without
the cost of too long render times. The displacement in the tests was first applied to a grey plane, checking the result of the different settings. It turned out that actually only one map was necessary to create the right look. The noise map was set to turbulence which creates nice streaks in the map sufficient enough to act as wave crests. |
![]() [fig. 07 | the noise map acting in the displacement channel] |
| But the crest was not sharp enough in the first tests as it usually is with waves. It took a while until the final clue came up on hand. Using the output rollout of the noise map and adjusting the curve to shift the greys more towards the whites made it possible to generate a crest that was narrower than before. |
![]() [fig. 08 | adjusting the output curve of the noise map] |
| In order to create the right motion of the waves the offset as well as the phase of the noise was slightly animated. Just in small amounts as the phase tends to react quite heavy on higher values. |
![]() [fig. 09 | left: displacement without output curve; right: output curve applied] |
|
Having the right reflection on the surface of the water was imperative to later integrate the water with the real background. The reflection
of the buildings and the surrounding sky had to match. For that the background plane described earlier had to be also there for the rendering
of the water to create the necessary reflection. The plane was set to be visible as a reflection but invisible to the camera to maintain the
alpha channel in the output files. The reflection was first controlled through a falloff map set to perpendicular/parallel to control the amount of reflection based on the viewing angle. The mix curve of the two channels was then adjusted based on the reference material. The side channel received a standard raytrace material to be able to collect the reflections from the mapped plane in the background. Also in the raytrace material the falloff rollout was used to dim the reflections towards the far end of the water plane as it visually appeared in the reference material. |
![]() [fig. 10 | adjusted falloff in the raytrace map] |
|
No environment map was used for the raytrace map as the sky was almost clear at the day of shooting the background. Thus only a light blue
color was defined as a background color.
The bump map for the water material started out as a clone from the displacement map. It then underwent some minor adjustments and was combined with an altered map through a mix map. The mix amount was controlled by another map to generate some smoother streaks in the water that are not really noticeable in the final animation. |
![]() [fig. 11 | the complete map tree of the water material] |
|
The next challenge was to figure out how to cover the entire visible bay area with the needed water without having to create an unthankful
amount of polygons through tessellation for the displacement. The basic idea for the solution then came from a making-of from an effects
shot of a german SFX company for the movie "Check in to desaster". In these shots a plane crashes in the middle of the desert - all in
a fully digital environment. They also used displacement to create the needed surface that was only visible in the parts the camera would
see. As soon as geometry would leave the cone of the camera it wasn't visible anymore. In addition to that the geometry had only a fine
resolution in the close area of the camera and a growing coarseness with increasing distance. It was said that this kind of scene management was achieved through proprietary tools in max but the challenge now was to create a similar effect with the standard equipment.
The way was to define the tessellation of the water plane only for the area the camera would see with increased tessellation closer to
the camera. The first thought was to create a highly tessellated plane and then control the amount of coarseness with optimize modifiers
on top of it. But that way didn't go as planned and it was in the end easier to work the other way around. |
![]() [fig. 12 | the modifier stack of the water plane] |
| Through this procedure the water was highly tessellated right in front of the camera and less tessellated in the distance where the displacement wouldn't be as visible. Linking the three selection pyramids to the camera also moved the tessellation through the plane only affecting the visible area. |
![]() [fig. 13 | the three volume select pyramids] |
![]() [fig. 14 | the resulting tessellation of the plane] |
|
Yet still a lage plane was necessary to cover the large amount of water and too many polygons were still present. The solution to this
was not to move the selection and tessellation construct through the water plane with the movement of the camera but to move the entire
plane with it while the tessellation remained static. In that case the plane for the water could be as small al the viewing cone of the
camera with a limited and reasonable amount of base polygons. The selection pyramids were linked to the plane and the plane was linked
to the camera but only inheriting the z-rotation of it, so that it would stay vertically in place. Since now the water was moving literally
through space the displacement map couldn't stay locked onto the plane because it would not leave the waves behind during a pan. By simply
telling the displacing noise map not to see the object xyz as a mapping source but the world xyz as the source it wasn't a problem anymore. Finally to lower the amount of displacement towards the opposite edge of the water plane the displacement was controlled by a gradient ramp respecting the mapping coordinates of the plane to keep the effect locked onto the plane itself. |
![]() [fig. 15 | the gradient on the water plane] |
| Some further distortion of the plane through wave, noise or other modifiers appearing in early water tests was eliminated because the reference material showed almost none of these effects. |
| lighting |
|
The lighting was a pretty straight setup. The main lighting was done through a direct light respecting the natural light direction on the
day of shooting the background image. Since only the space craft needed to receive light with a shadow it was possible to keep the light
cone small. Raytraced shadows gave the appropriate shadow look. The light was then position constrained to the craft, keeping the initial
offset. In that case the light would move with the craft and casting a shadow on it but not changing it's lighting direction. The diffuse light amount was created with a set of omni lights surrounding the entire scene. One set of omni lights came from the upper half acting as a sky dome, the other set came from underneath with a darker color to simulate the light reflecting off the water surface. All in all 37 omni lights were used in the scene. |
| rendering |
| All the different elements were rendered separately: the background (with some higher filtering to later remove pixel jittering and subpixel problems) already containing the alpha channel, the water (with the same high filtering), the space craft with motion blur, the engine glow effect, a particle effect to later control the heat ripples created from the engine. |
| compositing |
|
The entire scene was composited in combustion 1. The major tasks were to create the necessary amount of motion blur to the background image and
to color correct the spacecraft to fit into the scenery. The color correction was also used to fade the craft into the background fog the more the
distance from the camera grows. This included adjustment in saturation, contrast and coloring. Also the craft underwent additional blurring because even with the motion blur already on it the appearance was still too sharp for the shot. The heat ripples at the end of the shot were created with a particle system triggering the partial displacement of the background. For details see www.dvgarage.com |
|
If you have any comments or questions regarding this making-of, please contact me. I hope that this making-of is a little helper for your own projects. Written by Ingo Clemens [2003] |
| Back to Effect House |