Converting q3 player model to q1 format
The process is roundabout and exceedingly headache inducing. :P
Also, if you want to do this, read the whole post first.
note: the original post on this topic was on func_msgboard.
first you need the q3 model files. use whatever tool you want to extract the 3 model files for the head, torso and legs. it’s probably a good idea to grab the skin textures while you’re there.
we need to get the 3 q3 md3 files (head, torso and legs) into 3ds max, or some kind of editing software. note that this guide only talks about 3dsmax. if you use another editing suite, you will have to improvise.
to import, i used this script: Quake III MD3 Importer Public Beta
surprisingly, it worked in 3ds max 9 (usually most scripts this old would never have worked).
if you follow the instructions on that web page, it will work properly: use the script to import upper.md3 first, then lower, then head. this will make sure the tags link up with the body parts.
note, if you have an older version of max (6, 7 or 8), there may be more selection when looking for importers. iirc, quake3 came out around 3dsmax5, which underwent an update when it went to v6, but then stayed more or less the same until v8 and underwent another update to v9, which means that nearly anything for v6 works up to v8.
the reason we need the files in an editing suite is because we will eventually have to order frames to set up walk, run, attacking, etc.
because q3 uses split models and animates each part differently, it’ s not just a matter of ‘exporting the run animation’.
involves transferring the animation key frames from the torso tag onto the torso mesh itself.
the torso doesn’t actually move, it only has vertex animation; it uses the tag to make sure the torso is properly oriented with the legs inside the q3 engine itself. in order to export the animation, however, both the translation and rotation must be on the torso mesh object itself. this essentially means we are baking the tag’s keyframes into the meshes.
select your torso tag and go to file -> save animation.
save the file with a name of your choosing some place convenient.
now, select your torso mesh and unbind the mesh from the tag.
go to file -> load animation and select the file you saved earlier.
you will get a message box “No tracks are mapped. Create map file?” and click yes.
you’ll see 3 list boxes, two on the sides with the middle one empty. Ctrl+Click on both the sides the item that says “Exposed World Transform” then click the button with the arrow “<-”
this tells max to use the world transform from the save file on the selected object. Click the “save mapping” button on the bottom and save it somewhere (not really important, it just doesn’t let you load the animation without saving first) then click “load motion”.
if everything was successful, your torso should now be moving on it’s own, without being linked to the torso tag.
redo step2 except for the head.
now you need to rearrange the uv mapping. originally, head textures take up the same spot on uv maps as the body does, but when you are combining all of this into 1 model, you will have overlapping uvs for the head on the body area.
for a quake3 player model, the body is 256×256 and the head (in the case of hunter) comprised of 2 128×128 textures (the face + the feather hat).
i chose to make a 512×256 texture, with the body on the left, and the face+hat stacked on top of each other right next to the body. this leaves a 128×256 empty area we can use for the weapon.
before we can export, there is one final step to do. the thing that drove me crazy for the longest time was that the head would never export any frames, even though it had keyframes.
the problem is that the tool i had to use to convert the 3ds max models back to md3s (npherno’s md3 compiler) only looks at *vertex* animation when deciding if there’s a key frame there or not and i was only adding translation keyframes. so what you need to do is go into the head at vertex sub-object level and add a key frame to any 1 vertex at the end of the animation. (i just move a vertex an incredibly small amount).
time to clean up. delete all the tags (they aren’t needed) and export the whole model as an ase file. make sure you have it set to export keyframes every frame.
open up npherno’s md3 compiler and import the ase file but only select 1 component. export the single component back into md3. close, reopen the program and do the same for the torso and head.
use preach’s md3tomdl converter to convert the 3 pieces into mdls.
You should now have 3 .mdl files for head, torso and legs.
(these next steps are the fiddly parts)
open qme and open up the legs. then, using import object, import the torso.
qme, annoyingly, has no options with what to do with an incoming object’s skin mapping, so although the nice uvw maps were preserved from the original md3 files, they will be placed next to each other.
open quark 4.07 (yes, really). load your combined model. you’ll notice your actual skin now is absolutely massive (i think it was 1536×256) because qme just kept adding stuff on the sides.
what you need to do in quark 4.07 is select the torso verts on the skin mapping editing window and slide them way over to the left (where the legs verts are).
for the head verts, i wasn’t able to slide them over next to the body verts because they were considered ‘on the other side’ and so weren’t’ allowed past the mid-point of the skinmap.
so i slide them just to the right of the mid-point.
finally, (still in quark) go into the edit -> model properties menu. change the width to 512 (make sure the ‘right’ radio button is selected so it will remove stuff from the right side, not the left).
this should place the head verts right next to the body verts and everything should be perfect. if not, the gods have not smiled upon you and you are SOL, sorry.
now all that’s left to do is to name your frames which you can do easily in qme.
yay, you have a q3 player model in quake with uvw and animations preserved. :)