Technical Notes

( Tools and methods used to build the VRides models.)


Mesh Modeling

3D Canvas - I am a long time 3D Canvas user. My 1932 Dodge was modelled with 3DC, but I realized early on it was lacking in several areas for this type of modeling. Its main problem is with slowdowns in handling large polycount models - once you get over 10 or 20,000 poly's it gets pretty well bogged down. I will be modelling 100,000 poly's plus. I've found with my current nVidia card, it can handle 2 million poly models at full 60 frames and maximum quality so polycount won't be a limiting factor in the future. Anyway, polycount will surely rise and 3DC just isn't up to it. On top of that, its subdivision modelling features are weak - no concept of hard edges etc. I'll need good subdivision modeling to deal with the smooth contours of vehicle modeling. One other limitation is in the mesh modeling tools themselves. Creating new geometry on the surface of previous geometry is a frequent operation and 3DC lacks the cool tools to do this easily. On the other side of the equation, as I try out new software I sure do miss 3DC's rock solid import-export capability - I haven't found any others to match it yet. And, 3DC's image texturing method is the easiest to use that I've seen. But, the bottom line is it seems for high resolution vehicle modeling, I've outgrown my old friend 3D Canvas.

Blender - Blender was my next attempt. I used it for my 1959 Chevrolet project. It is the most capable freeware modeler out there. There is just incredible community support. It works fast, does some beautiful rendering with its Yafray plugin. It does have a wierd user interface but I am gradually getting on to it. I would say my only fault is with the lack of mesh modeling tools for adding and adjusting geometry on existing surfaces. I still might get back to it after I finish looking at XSI Mod Tool.

XSI Mod Tool - This is an interesting freeware modeler and the one I used for most of the VRide models. I really like its mesh modeling tools and the way it does subdivision modeling. Its the easiest of all three programs for adding and modifying geometry. Texturing is a bit complex, but I'm onto it now. I find the hard edge feature to be very usefull, providing good control over surface normals.

Subdivision Surfaces

As you know it takes thousands of triangles to make a smooth flowing curved shape. With most programs, you can get bogged down trying to position all these triangles properly. With subdivision modelling, you define curved shapes using a skeleton of 'control points'. And these control points pull all the triangles into shape. If I adjust the control points, all the triangles follow along.

Here's a look at subdivision modeling in XSI. I created the simple mesh on the right giving the general shape of the car. The subdivision surface feature of XSI creates the mesh on the left and thats the mesh that gets exported to my display viewer program. The result is smooth edges and curves, without the complexity of modelling thousands of triangles. I can change the shape of the model by adjusting only a few key points in the simple mesh, and the detailed mesh on the right adjusts itself to suit.

And the program has great workflow into my XNA based Model Display Software. If I had to identify a fault it would be in the number of features that are crippled in the free version. Most of these features are available in the free Blender software, but not in the free XSI product. I've built most of the models on this site using XSI Mod Tool and am beginning to get fairly proficient at it.

Here's the '46 Pontiac under construction inside XSI Mod Tool:

You can see that I build only one half of most parts, eventually mirroring the other half inside my display software. I also use only the most basic materials ( most of the advanced materials are crippled inside the free version of the XSI Mod Tool ). These materials, ie the yellow chrome above, are just placeholders, with the final surface finish being applied inside my display software. I the XNA Game Studio add-in to handle the export to my model display software.

PS - just a quick note - if you do take a look at XSI be cautioned that the free 'Mod Tool' has many, many features disabled. I spent a lot of wasted time struggling with tutorials on materials, rendering, etc only to eventually find the feature, although apparently present, was actually disabled. In the end, I discovered these features weren't needed to make models for games as I am doing, but still its not very clear what tutorials, and menu options etc are fully functioning in the free version.

 

Model Display Software & Rendering Engines

Many people who see the screen shots I post here assume that I am using a ray-tracing program. I have done a lot of work in Pov-Ray. Blender's Yafray and XSI's built in Mental Ray support ( not on free version ) all produce excellent results. But, of course, those images take minutes to hours to generate. I was interested in viewing my models in real-time 3D - being able to move around and examine the models from all angles. This meant writing real-time surface shaders for Direct X that would emulate the lighting and reflection effects of the various finishes needed for the models.

