Klanky the Robot's 3ds max stuff - Plugins, models and more!










Remastering Corner Stone:
The Least-Animated, Animated Film in History
April 18, 2010

A lot of people are going to be wondering: Why would I spend time reworking a crummy little 20-year-old animated short that's hardly animated at all?  I'd like to explain.  But first a little background…

When I set out in 1985 to start creating a 3D modeling and rendering program, my dream was to create 3D animated cartoons.  My benchmarks back then were things like the original Tron and one of Pixar's prototype animated shorts, Andre and Wally B.  Later, the iconic Pixar shorts Luxo, Jr., Red's Dream and Knick Knack fueled my desire to tell a story with the software we were developing.

It was a long road, and along the way I used our software to create little test animations - Nothing significant, but doing a little bit here and there pushed me to actually tell a story with the software.  Bits of the puzzle were falling into place as we went along - I was working on the 3D modeler, materials editor and renderer, which let you create the images, but the key to creating animation - making those images move -- was in Dan Silva's keyframer module, which he started working on in late 1989.

We were so busy just getting the basic work done and getting the software debugged, sometimes working over 16 hours a day, I didn't have a lot of time to devote to playing with the keyframer - Until the middle part of 1990, a few short months before 3D Studio would be released.  In mid-July, I found out from Gary Yost that he was working with animator Steve Speer, Autodesk's Jamie Clay and the rest of the group in the Autodesk Multimedia Division to create a promotional short for the 3D Studio launch.  It would be called The Bored Room, would be several minutes long and was a massive undertaking.  Rendering something like that on the fastest PCs of the day (20-megahertz 80386 systems) would take a long time!

I don't remember exactly how it all started, but once I found out they were working on a short, I wanted to do my own, if possible.  Gary thought it would be a good idea, but because of the schedule required to get the post-production audio work and such done (I didn't have the facilities or talent for music or sound effects!) I'd have to get the finished animation to them in a little over a week!

The clock was ticking.  I came up with a simple idea: A building's cornerstone dreams of getting out and going to the beach.  I planned out a simple storyline, sketched up a storyboard and started thinking of how I could pull it off in a week, without hardly ever having touched the keyframer before!

The first thing was the design of the short.  I wanted to keep a simplistic look to everything, for clean lines and simplicity.  My design was along the lines of something like Pixar's Knick Knack, which had pretty simplistic objects made from geometric shapes and a very cartoony look.

The snowman from Knick Knack & his
simple geometric jackhammer:

A cornerstone is simply a block of granite, so there really isn't a lot to work with in terms of animation, and I was trying to figure out how to get him to convey emotion.  Looking to one of Pixar's early works, Andre & Wally B, I decided to create the cornerstone's face using texture mapping, like Andre used.  His face would consist only of eyes overlaid on the granite background, which would do all the work of conveying his emotions.

Pixar's Andre & Wally B:

The Yost Group's Jim Kent had earlier created Autodesk Animator, a great little 2D animation package, and we had integrated its animation format into 3DS for use as texture maps.  It would be perfect for the cornerstone's animated eyes!  I called my friend Jon Bell, who was an expert in Animator, and he agreed to create the eye animation clips for me.  I gave him timing sheets, indicating what the eyes should do, and what time to do it.  Jon turned this around very quickly for me, giving me time to create the models for the short and set up the shots.

Once I had all the scenes set up, I got to learn how to use the keyframer!  Very quickly I picked up the procedures for simple animation - The cars on the streets, camera moves, and so on, with the final big job being the animation of the cornerstone itself as it slides out of its pocket in the corner of the pink marble skyscraper - Shoving bits of trash out of the way as it goes.  It was a blast - I was living my dream of creating a cartoon!

But as we all know, you have to face some tough realities sometimes, and I had run into a pretty big issue - My fastest computer, a 386/20, was taking a long time to render full-frame shots with all those textures.  Even rendering the whole cartoon without shadows, which were pretty expensive computationally, at the rate I was looking at initially, rendering would take more time than I had left!  What to do?  Cheat, of course!

