Difference between revisions of "MSH"
From Dragon Age Toolset Wiki
ChewyGumball (Talk | contribs) m (→Example .MSH.XML file) |
ChewyGumball (Talk | contribs) |
||
Line 6: | Line 6: | ||
Other options include: | Other options include: | ||
− | :-mmdtogff{{undocumented}} | + | :-mmdtogff{{undocumented}} - what mmdtogff means or does is unknowns besides it is required to compile msh.xml files. |
== msh.xml schema in RELAX NG 1.0 format == | == msh.xml schema in RELAX NG 1.0 format == |
Revision as of 04:16, 20 November 2009
MSH (mesh) files define a 3D mesh, to be referenced by MMH files when creating models in the game.
MSH files are defined using XML source files with the extension .msh.xml. These files are run through the GraphicsProcessorMSH.exe program (found in the Dragon Age\Toolset\export_processors directory) to produce binary files that can be used by the game directly.
- GraphicsProcessorMSH [-outdir <out-dir>] [-platform <x360,pc,ps3>] [options] [-indir<input-directory> / <input-file>]
Other options include:
- -mmdtogff[Undocumented] - what mmdtogff means or does is unknowns besides it is required to compile msh.xml files.
msh.xml schema in RELAX NG 1.0 format
See Relax NG Specs for information on the RELAX NG 1.0 XML schema format. For a free converter/verifier, see jing-trang.
<?xml version="1.0" encoding="UTF-8"?> <grammar ns="" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> <start> <element name="ModelMeshData"> <attribute name="Name"> <data type="NCName"/> </attribute> <attribute name="Version"> <data type="integer"/> </attribute> <zeroOrMore> <element name="MeshGroup"> <attribute name="Name"> <data type="NCName"/> </attribute> <optional> <attribute name="Optimize"> <data type="NCName"/> <!-- "all", "none", or "indices" --> </attribute> </optional> <optional> <attribute name="optimize"> <!-- Appears to be the same as Optimize, apparently both capitalizations are allowed--> <data type="NCName"/> </attribute> </optional> <oneOrMore> <element name="Data"> <optional> <attribute name="ElementCount"> <data type="integer"/> <!-- If semantic is not "indices", this count gives the number of tuples in the CDATA. --> </attribute> </optional> <optional> <attribute name="IndexCount"> <data type="integer"/> <!-- If semantic is "indices", this count gives the number of integers in the data's CDATA. --> </attribute> </optional> <optional> <attribute name="IndexType"> <data type="NCName"/> <!-- Every example of this has the value "Index32", without exception. --> </attribute> </optional> <attribute name="Semantic"> <data type="NCName"/> <!-- "POSITION", "Indices", "TEXCOORD", "TANGENT", "BINORMAL", "NORMAL", "BLENDWEIGHT", "BLENDINDICES" --> </attribute> <optional> <attribute name="Type"> <data type="NCName"/> <!-- indicates how many elements and of what type are in the tuples in the CDATA. Values are "Float4" (four floating point numbers), "Float2" (two floating point numbers), "Short4" (four integers) --> </attribute> </optional> <text/> <!-- contains CDATA with tuples of numbers. For example, a Float2 type MSH had this: <![CDATA[0.195959 0.999994 0.195959 0.266686 0 0.266683 0 1. 0.999999 0.999994 1. 0.166668 ]]> --> </element> </oneOrMore> </element> </zeroOrMore> </element> </start> </grammar>
Constants
Type enum:
/// 1 float DECLTYPE_FLOAT1 = 0, /// 2 floats DECLTYPE_FLOAT2 = 1, /// 3 floats DECLTYPE_FLOAT3 = 2, /// 4 floats DECLTYPE_FLOAT4 = 3, /// 4-byte color DECLTYPE_COLOR = 4, /// 4 unsigned bytes DECLTYPE_UBYTE4 = 5, /// 2 shorts DECLTYPE_SHORT2 = 6, /// 4 shorts DECLTYPE_SHORT4 = 7, /// 4 normalized bytes DECLTYPE_UBYTE4N = 8, /// 2 normalized shorts DECLTYPE_SHORT2N = 9, /// 4 normalized shorts DECLTYPE_SHORT4N = 10, /// 2 normalized unsigned shorts DECLTYPE_USHORT2N = 11, /// 4 normalized unsigned shorts DECLTYPE_USHORT4N = 12, /// 3d unsigned 10/10/10 format DECLTYPE_UDEC3 = 13, /// 3d unsigned 10/10/10 normalized DECLTYPE_DEC3N = 14, /// 2 16-bit floats DECLTYPE_FLOAT16_2 = 15, /// 4 16-bit unsigned floats DECLTYPE_FLOAT16_4 = 16, DECLTYPE_UNUSED = 0xffffffff
Usage enum:
/// Position DECLUSAGE_POSITION = 0, /// Blend weights DECLUSAGE_BLENDWEIGHT = 1, /// Blend indices DECLUSAGE_BLENDINDICES = 2, /// Normal DECLUSAGE_NORMAL = 3, /// Point Size DECLUSAGE_PSIZE = 4, /// Texture coordinates DECLUSAGE_TEXCOORD = 5, /// Tangent vector DECLUSAGE_TANGENT = 6, /// binormal vector DECLUSAGE_BINORMAL = 7, /// tessellation factor DECLUSAGE_TESSFACTOR = 8, /// PositionT DECLUSAGE_POSITIONT = 9, /// color channel DECLUSAGE_COLOR = 10, /// fog value DECLUSAGE_FOG = 11, /// depth DECLUSAGE_DEPTH = 12, /// sample DECLUSAGE_SAMPLE = 13, // error/other/unset DECLUSAGE_UNUSED = 0xffffffff
Example .MSH.XML file
<?xml version="1.0" encoding="UTF-8"?> <ModelMeshData name="string" Version="int"> <!-- must have 0 or more of these, obviously having at least 1 would be required for being useful --> <MeshGroup name="string"><!-- optional attributes: Optimize="string"<< all,none, or indicies --> <!-- must have at least 1 of these --> <!-- I believe each separate data element contains data of the type specified in Semantic --dont know what default behaviour is when Semantic is not specified-- for instance, first will hold all vert data, second hold normals, third hold triangle indecies etc --> <Data> <!-- optional attributes: ElementCount="int" -- If semantic is not "indices", this is the number of tuples in the CDATA. IndexCount="int" -- If semantic is "indices", this is the number of integers in the data's CDATA. IndexType="string"> -- Every example of this has the value "Index32", without exception. Semantic="string" -- "POSITION", "Indices", "TEXCOORD", "TANGENT", "BINORMAL", "NORMAL", "BLENDWEIGHT", "BLENDINDICES" Type="string" -- indicates how many elements and of what type are in the tuples in the CDATA. "Float4" (four floating point numbers), "Float2" (two floating point numbers), "Short4" (four integers) --> data <!-- contains CDATA with tuples of numbers. For example, a Float2 type MSH had this: <![CDATA[0.195959 0.999994 0.195959 0.266686 0 0.266683 0 1. 0.999999 0.999994 1. 0.166668 ]]> --> </Data> </MeshGroup> </ModelMeshData>