To give me the control I wanted, I developed a custom made display program for my car models. For now, I am creating and distributing a custom display program for each car.

The display program handles mirroring and duplicating parts as necessary for a specific vehicle. It addition, it substitutes the basic XSI surface materials with custom programmed Direct X surface shaders.

Here's the real-time display generated by my VRide viewer program for the 46 Pontiac model shown above. You can see where the model parts have been mirrored, and the simple XSI materials replaced with Direct X surface shaders.

 

This gives me maximum flexibility to accomodate any special purpose surfaces finishes that I'll need and maybe to do a little animation along the way - hoods, doors etc. I am using Microsoft's new XNA 3D development environment along with Visual Studio C# Express. These are all free tools and they are working out great for this purpose. An interesting side benefit of the XNA environment is I can port my models and the viewer to an XBOX 360 if I ever wanted to ( hmm, ok maybe not a practical benefit ).

The models that I am showing are very high polycount - 100,000 or more. In experimenting with this, I found I can go to over 2 million poly's before my program drops below 60 frames, so I have a lot of headroom to build detailed models. I am happy with the results. I end up with a fully interactive 3D environment that provides a good amount of realism on high-end video cards. And - I am able to share the models with others. Although the visual quality they experience depends on their video card. I am getting 60 frames per second on one computer with an NVidia 8800GTX video card, but I get less than 8 frames per second and a lot of 'jaggies' on my laptop with its Intel 950 integrated shared-memory graphics chip.

 

Shader Development

Shaders are the computer programs or algorithms that simulate all the special surface finishes on our 3D models. I started out with the samples on the ATI and nVidia sites but I've been adapting them now as needed. I have basic finishes for glass, chrome, metalic car paint, rubber, etc. All the materials we need for car-building. I'll be refining and improving these as I learn more about the techniques. Although I experimented with ATI's Render Monkey and nVidia FX Composer, I ended up doing most of my development work directly on the .FX code inside Visual Studio.

I've written shader code for the following materials:

Enamel Paint
Lacquer Paint
Pearl Oyster Paint
Metal Flake Paint
Rubber
Chrome
Cut Crystal
   

 

Exporting VRide Models to Microsoft Train Simulator (MSTS)

I started out in the 3D hobby by building models for MSTS and still enjoy that part of it. I have been using a process to port these VRide models to MSTS. The high resolution VRide models described above run at 120,000 polys. Not bad when its the only model in the scene, but a parking lot full of them would sure bring MSTS to its knees. So a big part of the porting process is to reduce the polygon count. The resulting MSTS model cars are still pretty heavy on polygon count ( about 8000 polys), but today's video card can handle the extra work load so we can splurge a little on scenery items like this.

 

I use XSI mod tool to reduce the polycount of the model. XSI has a lot of tools to help with this. And I consolidate the textures into one image file.

Here's the 1948 Chev ready for export to MSTS through 3D Canvas. The original 120,000 poly model has been reduced to three LOD's - 235, 1705 and 6447 poly's respectively.

You can see that I am still only modeling half the car - with the mirroring being handled inside 3D Canvas using an import script that I wrote for it.

Then I export the model through 3D Canvas to generate the MSTS compatible files. I wrote a small script for 3D Canvas to help with the import-export process - fixing up a few texturing incompatibilities, and handling the mirroring of certain parts as necesary. XSI Mod Tool has a well documented programmer's interface and I may build an MSTS export script for it once day to allow direct export from XSI to MSTS ( and maybe KRS also ).

 

Tutorials - How To Get Started

Although I am getting good results from these tools, I would caution anyone about following this route. XSI Mod Tool had quite a steep learning curve, and without a direct export to MSTS, the workflow through 3D Canvas is somewhat complex. And, my VRides, hi-res 3D Viewer program requires custom programming for each model to apply the proper finishes to the right parts. I am happy to share the techniques and software with anyone interested, but be prepared! Hopefully, as I evolve and improve my methods, I can simplify the process and write some tutorials to help others with following this path. I'd like to hear from others who want to get started so I can get a feel for how much interest there would be in this. I'll post developments on this web site so stay tuned.


VRides Home