Mafia: 4ds specification

Show / hide all.

 

Click to category for expand.

0. Data types

Typ Bit width Byte width Description Range from Range to
char 8 1 Signed integer -128 127
short 16 2 Signed integer -32 768 32 767
int 32 4 Signed integer -2 147 483 648 2 147 483 647
long 64 8 Signed integer -9 223 372 036 854 775 808 9 223 372 036 854 775 807
uchar 8 1 Unsigned integer 0 255
ushort 16 2 Unsigned integer 0 65 535
uint 32 4 Unsigned integer 0 4 294 967 295
ulong 64 8 Unsigned integer 0 18 446 744 073 709 551 615
float 32 4 Real with floating point 3.4e-38 3.4e38

1. 4ds Head

Type Name Description
uchar * 4 Format signature Text: "4DS\0"
ushort 4ds file type version For Mafia PC version: 0x1D (29)
ulong Timestamp
ushort Number of materials
- Materials N definitions of materials
ushort Number of meshes (objects)
- Meshes N definitions of meshes
uchar Allow 5ds animation flag 5ds file must have same name as model, nonzero value to enable, last byte in 4ds file

2. Material

Type Name Description
uint Material flags Final type is logical OR of material flags
float Ambient color: R Material color in shadow, basic range: from 0.0 to 1.0
float Ambient color: G Material color in shadow, basic range: from 0.0 to 1.0
float Ambient color: B Material color in shadow, basic range: from 0.0 to 1.0
float Diffuse color: R Material color in light, basic range: from 0.0 to 1.0
float Diffuse color: G Material color in light, basic range: from 0.0 to 1.0
float Diffuse color: B Material color in light, basic range: from 0.0 to 1.0
float Emission color: R Material emits the color, basic range: from 0.0 to 1.0
float Emission color: G Material emits the color, basic range: from 0.0 to 1.0
float Emission color: B Material emits the color, basic range: from 0.0 to 1.0
float Opacity 0.0: invisible, 1.0: opaque
Block is valid only if env mapping is used
float Env texture ratio 0.0: diffuse only, 1.0: env texture only
uchar Number of chars env map file Max 255 chars
char * N Name of env map file Uppercase
uchar Number of chars diffuse map file Max 255 chars
char * N Name of diffuse map file Uppercase
Block is valid only if alpha mapping is used
uchar Number of chars alpha map file Max 255 chars
char * N Name of alpha map file Uppercase
Block is valid only if animated material is used
uint Number of sequences Max 100, file names eg: diffuse: abc00.bmp, abc01.bmp, ..., abcN-1.bmp, alpha: abc+00.bmp, abc+01.bmp, ..., abc+N-1.bmp, above is stored only first seq file (with zeros).
ushort Unknown
uint Sequence period [ms]
uint Unknown
uint Unknown

2.1. Material type flags

Value Name Description
0x00040000 Diffuse texture
0x08000000 Coloring Valid only if diffuse texture is used, materials without texture are colored always, coloring is used for ambient and diffuse colors, emission is used always
0x00800000 Mip mapping With Mip mapping are generated several textures with different resolution, smaller textures are used for farther planes (eg. blurred afar road)
0x04000000 Animated diffuse texture
0x02000000 Animated alpha texture
0x10000000 Two sided material Note: for shading are used normals only from main side
0x00080000 Environmental texture Simulates glossy material
0x00000100 Basic env texture blending Strength can be modified by parameter, final shading is defined by interpolation between diffuse and env texture
0x00000200 Multiplicative env texture blending Strength cannot be modified by parameter, must be set basic env blending, final shading is defined by multiplication of diffuse and env texture
0x00000400 Additive env texture blending Strength cannot be modified by parameter, must be set basic env blending, final shading is defined by addition of diffuse and env texture
0x00001000 Calculation reflection from env texture by Y asix Should be set always for env mapping
0x00002000 Projection env texture by Y asix Suitable pro detail texture
0x00004000 Projection env texture by Z asix Suitable pro detail texture
0x00008000 Additional effect Must be set for one (or more) following flags
0x40000000 Alpha texture Map in grayscale is used for opacity, black - invisible, white - opaque
0x20000000 Color key One color is used as transparent, eg. black or first color in color table in indexed bitmap, if Mip mapping is used transparent borders are blurred
0x80000000 Additive blending Diffuse texture is used as emission texture

3. Mesh

