Geometry (Donkey Kong Country Returns): Difference between revisions
Geometry (Donkey Kong Country Returns) (view source)
Revision as of 00:47, 4 September 2016
, 4 September 2016no edit summary
>Aruki |
>Aruki mNo edit summary |
||
(6 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
The format for ''geometry'' in Donkey Kong Country Returns appears in the [[CMDL (Donkey Kong Country Returns)|CMDL]] and [[MREA (Metroid Prime 3)|MREA]] formats. | The format for ''geometry'' in Donkey Kong Country Returns appears in the [[CMDL (Donkey Kong Country Returns)|CMDL]] and [[MREA (Metroid Prime 3)|MREA]] formats. | ||
{{research|minor|There | {{research|minor|There is an unknown value in the surface header, and the possible vertex formats should be documented.}} | ||
__TOC__ | __TOC__ | ||
Line 19: | Line 19: | ||
=== Normals === | === Normals === | ||
In the CMDL format, vertex normals are usually stored as shorts. To get the corresponding float value, read as a signed short and divide by 0x4000. In the MREA format, normals are never packed into shorts and are always stored as floats. | |||
=== Vertex Color === | === Vertex Color === | ||
Line 88: | Line 88: | ||
| u32 | | u32 | ||
| 1 | | 1 | ||
| | | '''Model Pointer Storage''' | ||
| Always 0 | | Always 0. This is filled in at runtime with a pointer to the owner model. | ||
|- | |- | ||
| 0x14 | | 0x14 | ||
| u32 | | u32 | ||
| 1 | | 1 | ||
| | | '''Next Surface Pointer Storage''' | ||
| Always 0 | | Always 0. This is filled in at runtime with a pointer to the next sibling surface. | ||
|- | |- | ||
| 0x18 | | 0x18 | ||
| u16 | | u16 | ||
| 1 | | 1 | ||
| | | '''Skin Matrix Bank Index''' | ||
| | | | ||
|- | |- | ||
| 0x1A | | 0x1A | ||
Line 119: | Line 119: | ||
| 1 | | 1 | ||
| '''Visibility Group Index''' | | '''Visibility Group Index''' | ||
| This value will be 0xFF if this surface isn't in a visibility group. (Always 0xFF in MREA.) | |||
|- | |- | ||
| 0x1E | | 0x1E | ||
| | | u8 | ||
| 1 | | 1 | ||
| '''UV Array Index''' | | '''UV Array Index''' | ||
| If 0, this surface uses the float UVs array; if 1, this surface uses the short UVs array | | If 0, this surface uses the float UVs array; if 1, this surface uses the short UVs array | ||
|- | |||
| 0x1F | |||
| u8 | |||
| 1 | |||
| '''Extra Data Size''' | |||
| Amount of space taken up by extra data. Always 0 on CMDLs, 0x18 on MREAs. | |||
|- | |- | ||
| 0x20 | | 0x20 | ||
| colspan= | | u8 | ||
| ''Extra Data Size'' | |||
| '''Extra Data''' | |||
| Empty on CMDL; contains a bounding box used for depth sorting on MREA. | |||
|- | |||
| colspan=5 {{unknown|End of surface header; pad to multiple of 32 before primitive data starts}} | |||
|} | |} | ||