How do use 3DsMax to create objects that can be used in OpenGL

Started by
10 comments, last by SamuraiProgrammer 22 years, 9 months ago
Up to now Ive defined all my objects by using graph paper and alot of patience, but im sick and tired of doing it the hard way. So could somebody help me out and tell me how to export objects or get objects created in 3DsMax for use in OpenGL. BTW Im trying to write a starfox style 3D game... its just taking too long to make all those models without an editor..
Advertisement
Well, there are two ways to go about it. The way most people get models into their programs is to write a loader for someone else's format (like *.3DS, *.ASC, etc.) If you're feeling ambitious, and have access to the MAX SDK (which is on the CD) and have alot of your favorite super-strength pain-killer, you can try writing a plugin to export geometry directly from MAX. You should take a look at the dejaview sample (you'll have to search around on the web; CFXWeb has a copy I believe) and the ASCIIExport sample which is included with the SDK in

3dsmax4/maxsdk/samples/impexp/asciiexp

In the DejaView source, you'll want to look at the function which converts a MAX matrix to an OpenGL-style matrix. You'll also need to fix the vertices, by swapping y and z, and then negating x.

If this turns out to be more work than you want to do, you might want to try something like Milkshape3D first.

Good luck.

-liquid

Edited by - liquid on July 20, 2001 10:10:04 AM
Sounds like alot of work.. and pain. Are there any loaders already written avalilable? If not do you think its more work trying to write an OpenGL modeller than writing a loader for the .3DS object format? (which do u think would require less ''tearing out your hair in anguish'' programming)
Thanks for the advice Liquid
Writing a 3D studio ASE loader is pretty easy. All you need do is search the file for certain labels like "*MESH " and "*NUMFACES " and then load the data which follows into your model struct/class. The best way to figure out the file format is to export a simple object like a cube and then look at the file using wordpad.

The only potential problem is when exporting normals. The normals are all in pre-rotation format whereas the vertex data is post-rotation, confusingly. To get the correct normals for the mesh you have to rotate them yourself.

www.elf-stone.com

____________________________________________________________www.elf-stone.com | Automated GL Extension Loading: GLee 5.00 for Win32 and Linux

I wrote a MAX ASE exporter that exported Geometry and Texture coordinates in an evening. If you are writing a full fledged game, this should be no problem for you. Trust me, after you write this, you will wonder why you didn''t do it sooner.

Ut
Yeah writing plugins for Max is not that hard. A little intimidating at first because the concept of how a plugin works is wierd, but it''s basically just a DLL. I''m not sure about earlier versions but Max 4.0 comes with an AppWizard which you can setup under MSVC which will generate the skeleton code depending on what type of plugin you want to create, exporter being one of the options.

But there is also an article here on GameDev dealing with loading 3DS models. I haven''t used this code because I decided to go the plugin route, so I can''t say how good it works. I personally do not like the .3DS format. But that''s just me

http://www.gamedev.net/reference/articles/article1259.asp

If you want to make a plugin for Max to export your data and feel intimidated by it, email me at toasted2k@yahoo.com and I will help you out. I know the example programs that I have run across, including the samples on the Max CDs use very bad programming practices and are pretty hard to understand at first glance.

Seeya
Krippy
Thanks for all the help Im getting .. this is my first cry for help and im surprised at the response..
I tried exporting a simple cube file as a .ASE file and opened it in wordpad as benjamin and UT(thankx guys) suggested, and I think it should be easy enough to write a program that will get the mesh and normal data from that file. So Ill prob be taking that route.
This leads to another problem .. how do u write a program that will identify triangle strips in the mesh data? Im a sucker for a cool problem and this one looks interesting..
Well, the .ASE format contains a list of vertices, then a list of indices for each vertex in each face. You would have to read those into arrays, and iterate through each face and store the vertex data. Move to the next face and if any two vertices match any 2 from the previous face then you have a triangle strip... I think. You would keep going until you no longer had two matches. You could then look at the variables (which I didn''t mention, but you have been keeping) that show the index of the first face in the strip and the last, and you know that any faces between belong in the strip. You would probably want to write it to a new file in your own format.

Why even bother with triangle strips though? Why not just use vertex arrays and the like?
Hmm.. this comment may be a bit late but I think is worth mentioning.
If you dont like or for some reasons dont feel like doing plugins, you can also write max scripts, max scripts are a lot easier to work with than plugins and are very powerful (to the extent you need which is taking info from a particular scene) if you look around you can find a plugin (or a script too I dont really remember that well) that allows you to save binary files from maxscript, this will allow you to write any kind of exporter (Im new to 3ds max4 so im not sure if this functionality is already there)

This is extremely useful (instead of using propietary formats) because
*You can extract information other formats wont like bones and weights.
*If you are claver or.. at least curious you can experiment with
compactation and encryptation algorithms.
*You can use max cool capabilities and assign special atributes to parts of the model, like a chrome (sphere mapped) texture, procedural textures, moving textures, shaders, armor values, physics weights, etc. =)



Hi, sometime ago i bought a program called 3d Exploration for 35$ , and i found it very useful: with it you can export every kind of 3d file format directly to openg .cpp compiled display lists or vertex arrays. Take a look at www.xdsoft.com



glHorizon_Project



www.web-discovery.net


This topic is closed to new replies.

Advertisement