Type Name Description
uchar Mesh type
Block is valid only if standard mesh type
uchar Mesh visual type
ushort Mesh render flags Final type is logical OR of render flags
ushort Number of parent mesh for link Zero value to not linking
float Position in X axis
float Position in Y axis
float Position in Z axis
float Scale in X axis
float Scale in Y axis
float Scale in Z axis
float Real part W of quaternion rotation
float Imaginary part X of quaternion rotation
float Imaginary part Y of quaternion rotation
float Imaginary part Z of quaternion rotation
uchar Culling flags Usually: 0x09, for sector meshes: 0x7D, for meshes under sector (walls): 0x3D, for meshes in portals: 0x1D, for hidden meshes: 0x10, 0x11
uchar Number of chars mesh name Max 255 chars
char * N Unique mesh name in model file Usually uppercase for Dummy type meshes
uchar Number of chars string parameters of mesh Max 255 chars
char * N String mesh parameters Various additional informations
- Geometry definition by mesh type (and visual type) Standard mesh
Single mesh
Single Morph
Billboard
Morph
Glow
Mirror
Sector
Dummy
Target
Bone

3.1. Mesh types

Value Name Description
0x01 Standard mesh Common object
0x05 Sector Used for different lighting and culling in interiors
0x06 Dummy Invisible bounding box, it has functional character
0x07 Target Used in human models
0x0A Bone Splits single mesh of human into referenceable parts

3.2. Mesh visual types

Value Name Description
0x00 Standard mesh Common object
0x02 Single mesh Alone mesh for human body
0x03 Single morph Records of single mesh and morph, morphing is used for face animation
0x04 Billboard Standard mesh with record which determines geometry rotation to camera
0x05 Morph Animated mesh, simulates eg. waving clothes
0x06 Glow Object without geometry, shows texture of glow on the screen
0x08 Mirror Reflects scene by plane, reflected environment is visible in defined geometry

3.3. Mesh render flags

Value Name Description
0x0001 Use depth bias
0x0002 Receive shadows from cars and humans
0x0008 Unknown, always: 1
0x0020 Receive texture projectors of cars and blood
0x0080 Do not use fog

3.4. Mesh: Standard mesh

Type Name Description
ushort Duplicated geometry For nonzero values is used geometry from referenced mesh
Block is valid if geometry is not duplicated
ushort Number of Level of geometry details
- Level of geometry details N levels of geometries

3.4.1. Mesh: Standard mesh: LOD

Typy Name Description
float Relative distance of LOD Real distance depends on set Level of details in the game, last LOD should have this value zero else it disappear afar
ushort Number of geometry vertices
- Vertices N definitions of vertices
uchar Number of face groups
- Face groups (triangles) N definitions of groups with faces

3.4.2. Mesh: Standard mesh: LOD: Vertex

Type Name Description
float Position of point in X axis
float Position of point in Y axis
float Position of point in Z axis
float Normal vector from vertex position v X axis
float Normal vector from vertex position v Y axis
float Normal vector from vertex position v Z axis
float Position of texture coordinate in X axis
float Position of texture coordinate in Y axis

3.4.3. Mesh: Standard mesh: LOD: Face group

Type Name Description
ushort Number of faces
- Faces N definitions of faces
ushort Material number If value is zero then is used default material

3.4.4. Mesh: Standard mesh: LOD: Face

Type Name Description
ushort First vertex number
ushort Second vertex number
ushort Third vertex number

3.5. Mesh: Single mesh

Type Name Description
- Definition of standard meshe
- Level of geometry details N levels by number of LODs in standard mesh

3.5.1. Mesh: Single mesh: LOD

Type Name Description
uchar Number of joints
uint Unknown
float Bounding box: corner point position in X axis (min)
float Bounding box: corner point position in Y axis (min)
float Bounding box: corner point position in Z axis (min)
float Bounding box: corner point position in X axis (max)
float Bounding box: corner point position in Y axis (max)
float Bounding box: corner point position in Z axis (max)
- Joints N definitions of joints (for bones)

3.5.2. Mesh: Single mesh: LOD: Joint

Type Name Description
float * 16 Transformation matrix
uint Unknown
uint Number of additional values
uint Bone ID
float Bounding box: corner point position in X axis (min)
float Bounding box: corner point position in Y axis (min)
float Bounding box: corner point position in Z axis (min)
float Bounding box: corner point position in X axis (max)
float Bounding box: corner point position in Y axis (max)
float Bounding box: corner point position in Z axis (max)
float * N N additional values by number above

