Originally posted on www.planetavp.com by TimmyG
mirrored here for archival purposes
Model Creation Overview
This document is to help start the character creation process of any model that you want to bring into the Lithtech engine.
The first thing you want to do is focus on the design of the model, if you really want to take advantage of some of the cool stuff the Lithtech engine provides.
To start, this tutorial is not the best place to go to learn how to actually start building a 3D model; 3D Total is a great place to go in order to learn more on modeling. And though I won't go into the gritty details of chopping up a box to make a face, I will focus on what's needed to get your ideas out for the Talon/Jupiter engine.
Also note, that in the Talon and Jupiter engine, we can start implementing some sort of lip-synch for our models (as well as eye-blinks and emotions). I will try to start you on the process of that as well. (Lip-synch is more of a single bone rotated to the right 90* and linked to the main head bone for Talon).
Despite popular belief, you can create your mesh in any program: Maya, Lightwave, Blender, Gmax... doesn't matter. Lithtech only supplies plugins for 3DsMax though, so you can create mesh anywhere, but need 3DsMax to animate and export.
For Lithtech model development you can have multi-limbed, multi-mapped characters (up to 4 maps), and exports to tri-mesh, which you can see in model edit. You can use Character Studio and regular max bones to animate the model.
Now I use 3DsMax 4.2 and Character Studio 3.21a, which is a student version at my school (for my home work), and use 3DsMax 3.1 (commercial) for work. Both are fine, and you do not need Character Studio to get an object exported with animation; because you just need to send it out using the "d_" switch.
Polycount for AvP2 Models are definitely 1400-1500 if you want to create higher models. But keep in mind the level, the NPC's, the weapons and who is generally going to be playing the mod... though it's definitely possible to pull of a high-end game, like, "Devil May Cry Mod".
Tutorial Model Example
You see, here is the start of my character (which is OK, I think, but I made it for a game development class). One thing you can bet is that I want to take advantage of the limb separation that the Talon engine has; in other words, I want my guy to cut up the other guy's legs off, as well have his own body cut up as much as possible. (Do note the polycount is way off for AvP2; I have different polycount specs for the school project.)
Something else that's cool, which I am taking advantage of, is that Lithtech can have the character add or change the armor, or on certain nodes. For the leg, it has two mesh things (that could be armor), but using an attachment (so I have the option of swapping it to create another version of this character).
After I created the original armor pieces, I just export each one into a separate 3DsMax file, and import them as a single solid mesh; then center it, and export it (as if it was a prop). This way, the object can be socketed on, and I have the ability to alter the mesh to make new armor.
Watch out for mirroring objects! It's simply better to "reset XForm"+"collapse" and flip the normals after you mirrored something; because what may happen is the object normals will be inverted within model edit. (Weird mirroring bug from within the exporter).
For the head, you can design the head to be swapped with other character heads, but I wanted to be able for this character; I wanted to animate the hair, and mouth. Unfortunately, you cannot socket-controllable animated objects onto other animated objects. (I have seen looping objects socketed onto other objects, though it is rarely done).
So, for example, if in your mod you just wanted to keep the body, but change the head - and have no need for mouth animation - then you probably wouldn't want to have your character's head on the body when exporting. If you do want to have a head that can blink and talk (have emotions), though, then you need to have the head on the body, with the skeleton.
It's a design thing. ;)
One thing that's cool when creating bones is animating the eye-blinks - you can socket stuff to them, such as glowing eyes that can be turned on or off (like the marine shoulder lamp). Just by using the butes, you can pretty much do anything your devious mind can come up with.
However, this breaks more into attaching special effects - and probably a tutorial I'll have to do soon. In anycase, let's say you do want to have a head that can lip-synch, you probably want to have a mouth (that's for sure), but you need to model it open - and with some teeth!
Lithtech does not support 2-sided materials, so you can see right through the head when you look at the mouth. However, a nice simple plane will take care of that problem, but please keep watch of your polycount.
As for eyes blinks and emotions, the general thing is, build the areas that you want to bring down or up, and have bones rotate them (down or up).
Once you are done modeling your character, and then uvwmapped it, (and detached some of the pieces), select it all and either physique or skin it (Talon engine can only read in one physique per model).
Sometimes I had the habit to make various skin modifiers for different mesh pieces, but it didn't work out in the exporting. Other than that, I have to get ready to cover lip-synch and eyepiece nodes in more detail. But this should help anyone who is modding their own character for the Talon engine, and flesh out a model a little easier. Cheers!
How to Get Models to Work in the Talon Engine
How to get models to work in the Talon engine? Here's how!
1) Create the Model in 3DsMax
It wouldn't matter if you wanted to use multiple nodes, or single mesh. I worked both in, and so can you. The only thing I prefer is that multiple nodes will LOD a little nicer, as well as support multi-hit detection easier. (Though I am sure you can do the same with single mesh).
Also note the name of your biped skeleton is quite important, please name it simple or just keep it the same as it originally sets it up, because one day you some one will have to track every skeleton node within model butes.
PS. Please ignore my skeleton name. Had to scrap the older model and put on this.
2) Fit Biped to Mesh
I wont cover this in the tutorial, you gotta know how to do this. ;)
3) Create Extra Nodes for Eyelids
This is kinda important if you want the character to "look and see". In AvP2, the head will move on its own to target objects (turns around) as well if you want to multiplay the model, I 'think' you need these to have a POV from the model's head (or if you want to move this to the waist, you'll see out the waist). I am not to exactly sure, but give it a shot, I tried it with out and did not work during testing so I add them.
(Do note you have to have at least 1 extra dummy node so the engine will pick up the skeleton node you want! I don't know why, but it happens (if you have problems not getting extra nodes to work, you may need to add one more as a dummy so the previous skeleton node is read during exporting).
You probably notice the skeleton bone there, this is used for lip-synching, I will go into that in another tutorial, but its not hard to set that up as well. :)
Animation is up to you, but you can insert/export any time in the production process. When you export, make sure you finalize your animations/model/textures. Append animation (merging animations) only works with the same file you started the export in.
Okie, export model, with all animation, and then now what? Okie, open up ModelEdit, and if you have multi-segmented model, you can start by setting up different texture materials. (Yeah, like 3 maps of 256x256, for different parts of the body).
How to do it? Easy. Select a piece, and go to "Piece Info" menu and go to texture index. There you can setup a model to be different textures (via numbers), and the call em up in characterbutes.txt. (I will go over that in another tutorial :).
Setting up user dimensions within ModelEdit, its just bounding box stuff. You can get this menu by going to the animation, dimensions tab. Just try to get it roughly the shape of the model.
6) Model Weights
Next thing that I do is setup the model weights. Very important 'cause you get some nasty vertice crap, if you don't do this. (I don't even know why, I just know this fixes it :). Haha.
Okie, go to the Model Menu, then go to Edit Weights.
6a) Model Weights
There make 3 new sets: Full, Empty, and Movement.
Again, the AvP2 models had these (which looked pretty mandatory) so I setup mine as well.
6b) Model Weights
Select all the nodes, and....
- For Full - Set all nodes to 1.0
- For Movement Set all nodes to 1.0
- for Empty all nodes should be 0.0
It's not hard, but can't skip this step
Yup, you need to add stuff in order to attach weapons, also if you want to do cool stuff like adding or swapping heads within dEdit. (To efficiently create different characters).
Just look at all the stuff this guy has attached on him (I also do think its used for stuff getting shot off of him as well. ;)
First view the skeleton section, and select the bones of the character's hands, go to add socket and name the socket R_Hand (notice I use the same names that AvP2 models use). This way you don't have to do major code/bute editing, but just add and name the parts that you feel the model needs. (Always do the head and hand sockets though).
Use the orientation tools to match a prop to the model. It just takes alot of messing around to get it right. ;)
Tada! Model ready for insertion into the game. Too bad you gotta do some bute-editing first. :( But this is one step closer to your own TC Mod!
Model Butes Overview
Model butes are primarily used for hit-tracking (just make sure you read the butes file before editing!), but they help in identifying what part of the body on the skeleton gets what animation when hit, as well as how much damage and explosion effects a body part has.
The really tough part about model butes, is that if you have a character model with many skeleton nodes, you would have to make sure you list each one in order, pertaining in a parent-child relationship (which I would show later in a sample). In modding cases, it could really add up a lot of hours of pure text-editing to get the skeleton written in right. (Bleh!)
Fortunately, I found there are two ways of using it and have it work: the proper way, and the sloppy way (which I would tell after the proper way, 'cause it is needed to understand how to fudge it).
The Proper Way
(At least how I see it!)
1. The first thing to do is get out a sheet of paper and list down in a tree method, how the skeleton nodes within 3DsMax are linked up (in a parent-child method).
This is important when you have lots of nodes to deal with, and you got a bit of typing to do, note that each node has to be assigned a number, just look at the harris's skeleton listing for example.
2. Ok, now just to jump into it.... create a new entry for the skeleton section of the model butes...
It is easier to just copy one of the other model's skeleton listings and just edit it, (just make sure you edit names to make it work) also, make sure you change the skeleton name not the name in the '' text.
3. Next up: node name editing. Of course, there are many ways to do this, but I am just gonna list my method... go down the new entry and replace all the node names first, just make sure the node names match the skeleton nodes within model edit.
4. Now, the next thing I do is replace the names of the piece nodes - piece nodes tell the the engine what nodes are connected to what mesh pieces, and for greater accuracy in hit detection.
5. After that, look at Node Parent, and this is what I do next: this is used by lithtech to link up all the bones within the engine (and is important). To link up a node, you would have to use the number that is right next to name of the batch of attributes for the other node...
Soooo... lets say you have a spine node and you want to attach it to the pelvis...
The pelvis node attributes are numbered 0, so for the node parent I would put 0. And leave it at that. The pelvis node is connected to nothing, so I would put -1 in for the node parent (which means it doesn't have a parent). Not bad? Heh, do it for 50 some nodes - biped has around that much.
It's really important that you get this part right or you'll crash the engine.
6. After you get the node parents done, you are pretty much free to custom the rest on your own time (the few things that do crash the engine, are listed). The rest are just explosion FX for the limbs, which are pretty self explanatory: listing death animations, which animation goes to which limb, etc.
That's about it for the proper way. Now to get sloppy!
To get a model quickly punched out with some sort of hit-tracking and such, just list the nodes you need. Like let's say you want just the head and torso; just list them only, and you would not need to do the legs or arms (though they would only use the default death animation).
Now, 6 nodes are way easier to list and make sure they work then 50. And for modest mod developers, if you only have a few death animations, this works fine.
Character Butes Quickie
Character butes are used to finish up a model for insertion into the engine. Of course, if you miss this step, you won't be able to fully use your model, add new models, or custom some of the aspects of your new model.
The really interesting I do is that I match a character or monster into one of three categories (Marines, Aliens or Predator). Each of the races has an animation list as well as core behaviors that are particular for the race. But now, you may ask, why is this important?
Well, what if you have a dog-like monster you wish to add to the game... you might as well copy the Alien drone's character and swap the model/animation. If you have a bad-ass, hunter-type character you want to add in, you can copy over the predator _drone character. But mostly, a human character can use the harris_ai or some other human/corporate character listing.
To start, make sure you have reviewed the beginning section of character butes, the first thing you need is a model (exported into ABC format) DTX Skins, (converted within DEdit).
1) Copy and Rename Bute Listing
Take a base human_AI (alien_AI or predator_AI) character and copy it. Now, note that if you want to make a multi-player model, you have to put the _MP after the entry's name. If you keep the _AI ending, you can add the model into the engine as a NPC character (AI is already setup due to the copy and pasting. :)
** # 18 - DUDE
Parent = "BaseHuman"
DefaultModel = "DUDE.abc"
DefaultSkin0 = "marine\DUDE_torso.dtx"
DefaultSkin1 = "marine\DUDE_legs.dtx"
DefaultSkin2 = "marine\DUDE_head.dtx"
DefaultSkin3 = ""
DefaultDims = <16.0, 50.0, 16.0>
DisplayName = 6012
GeneralSoundDir = "harris"
** # 19 - DUDE_AI
Parent = "DUDE"
Class = "Marine"
WalkSpeed = 135
RunSpeed = 250
CrouchSpeed = 35
LadderSpeed = 100
** # 90324 - DUDE_MP
Parent = "DUDE"
Class = "Marine"
WalkSpeed = 135
RunSpeed = 250
CrouchSpeed = 35
LadderSpeed = 100
Multi-PlayerModel = "DUDE.abc"
DisplayName = 6013
ScoringClass = 4857
SelectAnim = "Knee_Idl"
SelectPos = <0.0, 0.0, 0.0>
SelectRot = 0.0
SelectScale = 0.5
2) Link the Model to the Bute Listing
Replace the model name with your model. If you put the model in a new directory, make sure you link that properly.
For multi-player, put into this directory: DefaultModelDir = "models\characters\mp\"
And you would need this underneath: Multi-PlayerModel = "mymodel.abc"
3) Texture Setup
DefaultSkinDir = "skins\characters\" DefaultSkin0 = "marine\harris_torso.dtx" DefaultSkin1 = "marine\harris_legs.dtx" DefaultSkin2 = "marine\harris_head.dtx" DefaultSkin3 = "marine\harris_arms.dtx"
This is where you can setup different textures for different parts of the character. Within Modelbutes, if you looked at piece info, and then set the texture index to 1, 2, or 3.
4. Match the Skeleton to the Model
This is important if you setup a skeleton for hit-detection. If you did not have a skeleton, or do not want any type of decent hit-detection, I think you can skip this step.
Well, that's it for the quicky. There is lots more to do with this file, but really this is all you need to edit in order to get your model into the game. (Other parameters are listed at the top of the character butes file).