Most of the shots of the cornerstone had a fixed camera viewpoint.  Again, I took a cue from Pixar's early work: Andre & Wally B started out with a beautiful camera tracking shot through the woods with lots of trees and leaves, which required full rendering on every frame - Extremely expensive, computationally.  But for the bulk of the short, the characters are acting against a still background, which was simply one frame that was dropped in behind the characters.  We had this ability in 3D Studio, as well, but for me there was one problem: The camera was looking down on the cornerstone and if I simply rendered it in front of a still-frame image of the building corner, the top of the cornerstone would be visible!

Yaahh!!  Move over, M.C. Escher!

So I thought about it a minute and came up with my cheat: I'd add a new feature to 3DS, what I called a "matte object".  Mattes are used in visual effects to composite images - why not make something similar for our software?  What I decided to do is set up a simple box object that would create a mask for the corner of the building right over the cornerstone.  This box would sit right on top of the cornerstone, aligned with the building corner, and I'd mark it as a matte object.  Instead of rendering the box's pixels on the screen, whenever the renderer encountered it, it would simply use a pixel from the background image, blocking out the top of the cornerstone!

Simple building corner model:

Making the hole: Simple inside-out black box
with matte box on top to reveal building corner:

Result of the above:

Cornerstone model with same matte box:

Final rendered composite -- No post work needed:

The result here was that each frame involving the cornerstone (the bulk of the cartoon) took only a small fraction of the time to render, because it didn't have to compute lighting or texture information for the pixels involving the building or sidewalk.  I would meet my deadline!

So I finished up all the rendering and sent off the individual frames to Autodesk on a removable data cartridge (IIRC, an old 8-inch Bernoulli unit) so that they could do the final post work, including transferring the frames to videotape and adding the sound effects and music.  It was massively exciting.

Unfortunately, when I saw the finished product, I was shocked to see that something had gone wrong in the transfer of the individual frames to videotape - The sequence where the cornerstone breaks out of the building was missing about two seconds of action!  The frames were there, but instead of the eyes squinting several times and the block sliding smoothly out of the building, the eyes half-close, freeze, then suddenly the block is out.  I was crushed.

But life goes on.  The reaction of people watching the cartoon was still good. Nobody knew what I had intended and they seemed to like the finished product.  Gary and the guys did a super job on the sound effects and music.  He promoted the piece as "One man, one machine, one week" - pretty cool, considering that at the time, most people thought you needed powerful workstations to do this kind of thing.

I wanted to get in there and fix the problems with the short, but we were so busy working on 3DS that I just figured I'd do it sometime later - And never got around to it.  Years later, when I thought of it again, I went searching for the files to try recreating the project but the files (both the finished frames and the 3DS scene files) had disappeared into the electronic ether.  Oh, well…


In late 2009, I was contacted by the guys at MaxUnderground.com to do an interview about the history of 3DS Max.  I agreed, and while digging through my old backup disks to find some sample images from the early days of 3DS, I came across some files that had me a little confused.  They were from early 1990, but they weren't .3DS files - They were .MSH files.  Well, I started thinking about it and realized what was going on - they were a file type that we used back when 3DS was in development, and was separate modules - Modeler, Materials Editor, Keyframer and Renderer.  .MSH files contained 3D meshes.  They were all 8.3-format filenames, which was the standard back then.  Interestingly, a couple of them started out with "CS" - Short for "CornerStone".  Hmmm.

The first thing I thought of was to try importing them into 3ds Max, but it only imports .3DS and .PRJ files - not .MSH.  Dang.  But thinking about it a bit more, I was pretty sure that all we did when we switched to the .3DS file type is change the extension.  It was worth a shot, so I simply renamed all the .MSH files to .3DS and tried importing them into Max.  Bingo!!  It worked!

Suddenly I was looking at every scene from Corner Stone - Objects, lights, cameras.  The materials were even there, though some of the textures weren't working.  Anything that used Autodesk Animator .CEL or .FLC files was showing up as black because Max 2010 no longer supports these file types.  No problem: I simply launched Max 8 and used the image viewer to load the still-frame files and re-save them as PNGs.  Now everything rendered fine.

Two issues remained:

First, the animated .FLC texture maps for the cornerstone's face were mostly missing.  I had two of them, but the others were gone.  To re-create the cartoon, I'd need to recreate the eye animations.  This wasn't that big a loss - The original files were 320x200-pixel animations, and the aliasing was pretty bad in some spots.  I figured I could use Max to recreate higher-resolution eyes.