3.6. Mesh: Single Morph

Typ Název Popis
- Definice single meshe
- Definice morphu Bez opětovné definice standardního meshe, která je definovaná v single meshi.

3.7. Mesh: Billboard

Typ Název Popis
- Definice standardního meshe
uint Osa otáčení 0: X, 1: Y, 2: Z
uchar Neotáčet ke kameře 0: použít všechny osy, 1: použít výše vybranou osu

3.8. Mesh: Morph

Typ Název Popis
- Definice standardního meshe
uchar Počet framů (geometrií)
Blok platí pouze při počtu framů větší než nula
uchar Počet úrovní detailu Počet by měl se shodovat se standardním meshem
uchar Neznámý
- Úrovně detailu geometrie N úrovní geometrií za sebou podle počtu LODů
float Bounding box: pozice bodu rohu v ose X (min)
float Bounding box: pozice bodu rohu v ose Y (min)
float Bounding box: pozice bodu rohu v ose Z (min)
float Bounding box: pozice bodu rohu v ose X (max)
float Bounding box: pozice bodu rohu v ose Y (max)
float Bounding box: pozice bodu rohu v ose Z (max)
float Neznámý
float Neznámý
float Neznámý
float Neznámý

3.8.1. Mesh: Morph: LOD

Typ Název Popis
ushort Počet vrcholů Pro všechny framy v LODu je počet stejný
- Vrcholy N definic vrcholů za sebou podle jejich počtu * počtu framů
Blok platí pouze pokud je počet framů * počet vrcholů větší než nula
uchar Neznámý
ushort * N Propojení morphovaných vrcholů s bázovými Obsahuje čísla na bázové vrcholy (v definici LODu standardního meshe), počet je dán počtem vrcholů výše

3.8.2. Mesh: Morph: LOD: Vertex

Typ Název Popis
float Pozice bodu v ose X
float Pozice bodu v ose Y
float Pozice bodu v ose Z
float Vektor normály z bodu vrcholu v ose X
float Vektor normály z bodu vrcholu v ose Y
float Vektor normály z bodu vrcholu v ose Z

3.9. Mesh: Glow

Typ Název Popis
uchar Počet září Pro objekty v prostoru (lampy, lustry, atd...) je podporována pouze jedna záře, pro objekty v pozadí (nebe) je podporováno N+ září
- Záře N definic září za sebou podle jejich počtu

3.9. Mesh: Glow: Glow

Typ Název Popis
float Pozice Výchozí hodnota: 0.0, pro žáře z pozadí pozice znamená odchylku od středu obrazovky
ushort Číslo materiálu Pokud je hodnota nulová, použije se výchozí materiál, jinak se použije textura difuze

3.10. Mesh: Mirror

Typ Název Popis
float Bounding box: pozice bodu rohu v ose X (min)
float Bounding box: pozice bodu rohu v ose Y (min)
float Bounding box: pozice bodu rohu v ose Z (min)
float Bounding box: pozice bodu rohu v ose X (max)
float Bounding box: pozice bodu rohu v ose Y (max)
float Bounding box: pozice bodu rohu v ose Z (max)
float Neznámý
float Neznámý
float Neznámý
float Neznámý
float * 16 Transformační matice odrazu Například pro odlesk v rovině XY obsahuje matice otočení o 90° kolem osy X.
float Barva pozadí R Od: 0.0 do: 1.0
float Barva pozadí G Od: 0.0 do: 1.0
float Barva pozadí B Od: 0.0 do: 1.0
float Dohlednost odrazu
uint Počet vrcholů
uint Počet facetů
- Vrcholy N definic vrcholů za sebou podle jejich počtu
- Facety N definic facetů za sebou podle jejich počtu

3.10.1. Mesh: Mirror: Vertex

Typ Název Popis
float Pozice bodu v ose X
float Pozice bodu v ose Y
float Pozice bodu v ose Z

3.10.2. Mesh: Mirror: Face

Typ Název Popis
ushort Číslo prvního vrcholu
ushort Číslo druhého vrcholu
ushort Číslo třetího vrcholu

3.11. Mesh: Sector

