Johnny’s Workshop

June 15, 2010

I ain’t got time to render.

This little experiment left me convinced that pure CG was not the way to go; not when you’re a few hundred CPUs short of a render farm, anyway. I guess that line could be used as a clever insult in the VFX industry. “I’m afraid Billy’s a few CPUs short of a render farm.”

Of course, in the games industry, if you worked as a level designer and you weren’t very good at your job, your co-workers would say, “That guy’s a few destructible wooden crates short of a level.”

Pretty clever, huh?

I began this experiment toward the end of March last year thinking I could do with some practice before having a proper stab at that “UFOs at the You Yangs” project. The latter was going to be entirely CG and involve a detailed ecosystem, clever lighting, and some kind of fancy atmosphere with clouds, haze, etc., so it made sense to try a simpler version beforehand. The following elements I considered essential:

  • A rural setting.
  • Stereotypical flying saucer.
  • Realistic lighting.
  • Handheld camera movement.

The other requirement was that I use Vue 7 xStream and nothing else. Ironically, I went into the project hoping to get a lot better with Vue and emerged from it convinced that studying Vue was a waste of my precious time (I think that qualifies as irony). Not because Vue is bad software—it’s really not; it’s awesome … awesome to the max—but because the render times are usually horrific. I actually spent a couple of weeks studying and experimenting with all the render settings. Achieving a high-quality result was easy enough; it just meant you had to wait forever.

Take this 7-second video, for example:

There’s only one model in the entire scene, yet it took ELEVEN WEEKS to render. Okay, that’s not true; it actually took 8 hours, 15 minutes but that’s still way too long. I mean, it’s not even a good video; it’s just an F35B from Battlefield 2 with some dark, menacing clouds in the background. Oh, and the resolution was 800×600. Imagine trying to render a high definition (1280 x 720 or 1920 x 1080) shot of a forest with a running stream or something. You’d die of old age before you had the first two seconds. Even if you lived long enough to see those seconds, you’d probably discover they were riddled with inexplicable artifacts.

Like these:

Took a quadcore CPU just over ten minutes to render that one frame.

“Uh-huh, and what are those stupid watery columns?” you ask. Oh, you noticed those? I have no idea where those came from; ask the propeller heads who engineered Vue’s built-in renderer.

So, to summarise: No matter how much tweaking / optimising you do, relying on Vue for complex, animated scenes really is asking for trouble. For single frames, it’s brilliant—just look at the e-on software gallery—but for pure CG video, you really need a render farm. Or else a whole lot of patience. I’m prepared to wait years for YouTube to produce a celebrity who isn’t a fucking obnoxious douchebag but you’ve got to draw the line somewhere.

Of the scene I’d originally envisioned, I produced only one clear render:

Also, besides a one-off, low-resolution test—with almost all the render settings set to ‘Low’—I didn’t even bother with the full animation:

(Some of the trees in Vue don’t look so flash when they’re subjected to wind.)

Eventually, in a bid to salvage the scene, I removed the flying saucer and rendered yet another clip featuring the Strider from Half-Life 2:

Strider at Farm

Click to enlarge.

After testing a couple of atmospheres and their impact on render times …

… I went ahead and rendered a very basic version of the entire animation:

I might have experienced a sense of relief when it finished rendering but my hard drive died a few hours later.

So, why all this Strider crap? Well, back then, I was still hell-bent on creating a Half-Life 2 short film. My ingenious plan was to take advantage of the massive, pre-existing fanbase of Half-Life players and thus have a guaranteed audience of millions. How’s this for vindication of that theory? The Purchase Brothers actually did make a Half-Life 2 short film, racked up over 1.5 million views within a week (on YouTube alone) and were then signed up by CAA, one of the biggest talent agencies in Hollywood.

Man, I’m glad that didn’t happen to me!

After conceding that I’d been beaten to the punch, I said to myself, “What the hell was I thinking, anyway? I should be using my imagination to create something entirely new; not exploiting a pre-existing franchise for personal gain. I’m not Uwe Boll.”

I went on to write just under twenty stories and from that batch selected one to turn into my first short film. So, from now on, my every waking moment will be dedicated to that project.

Hopefully, it won’t suck.

August 17, 2008

To the xStream!

Filed under: 3ds Max 9,Vue 6 xStream — april15th @ 6:53 am
Tags: , , , , , , , , ,

Although I’ll be using 3ds Max throughout the foreseeable future, lately I’ve been flirting with Vue 6 xStream and getting a feel for what it can do. So far, I’m impressed. Even the shit I rendered whilst working through my first set of Vue tutorials could be passed off as carefully-designed desktop wallpaper:

Click to enlarge:

Okay, maybe not the rocks … but each of those scenes required fewer than five minutes to set up and the rendering times were surprisingly fast. Everything’s a cinch with this new software.

