I intend to add support for animations. But what do you mean by "custom" animations - are there animations that you can't create using gmax and for which you have to hack the .x file?
Many animations in FS9 and
ALL animations in FSX are defined in XML scripts, which is then parsed by MakeMDL.exe for FS9, and XtoMDL.exe for FSX.
Complicating matters is that the XML Schema used for FS9 is
very different to the XML Schema developed for FSX, so you would have to branch your script depending on which platform the user is exporting for...
...or have two different scripts at a minimum.
In addition, an FSX model requires an
ProjectName.xamim file, which together with the
ProjectName.x file are parsed by XtoMDL.exe to compile the finished .mdl file.
Max/GMax simply exports animation tracks; i.e., a key-frame matrix. The conditions and all other driving information comes from the XML scripts.
For example, here is an nnn.xanim for an object with a "rudder" animation file. This file would have to be generated by your Python script (or whatever handler you pass control to). It combines data from the model's animation matrix with data from the modeldef.xml file:
Code:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<AnimLib version="9.1">
<Anim name="rudder_percent_key" guid="5433b2a0-0fd9-4192-8f7d-0ba36bf7191d" length="100.000000"
type="Sim" typeParam="AutoPlay" typeParam2="rudder_percent_key">
<AnimStream name="Rotation" id="0" partName="rudder" length="100.000000">
<Keyframe time="0.000000" type="Quaternion" data="0.000000;0.000000;0.000000;1.000000"/>
<Keyframe time="50.000000" type="Quaternion" data="0.000000;0.000000;0.174253;0.984701"/>
<Keyframe time="100.000000" type="Quaternion" data="0.000000;0.000000;0.344016;0.938964"/>
</AnimStream>
</Anim>
</AnimLib>
Here is the associated code from the modeldef.xml file for the named animation:
Code:
<Animation name="rudder_percent_key" guid="5433b2a0-0fd9-4192-8f7d-0ba36bf7191d" length="100" type="Sim" typeParam2="rudder_percent_key" typeParam="AutoPlay" />
<PartInfo>
<Name>rudder_percent_key</Name>
<AnimLength>100</AnimLength>
<Animation>
<Parameter>
<Sim>
<Variable>RUDDER DEFLECTION PCT</Variable>
<Units>percent</Units>
<Bias>50</Bias>
</Sim>
</Parameter>
</Animation>
</PartInfo>
If you like, I can easily generate sample .x files for either FS9 or FSX (or both) for any type of animation...
...to be truly successful, your script(s) would need to replicate the .X file and .XANIM files perfectly.