Typ Název Popis
uint Neznámý Vždy: 2049
uint Neznámý Vždy: 0
uint Počet vrcholů
uint Počet facetů
- Vrcholy N definic vrcholů za sebou podle jejich počtu
- Facety N definic facetů za sebou podle jejich počtu
float Bounding box: pozice bodu rohu v ose X (min)
float Bounding box: pozice bodu rohu v ose Y (min)
float Bounding box: pozice bodu rohu v ose Z (min)
float Bounding box: pozice bodu rohu v ose X (max)
float Bounding box: pozice bodu rohu v ose Y (max)
float Bounding box: pozice bodu rohu v ose Z (max)
uchar Počet portálů
- Portály N definic portálů za sebou podle jejich počtu

3.11.1. Mesh: Sector: Vertex

Typ Název Popis
float Pozice bodu v ose X
float Pozice bodu v ose Y
float Pozice bodu v ose Z

3.11.2. Mesh: Sector: Face

Typ Název Popis
ushort Číslo prvního vrcholu
ushort Číslo druhého vrcholu
ushort Číslo třetího vrcholu

3.11.3. Mesh: Sector: Portal

Typ Název Popis
uchar Počet vrcholů
uint Neznámý Vždy: 4
float Neznámý
float Neznámý
float Neznámý
float Neznámý
float Neznámý
float Neznámý
- Vrcholy N definic vrcholů za sebou podle jejich počtu

3.11.4. Mesh: Sector: Portal: Vertex

Typ Název Popis
float Pozice bodu v ose X
float Pozice bodu v ose Y
float Pozice bodu v ose Z

3.12. Mesh: Dummy

Typ Název Popis
float Bounding box: pozice bodu rohu v ose X (min)
float Bounding box: pozice bodu rohu v ose Y (min)
float Bounding box: pozice bodu rohu v ose Z (min)
float Bounding box: pozice bodu rohu v ose X (max)
float Bounding box: pozice bodu rohu v ose Y (max)
float Bounding box: pozice bodu rohu v ose Z (max)

3.13. Mesh: Target

Typ Název Popis
ushort Neznámý
uchar Počet cílů
ushort * N N cílů za sebou podle jejich počtu Číslo meshe kosti krku

3.14. Mesh: Bone

Typ Název Popis
float * 16 Transformační matice
uint ID kosti Spojení se single meshem a 5DS animací
Minichat
Poslední obrázky

29.09.2014

Obrázek

23.09.2014

Obrázek

23.09.2014

Obrázek

23.09.2014

Obrázek

23.09.2014

Obrázek

11.09.2014

Obrázek

02.09.2014

Obrázek

31.08.2014

Obrázek

11.08.2014

Obrázek

09.08.2014

Obrázek

29.07.2014

Obrázek

19.07.2014

Obrázek

19.07.2014

Obrázek

19.07.2014

Obrázek

07.06.2014

Obrázek

06.04.2014

Obrázek

31.03.2014

Obrázek

31.03.2014

Obrázek

29.03.2014

Obrázek

24.03.2014

Obrázek

15.03.2014

Obrázek

11.03.2014

Obrázek

01.03.2014

Obrázek

24.02.2014

Obrázek

17.02.2014

Obrázek

13.02.2014

Obrázek

12.02.2014

Obrázek

06.02.2014

Obrázek

30.12.2013

Obrázek

30.12.2013

Obrázek

30.12.2013

Obrázek

29.12.2013

Obrázek

29.12.2013

Obrázek

29.12.2013

Obrázek

29.12.2013

Obrázek

27.12.2013

Obrázek

19.12.2013

Obrázek

19.12.2013

Obrázek

08.12.2013

Obrázek

08.12.2013

Obrázek

29.11.2013

Obrázek

29.11.2013

Obrázek

05.11.2013

Obrázek

05.11.2013

Obrázek

05.11.2013

Obrázek

05.11.2013

Obrázek

05.11.2013

Obrázek

19.10.2013

Obrázek

05.10.2013

Obrázek

16.09.2013

Obrázek

08.09.2013

Obrázek

08.09.2013

Obrázek

08.09.2013

Obrázek

08.09.2013

Obrázek

08.09.2013

Obrázek

10.08.2012

Obrázek
Anketa
Počítadlo
Kontakt
Chat:
< výše >
Email:
t_ruzicka (at) email.cz
Skype:
djbozkosz
Facebook:
.../tomas.ruzicka.73
Youtube:
djbozkosz
GitHub:
djbozkosz
LinkedIn:
Profil
ČSFD:
djbozkosz

Pokud zažádáte o autorizaci (např. na Skypu), tak aspoň napište co chcete ;) (cz | sk | en)