October 25, 2007

Getting Half-Life 2 Models Into 3ds Max

Yesterday, via one of my YouTube accounts, I received an unexpected missive from a young fellow named Charles who was keen for information.

Charles wanted to learn how I’d managed to get certain models from Half-Life2 into 3ds Max. Hopefully, he won’t mind my inclusion of the message in this post:

Mainly because Charles asked so nicely, I’ve decided to write out what I hope will be a comprehensive, relatively easy-to-follow tutorial on the subject.

Generally-speaking, I hate online tutorials. Too many of them gloss over crucial information and assume the reader has prior knowledge that he/she usually lacks. Far better, I always say, to include too much information than nowhere near enough. In the movie Philadelphia, Denzel Washington’s character, Joe Miller, says, “Explain this to me like I’m a four-year-old,” and I think that’s a good quote to keep in mind when trying to impart certain types of knowledge.

So, here goes …

What You’ll Need:

Half-Life2 | The PC game. Obviously.

Source SDK | The Source Software Development Kit. Download this via Steam.

3ds Max 6/7/8 | (There is an SMD Importer for 3ds Max 9, too. Visit THIS post for the details).

GCFScape v1.6.6 Full | Extraction tool used to glean desired files from HL2‘s .gcf files.

VPK Tool | Tool used for conversion of .vtf files into .tga files that 3ds Max can handle.

MDLDecompiler Version 0.5 | Decompiles the .mdl files extracted from Half-Life2.

Max 6/7 SMD Importer | A plug-in for 3ds Max. Allows the user to import .smd files.

(At the time of writing, all those links were valid. If you’re reading this months from now and some of them are no longer working, let me know and I’ll do an update.)

Downloading and Installation

Everything listed above has to be correctly installed if you’re to stand any chance of success. Installing 3ds Max and Half-Life2 shouldn’t be an issue and I’ll assume anyone reading this tutorial already has both installed, anyway.

The Source SDK is to be downloaded and installed via the ‘Tools’ tab in Steam:

GCFScape, VPK Tool, MDLDecompiler, and the SMD Importer can be accessed via the links above. After clicking the links, initiating the downloads is fairly straight-forward but just in case, here’s a badly-presented table that shows exactly what you’re after:

The SMD Importer is a plug-in for 3ds Max 6/7 (it also works for Version 8 but not Version 9) and basically adds files with the extension .smd to the list of files that can be imported into 3ds Max:

All you need to do is extract the smdimp.dli file from the smdimp_max6.v013a.rar archive you’ve downloaded, then move the file into your 3dsMax\plugins folder:

From now on, you’ll be able to import .smd files into your 3ds Max scene(s). Nifty, eh? Another thing you must do is move the mdldecompiler.exe file into your sourcesdk\bin folder:

Okay, moving on …

Extracting the 3D Model from Half-Life2

For this tutorial, I’ll explain how to extract the Strider but the same principles apply for the other 3D models. For some models, it’s a bit more of a challenge to find all the associated files (due to Valve’s naming conventions) but this guide should lead you in the right direction.

01. Create a ‘destination folder’ and give it an appropriate name, eg. Strider. This is the folder that will eventually contain all the files associated with the 3D model:

02. Navigate to your \Valve\Steam\SteamApps folder. This is where all the game cache files (.gcf) are stored:

The ones of interest to us are the source models.gcf and source materials.gcf files.

03. Double-click the source models.gcf file to open it within GCFScape.

04. With the source models.gcf file now open, expand the hl2 folder. Select the now-visible models folder, then click the Edit menu and choose Find (shortcut: Ctrl + F). Type ‘Strider’ into the search field and hit Enter. GCFScape will then search for all files that include the word ‘Strider’ and will display the results in the window pane on the right:

05. We want all the files identified by the search, so select one at random, then use the Ctrl + A shortcut (Select All) to group highlight all the others.

06. Okay, time to extract. Right-click on the highlighted files (making sure not to deselect them) and from the context menu that appears, choose Extract.

Via the Browse For Folder window, choose the Strider folder that was created earlier and click OK:

Here ends our fleeting interest in the source models.gcf file.

07. Now, double-click the source materials.gcf file to open it within GCFScape.

08. With source materials.gcf now open, expand the hl2 folder, then materials > models > Combine_Strider:

Within the Combine_Strider folder, you’ll see three files: striderdecalsheet.vmt, striderdecalsheet.vtf and striderdecalsheet_normal.vtf. We’re going to extract all three using the same method we used earlier.

09. In the pane on the right, select one of the three files at random, then use the Ctrl + A shortcut (Select All) to group highlight the rest.

10. Right-click on the highlighted files (again, making sure not to deselect them) and from the context menu that appears, choose Extract. Via the Browse For Folder window, as in Step 06, choose the Strider folder and click OK.

