DO/M3D
From Dark Omen Wiki
This article may require cleanup to improve the quality of this article. Please improve this article if you can. |
This article may need to be wikified to increase the quality. Please help by adding relevant internal links, or by improving the article's layout. |
Note: this is old, partly incorrect and very incomplete information. This page will be rewritten sometime.
Contents |
The M3D 3D Object File Layout
The M3D format used by Dark Omen is a raw-data binary format to save a model consisting of a non-hierarchal array of meshes. It is intended for forward-parsing and do not contain block meta-data.
Render flags
M3D stored basic instructions on how the model is intended to be rendered in its filename.
//===================================================================== // Render flags // ------------ // // Render flags for a model are provided, believe it or not, in // the model<nowiki>’</nowiki>s filename. If the leading character is an underline // then the following is a hash for a binary attribute map where // // 00000 ( 0) = no flags // 00001 ( 1) = translucency (colour blending?) // 00010 ( 2) = animate texture UV coordinates // 00100 ( 4) = transparency (alpha blending?) // 10000 (16) = colour key transparency // // The hash depends on character // // <nowiki>’</nowiki>0<nowiki>’</nowiki>..<nowiki>’</nowiki>9<nowiki>’</nowiki>: flag <nowiki>|</nowiki>= char - 48 (==<nowiki>></nowiki> 0 .. 9) // <nowiki>’</nowiki>A<nowiki>’</nowiki>..<nowiki>’</nowiki>Z<nowiki>’</nowiki>: flag <nowiki>|</nowiki>= char - 55 (==<nowiki>></nowiki> 10 .. 35) // <nowiki>’</nowiki>a<nowiki>’</nowiki>..<nowiki>’</nowiki>z<nowiki>’</nowiki>: flag <nowiki>|</nowiki>= char - 87 (==<nowiki>></nowiki> 10 .. 35) // // The most common filename prefixes (actually, the only ones // present in Dark Omen) are: // // "_4": 00000100 (transparency) // "_6": 00000110 (transparecy and animated texture coordinates) // "_7": 00000111 (translucency, animated texture coordinates, and transparency) // "_K": 00010100 (transparency and colour keying) // //===============================================================
General layout
0 | 24 | File header | |
24 | 96 * n | Texture description | |
Sub-object description |
File header:
0 | 4 | Long | File ID |
4 | 4 | Long | Magic |
8 | 4 | Long | Version |
12 | 4 | Long | CRC |
16 | 4 | Long | NOT CRC |
20 | 2 | Short | # textures |
22 | 2 | Short | # sub-objects |
Texture description entry
0 | 64 | Char[64] | Filepath (ignored) |
64 | 32 | Char[32] | Texture filename |
3D Sub-object Description
char name[32]; // object name short parent; // parent index M3DPOINT pivot; // origin for heirarchy short vertices; // number of verts. short faces; // number of faces long flags; long spare1; long spare2;
Geometry
Geometry header List of faces List of vertices |-
List of all M3D models used by battles
Some scenery is also integrated into the Base.M3D map, that will have to be separated to use on other maps
B1_01 | |
1 | _4BARREL.M3D |
2 | _4HUT.M3D |
3 | _7WATER.M3D |
4 | _KHUT1_D.M3D |
5 | _KHUT2_D.M3D |
6 | _KHUT3_D.M3D |
7 | _KTREBSH.M3D |
8 | _KTREGE1.M3D |
9 | _KTREMD1.M3D |
10 | BASE.M3D |
B1_02 | |
1 | _4WINDM2.M3D |
2 | _KTREBSH.M3D |
3 | _KTREGE1.M3D |
4 | _KTREMD1.M3D |
5 | _KWNDM_D.M3D |
6 | BASE.M3D |
B1_03 | |
1 | _4GYGAT1.M3D |
2 | _4GYGAT2.M3D |
3 | _4TOMB.M3D |
4 | _7WATER.M3D |
5 | _KGRAVE.M3D |
6 | _KGRAVE2.M3D |
7 | _KGYWALE.M3D |
8 | _KGYWALL.M3D |
9 | _KHOUS1D.M3D |
10 | _KHOUS2D.M3D |
11 | _KHOUS3D.M3D |
12 | _KHOUS4D.M3D |
13 | _KHOUSE1.M3D |
14 | _KHOUSE2.M3D |
15 | _KHOUSE3.M3D |
16 | _KHOUSE4.M3D |
17 | _KTREBSH.M3D |
18 | _KTREGE1.M3D |
19 | _KTREMD1.M3D |
20 | BASE.M3D |
B1_04 | |
1 | _KLNG1_D.M3D |
2 | _KLNG2_D.M3D |
3 | _KLONGH1.M3D |
4 | _KLONGH2.M3D |
5 | _KTREBSH.M3D |
6 | _KTREGE1.M3D |
7 | _KTTREMD1.M3D |
8 | BASE.M3D |
B1_05 | |
1 | _4CORNER.M3D |
2 | _4CORNS2.M3D |
3 | _4CORNS3.M3D |
4 | _4ENDHS1.M3D |
5 | _4ENDHS2.M3D |
6 | _4HOUSE.M3D |
7 | _4INN.M3D |
8 | _4SHOP.M3D |
9 | _4SHOP1C.M3D |
10 | _4TOWER1.M3D |
11 | _4TOWER2.M3D |
12 | _TOWER3.M3D |
13 | _4TRISHP.M3D |
14 | _4WEALDN.M3D |
15 | _KCHURCH.M3D |
16 | _KGUILDH.M3D |
17 | _KSHOP_D.M3D |
18 | _KSHOPDC.M3D |
19 | _KYARD2.M3D |
20 | BASE.M3D |
B1_06 | |
1 | _4GEROC.M3D |
2 | _4MEDRO1.M3D |
3 | _4MEDRO2.M3D |
4 | _4SMLROC.M3D |
5 | _4TOWER.M3D |
6 | _KTREWS1.M3D |
7 | _KTREWS2.M3D |
8 | BASE.M3D |
B1_07 | |
1 | _4GEROC.M3D |
2 | _4MEDRO1.M3D |
3 | _4MEDRO2.M3D |
4 | _4SMLROC.M3D |
5 | _4TOWER.M3D |
6 | _KTREWS1.M3D |
7 | _KTREWS2.M3D |
B1_08 | |
1 | _4MEDRO1.M3D |
2 | _4MEDRO2.M3D |
3 | _4SMLROC.M3D |
4 | _7WATER.M3D |
5 | _7WATER.M3D |
6 | _KTREWS1.M3D |
7 | _KTREWS2.M3D |
8 | BASE.M3D |
B2_01 | |
1 | _4BURYM1.M3D |
2 | _4BURYM2.M3D |
3 | _KTREBSH.M3D |
4 | _KTREGE1.M3D |
5 | _KTREMD1.M3D |
6 | BASE.M3D |
B2_02 | |
1 | _KTREBSH.M3D |
2 | _KTREGE1.M3D |
3 | _KTREMD1.M3D |
4 | BASE.M3D |
B2_04 | |
1 | _KTREBSH.M3D |
2 | _KTREGE1.M3D |
3 | _KTREMD1.M3D |
4 | BASE.M3D |
B2_05 | |
1 | _4TOWERS.M3D |
2 | _KTREBSH.M3D |
3 | _KTREGE1.M3D |
4 | _KTREMD1.M3D |
5 | BASE.M3D |
B2_07 | |
1 | _6WATER.M3D |
2 | _KTREBSH.M3D |
3 | _KTREGE1.M3D |
4 | _KTREMD1.M3D |
5 | _KVAMPTD.M3D |
6 | _KVAMPTW.M3D |
7 | _KVHOUS1.M3D |
8 | _KVHOUS2.M3D |
9 | _KVHOUS3.M3D |
10 | _KVHOUS4.M3D |
11 | _KVHSE1D.M3D |
12 | _KVHSE2D.M3D |
13 | _KVHSE3D.M3D |
14 | _KVHSE4D.M3D |
15 | BASE.M3D |
B2_08 | |
1 | _4BUFFER.M3D |
2 | _4DANGER.M3D |
3 | _4MINECT.M3D |
4 | _7JEWEL.M3D |
5 | BASE.M3D |
B3_01 | |
1 | _7WATER.M3D |
2 | _KTREBSH.M3D |
3 | _KTREGE1.M3D |
4 | _KTREMD1.M3D |
5 | BASE.M3D |
B3_02 | |
1 | _4GORK.M3D |
2 | _4MORK.M3D |
3 | _KNGTENT.M3D |
4 | _KNGTNT2.M3D |
5 | _KNGTNT2D.M3D |
6 | _KNTNT_D.M3D |
7 | _KORCW_D.M3D |
8 | _KTREBSH.M3D |
9 | _KTREGE1.M3D |
10 | _KTREMD1.M3D |
11 | BASE.M3D |
B3_06 | |
1 | _4LGERK.M3D |
2 | _4MEDRK1.M3D |
3 | _4MEDRK2.M3D |
4 | _4ROCKGP.M3D |
5 | _4SMLRK.M3D |
6 | _KKISH1D.M3D |
7 | _KKISH2D.M3D |
8 | _KKISHS1.M3D |
9 | _KKISHS2.M3D |
10 | _KTRCNS1.M3D |
11 | _KTRCNS2.M3D |
12 | _KTREBSH.M3D |
13 | BASE.M3D |
B3_07 | |
1 | _4ILLROC.M3D |
2 | _4LGERK.M3D |
3 | _4MEDRK1.M3D |
4 | _4MEDRK2.M3D |
5 | _4SMLRK.M3D |
6 | _KTRCNS1.M3D |
7 | _KTRCNS2.M3D |
8 | _KTREBSH.M3D |
9 | BASE.M3D |
B3_08 | |
1 | _4ICEGP1.M3D |
2 | _4ICEGP2.M3D |
3 | _4ICELG1.M3D |
4 | _4ICEMD1.M3D |
5 | _4ICEMD2.M3D |
6 | _4ICESM1.M3D |
7 | _4ICESM2.M3D |
8 | BASE.M3D |
B3_09 | |
1 | _4ICEB01.M3D |
2 | _4ICEB02.M3D |
3 | _4ICEB03.M3D |
4 | BASE.M3D |
B4_01 | |
1 | _KTREWS1.M3D |
2 | _KTREWS2.M3D |
3 | BASE.M3D |
B4_02 | |
1 | _4ROUNDL.M3D |
2 | _4WATMIL.M3D |
3 | _7WATER.M3D |
4 | _KTREBSH.M3D |
5 | _KTREGE1.M3D |
6 | _KTREMD1.M3D |
7 | _KWATM_D.M3D |
8 | BASE.M3D |
B4_03 | |
1 | _4BARN1.M3D |
2 | _4BARN2.M3D |
3 | _4BARN3.M3D |
4 | _4CORNW2.M3D |
5 | _4CORNW3.M3D |
6 | _4CORNWL.M3D |
7 | _4FRMHS1.M3D |
8 | _4FRMHS2.M3D |
9 | _4FRMHS3.M3D |
10 | _4RNDL_D.M3D |
11 | _4ROUNDL.M3D |
12 | _4SBARND.M3D |
13 | _4SMLBRN.M3D |
14 | _4STABL2.M3D |
15 | _4STABL3.M3D |
16 | _4STABLE.M3D |
17 | _4WALCAP.M3D |
18 | _4WALL.M3D |
19 | _KGATE.M3D |
20 | _KRAN_D.M3D |
21 | _KGRANAR.M3D |
22 | _KHAYSTK.M3D |
23 | _KHSTK_D.M3D |
24 | _KTREBSH.M3D |
25 | _KTREGE1.M3D |
26 | _KTREMD1.M3D |
27 | _KTREORG.M3D |
28 | BASE.M3D |
B4_05 | |
1 | _4SSTONE.M3D |
2 | _7WATER.M3D |
3 | _KTREBSH.M3D |
4 | _KTREGE1.M3D |
5 | _KTREMD1.M3D |
6 | BASE.M3D |
B4_06 | |
1 | _7WATER.M3D |
2 | _KTREBSH.M3D |
3 | _KTREGE1.M3D |
4 | _KTREMD1.M3D |
5 | BASE.M3D |
B4_08 | |
1 | _4MAGSTN.M3D |
2 | _KTREBSH.M3D |
3 | _KTREGE1.M3D |
4 | _KTREMD1.M3D |
5 | _4CIRCLE.M3D |
6 | BASE.M3D |
B4_09 | |
1 | _4RNDL_D.M3D |
2 | _4ROUNDLM3D |
3 | _KTREBSH.M3D |
4 | _KTREGE1.M3D |
5 | _KTREMD1.M3D |
6 | _KWINDML.M3D |
7 | _KWNDMLD.M3D |
8 | _KWTWR_D.M3D |
9 | BASE.M3D |
B4_10 | |
1 | _4CRY1_D.M3D |
2 | _4CRYPT1.M3D |
3 | _4CRYPT2.M3D |
4 | _4CRYPT3.M3D |
5 | _4CRYPT4.M3D |
6 | _4CRYPT5.M3D |
7 | _4MOUSS.M3D |
8 | _KTREBSH.M3D |
9 | _KTREGE1.M3D |
10 | _KTREMD1.M3D |
B5_01 | |
1 | _4JEWEL.M3D |
2 | _7GLOW.M3D |
3 | BASE.M3D |
B5_01B | |
1 | BASE.M3D |
2 | TEMPFURN.M3D |
1 | _KTREBSH.M3D |
2 | _KTREGE1.M3D |
3 | _KTREMD1.M3D |