Mirror Machine, or my next attempt at doing a converter that eventually works ! Shortly, it converts your .3ds files to a WMO/17 file (working on 3.3.5)
Thanks before everything else : Schlumpf, Relaxok, Tharo, Steff, all the WoW Dev Wiki contributors for the technical stuff, the people who helped by testing with their models, and the Architecture Department.
This page will help you in the process of converting models, but if you still have problems, check out the Modcraft thread, maybe your question is already answered. Do not expect me to answer there though as I'm not maintaining this program (nor Meshugamh).
Download / Git
This is free software.
Most of the 3D softwares allow you to split your model in some parts (sometimes called meshes). They will be used as WMO groups
If your model doesn't have vertex normals, MM will compute some, thanks to this document. Even though it works well in most cases, there is sadly some models that will have weird shadow spots at some points ; I can't do much against that.
The material support needs some testing again and again, but it can be used already. You will have to use one texture file per material as it's the way WMOs work. Supports two-sided materials, ambient color and diffuse color.
You can add collisions through different kind of BSP trees. For small models, the default settings are enough. For bigger models though, try using a bigger max leaf value (around 2000). Also, avoid long, stretched triangles in your models as they will fall between BSP nodes as thus have no collision.
And what else ?
- You can set a custom path for your textures to avoid having them
at the root of your patch. Don't forget the filename format
expects \ between the directories, and add one at the end of the
path. e.g :
- You can set BLP extension to your texture automatically. It isn't required (the client doesn't check for extension) but it doesn't hurt.
- You can set indoor or outdoor definition flags FOR EVERY OBJECT. You can set these flags manually with Cromon's WmoEditor.
- You can invert V texture mapping coordinate, as it seems to be the default 3DS behaviour. It will compute (U, 1-V) instead of (U, V).
Usage and troubleshooting
I try to handle some converting problems by hand but sometimes it turns to massive useless mess, so try to follow these instructions. If something awful happens, check the log file ! Critical warnings are displayed at its end.
- There are NO portals ! This feature turned out to be too complicated to implement at that moment, sorry about that !
- WMOs expect fully texture-mapped meshes, so apply a texture to every single mesh of your model.
- WMOs don't support local coordinates so be sure to not use them.
- Don't forget your textures are about to be BLP, so be sure they convert well (dimensions must be a power of 2).
- Always name your textures like its corresponding material.
The converter was thought to convert from this format only at the beginning. Be aware of the following points. Warning : people seems to have problems with 3ds Max 2013, as the program only write the first letter of each material in the material definition chunk (meaning that instead of "rock", it will be called "r"). A work-around is to use materials with a name of 1 letter only...
Note that textures should be named according to the 8.3 format.
- Material info
- 3DS handles them in a quite dirty way. You can have materials with or without textures. Behave like if you were working on a WMO : always link a texture to your materials. If the exporter of your 3D software forget to link a texture path (which happens often), the material name will be used as a texture path.
- Objects that aren't objects
- A WMO object is a mesh, textured and neatly modeled. A 3DS object can be this or a camera or other kind of stuff. Don't use them.
- External files
- Some 3D softwares create external files for material and stuff, as .GSM files. Be sure to not have these files during export because MM only read the .3DS file.
- Log warning : an object doesn't have all its mapping coordinates
- You didn't textured your model entirely, or your 3DS exporter screwed up the UV coordinates export, using broken specs.
- Log warning : you have outranged UV coordinates
- This is warning you that you have UV coordinates out of the usual [0, 1] range. It seems to be harmless for the client though, so you may ignore this warning.
If you're using 3ds Max, Steff recommends that you merge all modifiers before export so you have only one editable poly at the end.
The OBJ format is an open 3D format written as text and not as binary, making it readable for humans, so it's easier to handle for devs. The main advantage it has for me on 3DS is that it can store vertex normals, so you'll benefit the algorithms of professional 3D softwares instead of my "less professional" algorithm.
Still, while I was writing the OBJ importer, I stumbled on some OBJ files that weren't as I or MM expected. So yeah, the converter handles OBJ format, but you'll have to respect the following points. I know that Blender allows you to set all of these settings.
- Use "o" ident for objects
- It's not completely clear when "o" should be used instead of "g". MM will use the "o" identifier to declare a new object. "g" is NOT parsed.
- Global structure
- The vertex position ("v"), texture map ("vt") and vertex normal ("vn") can be in any order, anywhere in the file. They only need to be declared before a face ("f") uses them.
A new object (that will be used as WMO group) is declared by "o" as said earlier. You have to declare a new object BEFORE the faces ("f") of this group.
For instance, a valid file can be :
mtllib octopus.mtl o body v ... v ... vn ... vn ... vt ... vt ... f ... f ... o tentacles v ... v ... vn ... vn ... vt ... vt ... f ... f ...
- Face format must be : f va/vta/vna vb/vtb/vnb vc/vtc/vnc
- And each of these components must exists. If you have only va/vna or even va//vna, it will probably not work. That means generate vertex normals and apply textures on every part of the mesh.
- Use -Y forward and Z up
- Because you don't want your house upside down.
- Additionnal files : .mtl and nothing else
- The materials of an OBJ file are declared in an attached .mtl file. MM will seek for this file (when parsing "mtllib" directive) and for nothing else.
Here are the OBJ export settings in Blender that seems to produce good files :
WMO/v14 is the WMO format used during the alpha release of WoW back in 2003. MM can handle their convertion to WMO/v17 (the ones you use) with some tweaks. You can choose in the settings the data you want to import. This is most of the time raw import, implying it can work pretty well or just crash.
Feel free to try some of these settings with various files, and report stuff there. Take the time to read what I and other people wrote.
Have fun exploring these models from the past !