Edit(Nov. 25, 07): There is a newer version of VAtlas with support for colour keying and tile sheets, VAtlas 0.3. Also for anyone looking for help, please PM me, do not e-mail me or comment on this journal entry, I won't see it.
VAtlas 0.1 (incase of problems with 0.2)
For volume textures the output is always in DDS format, but I added the ability to export PNGs for single textures for you non-Direct3D infidels. Only problem is Direct3D will only output 24-bit PNGs, oh well. If you want 32-bit PNGs, you'll have to convert the DDS files yourself.
I would appreciate it(read: giant rate++) if people could give it a try and report any possible errors. Read the readme file first though. Also you'll need .Net 2.0 and Managed DirectX installed.
MDX and volume textures
There seems to be very little information on volume textures out there, especially concerning MDX. So here is how to create a custom vertex format that will use the Tw coordinate in MDX.
public struct CustomVertex
public float X;
public float Y;
public float Z;
public float Tu;
public float Tv;
public float Tw;
public static readonly Direct3D.VertexFormats Format;
public static readonly Direct3D.VertexElement Declarator = new Direct3D.VertexElement
new Direct3D.VertexElement( 0, 0, Direct3D.DeclarationType.Float3, Direct3D.DeclarationMethod.Default, Direct3D.DeclarationUsage.Position, 0 ),
new Direct3D.VertexElement( 0, 12, Direct3D.DeclarationType.Float3, Direct3D.DeclarationMethod.Default, Direct3D.DeclarationUsage.TextureCoordinate, 0 ),
public static readonly int StrideSize = Direct3D.VertexInformation.GetDeclarationVertexSize( Declarator, 0 );
Format = Direct3D.VertexInformation.FormatFromDeclarator( Declarator );
public CustomVertex( float X, float Y, float Z, float Tu, float Tv, float Tw )
this.X = X;
this.Y = Y;
this.Z = Z;
this.Tu = Tu;
this.Tv = Tv;
this.Tw = Tw;