This is a release of various previously released standalone utilities collected together into one
User Interface. It also includes a fair number of new utilities for models and animations.
There is also an updated ms3dImportExport_ver1_3.ms Max Script which has the same functionality
as version 1.1 but is designed for the new way data is stored in the .ms3d files. Also a little
bone assignment script for 3ds Max and Gmax users is included. The .zip file containing the
release can be downloaded from here:
Edit: Sigh, made a mistake in the release. Put version numbers on the
Python files but didn't change the import statement in the Toolbox.
The CORRECTED release .zip file is here:
Apologies to those who downloaded the first one.
The three files that make up the utility are GameObjectApplicationLibrary_v1_0.py, GameObjectApplicationToolbox_v1_0.py,
and goat.ini. The library is the largest file and the workhorse while the toolbox is the file you click on
in explorer to run the User Interface. goat.ini is a small text file where you can set default paths
for the File Choosers to open up in. There is also a User's Guide in .pdf format named, naturally enough,
UsersGuide.pdf. It isn't a tutorial on modelling or animations, it just tells you how to run the different
buttons and what directory the output files will appear in. However, it does go into some detail on a few
buttons whose function might not be clear. There is also a short walk through on the steps needed to put
a custom bone unit in game, that is, a human unit with the standard skeleton but extra bones added to it.
Old Utilities being Recycled
Mesh converter for humans, mounts, and siege engines. The siege engine skeletons should be correct
this time around.
Strat map model converter.
UV maps to dds utility.
Animmerge, animextract, extract skeleton, export skeleton, survey cas directory, cas to text converter.
Animmerge can now merge siege engine animation files with siege engine models. Due to a bug in Milkshape
some of these merged files kill Milkshape when you try to run the animation. However they play fine
when imported into Gmax or Max.
Importing of RTW raw animations into the M2TW formatted .cas file format.
A RTW battle .cas to .ms3d converter. Puts in a default model comment (bounding sphere), and
default group comments. Resulting file will open in Milkshape but the comments should be checked
especially for weapons and shields.
Banner mesh converters for changing the look of the vanilla banners.
A merge facility to go with the regular mesh converter.
A merge with external skeleton to easily put custom skeletons into a model. The idea here is that
the skeleton can be defined in a little text file which can be posted in a thread or e-mailed.
This way everyone working on a mod can have easy access to one "gold standard" custom skeleton and
merge it into any model they want.
Planarize Seam Normals utility to fix lighting seams on the head or underneath the arms. This is
complicated so see the User's Guide for an explanation.
Two SLERP utilities for interpolating frames of an animation .cas file. These can be used to
speed up or slow down animations.
A concatenate animations button for concatenating two animations into one.
Various debugging utilities but probably not of general use.
Here's a screenshot showing the User Interface for GOAT:
Each button has a little Info button next to it to give you some quick help on what the button
is for, how to use it, and where the output files will go.
The ms3dImportExport script has been updated to work with the new way the data is now
stored in the .ms3d file, specifically animation data but also the texture file names for
siege engines. Functionally it looks the same as version 1.1, that is, two buttons for
importing/exporting full models, and two buttons for importing/exporting geometry scraps.
It has been modified to make all the vertex normals into explicit normals, meaning 3ds Max
will NOT recalculate them. (Sorry Gmax users, Gmax doesn't have explicit normals so this
doesn't apply to you when you run this script.) This means lighting seams won't get introduced
into your models because CA's normals will be kept. An example of putting an Edit Normals modifier
on the head_01 mesh is shown below:
Note that explicit normals are shown as green while regular normals are blue.
If you need to change some normals back to regular normals to let the game recalculate them,
put an Edit Normals modifier on the stack and select the normals and click the reset button to
turn them back into regular normals. Of course don't do this to normals where lighting seams
might occur, like down the head or your regular normals will look like this:
and that leads to the familiar lighting seam:
I've included a utility script for examining and changing bone assignments. This is
probably of little use to Max users who use the weight table but may be of use to Gmax
users wanting an alternative to the graphical way of doing bone assignments.
To use it select a mesh from your model and put a mesh select modifier on top of the skin
modifier and select some vertices. Then run the script by going to menu item
MAXScript->Run Script and navigating to where you installed the script and selecting it.
It will display a GUI with a listbox showing the bone assignments and their weights for the
vertices you selected as well as the vertex locations. You can select a new set and
then click the "Refresh Selection Info" button to refresh the information. Here's a screenshot
of some selected vertices being displayed in the listbox.
One can also change the assignments by selecting some vertices
and then setting the primary and secondary bone and the primary weight (secondary weight is
always 1 minus the primary) and then clicking the "Do Reassignments" button.
Other buttons are the "Check Vertices" button which checks all the meshes in the model to see
if there are any unassigned vertices. There is the "Assign All Single Mesh" button where
you select a mesh, set the primary and secondary assignments and the primary weight then click
the button to assign the entire mesh to those values. There is the "Assign All to Root" button
which assigns every vertex to the root bone, usually bone_pelvis. This is the "start over
from scratch" button. Finally there is the "Auto Assign" button which tries to automate the
bone assignments for every mesh. This only works if your model follows the CA style of
meshes and group types, i.e., Body, Arms, Legs, Head, Hands, primaryactive0, etc.
It uses the group type to figure out what it is working on, for example, Body, then it uses
the z-coordinate to decide if it should assign to bone_pelvis, bone_abs, or bone_torso.
For group type Arms it would use the x-coordinate to decide on bone_rhand, bone_relbow, etc.
It also does a little vertex weighting about the joints which may or may not be desired.
It is meant to do most of the work automatically and then the user can go back and make any final
adjustments by hand.
(1) ms3dImportExport_ver1_3 does not import and export banner .ms3d files.
(2) ms3dImportExport_ver1_3 does not use explicit normals to fix lighting seams when using the
"Import geometry only" button.
TSD has a tutorial on converting RTW battle models to M2TW models using the "Convert RTW battle cas"
Also some nice examples here: