

*0x0F8*/ M2Array attachmentIndicesById // (alt. *0x0F0*/ M2Array attachments // position of equipped weapons or effects *0x0E8*/ M2Array collisionFaceNormals // (alt. *0x0E0*/ M2Array collisionPositions // (alt. *0x0D8*/ M2Array collisionIndices // (alt. *0x0B8*/ float bounding_sphere_radius // detail doodad draw dist = clamp (bounding_sphere_radius * detailDoodadDensityFade * detailDoodadDist, …) z, 2.0277779f ) - 0.16f seems to be the maximum camera height *0x0A0*/ CAaBox ⁱ bounding_box // min/max(. *0x098*/ M2Array textureTransformCombos // (alt. *0x090*/ M2Array textureWeightCombos // (alt. *0x088*/ M2Array textureTransformBoneMap // (alt. *0x070*/ M2Array materials // Blending modes / render flags. *0x068*/ M2Array textureIndicesById // (alt. M2Array texture_flipbooks // never seen in file, 4 uint32_t fields. *0x058*/ M2Array texture_weights // Transparency of textures. *0x048*/ M2Array colors // Color and alpha animations definitions. *0x044*/ uint32_t num_skin_profiles // Views (LOD) are now in. *0x034*/ M2Array boneIndicesById //Lookup table for key skeletal bones.

*0x02C*/ M2Array bones // MAX_BONES = 0x100 => Creature\SlimeGiant\GiantSlime.M2 has 312 bones ( ) *0x024*/ M2Array sequenceIdxHashById // Mapping of sequence IDs to the entries in the Animation sequences block. *0x01C*/ M2Array sequences // Information about the animations in the model. *0x014*/ M2Array global_loops // Timestamps used in global looping animations. anim files, change in the exporter reordering sequence+bone blocks before name Uint32_t flag_unk_0x200000 : 1 // apparently: use 24500 upgraded model format: chunked. Uint32_t flag_unk_0x8000 : 1 // seen in UI_MainMenu_Legion

Uint32_t flag_unk_0x2000 : 1 // seen in various legion models Example model: 6DU_HellfireRaid_FelSiege03_Creature Uint32_t flag_texture_transforms_use_bone_sequences : 1 // ≥ 0x800 - When set, texture transforms are animated using the sequence being played on the bone found by index in tex_unit_lookup_table, instead of using the sequence being played on the model's first bone. But if 0x200 is set or if version is bigger than 271, length of M2ParticleOld is 492. By default, length of M2ParticleOld is 476. Uint32_t flag_new_particle_record : 1 // In CATA: new version of ParticleEmitters. #if ≥ // TODO: verify version, these are just added based on where I first saw them - schlumpf. Uint32_t flag_camera_related : 1 // TODO: verify version since (4.1) ᵘ every ᵘ model now has this flag Uint32_t flag_unk_0x80 : 1 // with this flag unset, demon hunter tattoos stop glowing Uint32_t flag_use_texture_combiner_combos : 1 // add textureCombinerCombos array to end of data *0x008*/ M2Array name // should be globally unique, used to reload by name in internal clients Legion uses a chunked file format starting with MD21. Record sizes are not specified in the file. These appear at fixed places in the header. Lastly, run blender and click File->Import->Wavefront (.obj), and find the obj file and click Import Wavefront OBJ, and click OK.The header has mostly the layout of number-offset pairs, containing the number of a particular record in the file, and the offset. You can copy the address from the explorer window for convenience and then right-click on the dos's title bar and say Edit->Paste. Click on the "Extract MDX" button and save it somewhere (remember where :P) You may or may not click on "Extract (and convert) texture used by MDX file" and save(remember where :P) Run modelconv (in dos (cmd)) and convert the files to obj. To edit your new model, open Warcraft3Viewer and click on File->Open MPQ->wc3 directory (C:\Program Files|Warcraft III)\War3x.mpq then press Ctrl+F to select your model.
MDX FILE OPENER INSTALL
Then install the blender and extract the other softwares.
MDX FILE OPENER DOWNLOAD
However, if you want to edit the DoTA hero models by using a freeware, you must first download the 3D modeling Software, mdx/blp Extractor and the mdx -> obj converter. MDL 3D model text files, which can be edited with a text editor.