Here ends the ‘extraction’ phase. We’re doing well. I just hope, thus far, this has all been making sense. The next thing we must do is decompile the primary model file we extracted earlier.

Decompiling the Model (.mdl) File

11. Double-click the mdldecompiler.exe file to launch Cannonfodder’s MDL Decompiler. Remember that the executable should be in your sourcesdk\bin folder:

12. Uncheck the Use Steam File Access checkbox, then left-click the ellipsis button for the Choose Model File field and navigate to the Strider folder.

13. In the Strider folder, there should be a number of .mdl files. From the list, select Combine_Strider.mdl and hit Open.

14. Time now to choose an Output Directory. Left-click the ellipsis button for the Choose Model File field and again navigate to the Strider folder. Click the Select button to accept the folder as the Output Directory.

15. Click Extract. The extraction process will involve two additional prompts:

Click OK for each prompt, then click Exit to close Cannonfodder’s MDL Decompiler.

Almost finished!

Converting .VTF Files

16. Launch the VPK Tool downloaded earlier by double-clicking the VPKTool.exe file included within the download:

I should mention: there are alternatives to this particular tool but I’ve not yet tried the others, nor have I experienced any trouble with this one.

17. Select the Texture tools tab, then the Open file button.

18. Navigate to the Strider folder and change the Files of Type: field to Source VTF texture:

You should see the two .vtf files extracted earlier: striderdecalsheet.vtf and striderdecalsheet_normal.vtf.

19. Select the striderdecalsheet.vtf file and click Open. You’ll now be able to convert the .vtf file into the .tga format. As a .tga file, the texture can be applied to a 3D model within 3ds Max and that’s exactly what we want. Just click the Convert to TGA button:

20. Now, repeat the above step to convert striderdecalsheet_normal.vtf into a .tga file.

Thankfully, the Strider only has those two .vtf files. Some of the other 3D models have more. For those other models, you’ll need to convert all the .vtf files, one-by-one.

21. Now that it’s no longer needed, you can close the VPK Tool.

Finally! All the necessary files have been extracted / converted and the model is ready to be imported into 3ds Max.

Importing the Model into 3ds Max

This part is easy!

22. Open 3ds Max (Version 6, 7 or 8; whichever one you’re using) and from the File menu, select Import.

23. Navigate to the Strider folder and change the Files of Type: field to Half-Life 2 SMD (*.SMD):

24. Most the of .smd files you’ll see in the Strider folder are actually animation files. They can be imported afterwards if you’re keen on using Valve’s keyframe data to animate the model. Right now, you should select the model’s _reference.smd. In the case of the Strider, it’s the Strider_reference.smd file.

At this point, I sincerely hope, the Strider will appear in your Viewports and you’ll be very happy.

THE END

Now, to get on with life …

*If you’d like to get the same model into 3ds Max 9, simply go through all the steps above, save the .max scene and close your old version of 3ds Max. Open 3ds Max 9 and then simply Open the .max file you saved earlier.

September 26, 2007

Placenta.

Over the past couple of weeks, I’ve devoured a number of tutorials on High Dynamic Range lighting and reflections. Most of them were shit. However, their deficiencies were eventually addressed thanks to the sheer volume of information they yielded as a whole.

All the same, I think someone should carefully organise all the information available online. I’m tired of going through this ordeal every time I want to learn something cool.

Thanks to all the recent studying, my quest to composite photorealistic CG elements into real-world environments has been progressing well. The real test will come when I post UFO hoaxes on YouTube and fierce debate erupts between close-minded skeptics and close-minded believers. In the meantime, here’s another rendering:

Oh, yeah, the title of this post. Whenever I render a ‘glossy’ version of the Strider, I find myself thinking of a line from the ‘Method to Madness’ episode of Family Guy: “Now you’re being born … ready? And BURST through the placenta!”

September 14, 2007

A Strider from Half-Life 2.

Filed under: 3ds Max 9 — april15th @ 5:49 pm
Tags: , , , , , , ,

In recent days, I’ve rendered some very short animation sequences. In fact, they’ve all been a mere 91 frames in length because that’s how many frames make up the single animation file I’ve been using for all these experiments.

The file, a_walkN.smd, is from the game Half-Life 2 and I’m guessing the ‘a’ stands for ‘animation,’ ‘walk’ refers to the type of motion, and ‘N’ stands for ‘North’ … and that concludes our intensive three-week course.

What does this magical 99.3KB file animate? A Strider. They’re similar in many ways to the tripods in “War of the Worlds,” except that if they came across Dakota Fanning, they’d waste no time blasting her brains out.

The clip below was originally just a test to see how long it’d take 3ds Max 9 to render the animation with a simple lighting setup but the end result looked rather nice, so I thought I’d be polite and share.

Create a free website or blog at WordPress.com.