The bigger issue was that the .MSH files didn't contain any keyframer (animation!) information.  Back in the old days, before we integrated the Modeler and Keyframer, you either had separate .KF files with the animation data or you saved your project as a .PRJ file, which contained everything.  Unfortunately, all I could find was the .MSH files, so I'd have to re-keyframe everything.  Fortunately, I was working with the "Least-Animated, Animated Film Ever" - and I had a videotape copy of the original for reference, so re-keying everything wouldn't be that big a chore.

I got to work.


Thinking back to the tricks I had to use to get Corner Stone to render in a reasonable time in 1990, I'm sitting here laughing because the simplistic scenes in Corner Stone render in under one second per frame with today's hardware.

Side Note: I wrote the original 3DS renderer, which was tuned to render as quickly as possible because processor speeds weren't that fast. To get those quicker results, the original renderer did absolutely no filtering whatsoever on textures - If you weren't careful, textured objects looked like crap, especially when they or the camera moved! And near-horizontal or -vertical lines were really bad. It isn't my proudest work ever, and for 3DS release 2, Dan Silva went in and gave it a serious overhaul, giving it proper filtering. Thank heaven.

So when today's 3ds Max is rendering properly-filtered frames in under a second that took 3DSr1 five minutes to render with no filtering, you can see what an incredible leap computer speeds have taken in 20 years!

Anyway, I started re-keyframing everything and saving frames. I did the non-cornerstone shots first because I didn't need the animated eyes for those shots.  Most of that work was done in just a few hours!

The eyes were going to take a bit of work, and involve writing a new plugin for Max.

My idea was to use Max's renderable splines to create the eye outlines, which most of the time were simple ovals.  The only problem here is that when the cornerstone gets angry, the tops of the eye outlines come down like this (original texture map):

Getting a smooth transition on the splines for this by manipulating and animating the vertices and bezier vectors would be a huge pain. It would be better to use a shape boolean operation to do it, where you subtract the "upper eyelid" shape from the oval eye shape:

Unfortunately, Max doesn't have an existing boolean operator for shapes, so I got to work writing one. It took a couple of days but works great. The resulting renderable spline outlines look perfectly smooth with their adaptive refinement:

These eyes were a lot of fun to set up. You have:

  • A plain gray granite background, recovered from the original data files

  • In front of the background are the eye outlines, which are made up of the ovals for the eyes with upper and lower eyelid shapes that are set up as boolean operators

  • Surrounding the eye outlines are oval cutouts on a plane that match the eye outlines and act as masks (using the Corner Stone-inspired "matte" property!) so that when the eyes blink (scale down on to zero on the Y axis), the pupils are masked out and don't show against the granite background

  • There are also matte cutouts for the eyelids that matte out the pupils and eye whites when the eyelids come down

  • Behind the matte cutouts are the pupils of the eyes

  • Behind the pupils are the oval "whites" of the eyes

I rendered the eyes at fairly high resolution so that they'd stand up to very high-resolution rendering, in case I ever need to make an IMAX version of Corner Stone! (Joking!)

As soon as I started rendering the new shots with the cornerstone, it was like seeing an old friend - Jon did such a great job with the eyes that I get a lot of expression out of a simple box!

The rest of the process went pretty easily.  I had captured Quicktimes of all the individual sections of the original Corner Stone from the videotape copy I had and used those as reference in my 3ds Max viewports while animating, so that I could match the action exactly.

Rendering went absurdly quickly and as a nod to the original compositing code I hacked into 3DS release 1 to create the fades and dissolves in Corner Stone, I assembled the final piece in Max's Video Post module.  I was originally planning to use Adobe Premiere to put it all together, but since the original Corner Stone project inspired the creation of Video Post, I thought that would be nice.

Final Thoughts

They say you never forget your first kiss.  You also never forget your first animated cartoon (even if it is barely animated).

That may sound corny or sappy, but it's true.  Corner Stone will always be the first complete work I created with the software that resulted from my dream to do animation, and it's special to me for that reason.  I'm just glad that I was able to finally let people see what was originally intended, even if it did take me almost 20 years to do it!

Watch the remastered Corner Stone at Vimeo.

Klanky the Robot and his new (old) friend:


Klanky the Robot® TM & Copyright 1975-2018 Tom Hudson
Contents of this page Copyright 2018 Tom Hudson.
All software provided on an as-is basis with no warranty expressed or implied.