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.
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 M3D scenary models Some scenary 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
SPARE9
1) _KTREBSH.M3D
2) _KTREGE1.M3D
3) _KTREMD1.M3D