re: decode CollisionSet_*.bin -- the per-object collision-mesh library
All 18 blobs are byte-identical: the per-stage naming is nominal, and every
stage points at one shared 1675148-byte library stored eighteen times. That
identical size was the reason to open the item, and it turned out to be the
answer to it.
Record layout: {u32 size, u32 name_len, char name[name_len], u32 nv, u32 nt,
f32[3] x nv, u32[3] x nt}, next record at off + 8 + size. The indices are u32
here where MCOL uses u16 -- two different serialisers in one archive.
What makes this a decode rather than a plausible reading: the walk consumes the
file to the byte over 158 variable-length records, with the size word predicted
from the two counts 158/158. A wrong field would desynchronise within a few
records and could not land exactly on the end. All indices in range 158/158;
98.24% of edges shared by exactly two triangles; 147/158 fully manifold.
158 meshes, 90 836 triangles: per-part ship proxies (_bdy/_brg/_eng/_wep/_sld,
the XBG7 sub-part vocabulary) plus 46 stage asteroid meshes whose prefixes are
exactly the stages that have an _AsteroidVolume_wp MCOL.
Two things this file makes me walk back:
* The "1 unit = 1 metre" reading from mapmesh_box_500km is downgraded to
amber. The 500000 arithmetic stands, but it implies that a craft the game's
own tables call "small" is 133 m and that rob_f002 is 447 km -- 89% of the
arena width. The format check survives; the interpretation has no
independent support.
* The _cmesh <-> render-model name link is recorded as UNTESTED, not
confirmed: only one .xbg build manifest survives on the disc, so matching
stems against object names covers 4 of 158, which is no coverage at all.
This commit is contained in:
171
docs/re/data/collisionset.txt
Normal file
171
docs/re/data/collisionset.txt
Normal file
@@ -0,0 +1,171 @@
|
||||
CollisionSet blobs: 18 distinct contents: 1
|
||||
records: 158 bytes consumed: 1675148/1675148 (EXACT)
|
||||
size word == 16 + name_len + 12*nv + 12*nt - 8 : 158/158
|
||||
every triangle index < vertex count : 158/158
|
||||
edges shared by exactly two triangles : 132167/134529 = 98.24%
|
||||
fully manifold meshes : 147/158
|
||||
|
||||
PASS
|
||||
name verts tris bbox diagonal
|
||||
mob_n040_cmesh 58 112 6820.3
|
||||
mob_n041_cmesh 39 74 2564.5
|
||||
mob_n042_cmesh 14 24 1276.0
|
||||
mob_n043_cmesh 14 24 738.9
|
||||
mob_n050_cmesh 58 112 6820.3
|
||||
mob_n051_cmesh 49 94 3247.5
|
||||
mob_n052_cmesh 18 32 1861.9
|
||||
mob_n053_cmesh 20 36 1628.5
|
||||
mob_n054_cmesh 15 26 778.6
|
||||
mob_n055_cmesh 19 34 768.1
|
||||
mob_n056_cmesh 21 38 751.4
|
||||
mob_n060_cmesh 95 186 9211.9
|
||||
mob_n061_cmesh 27 50 4361.3
|
||||
mob_n062_cmesh 18 32 1523.0
|
||||
mob_n063_cmesh 18 32 1531.0
|
||||
mob_n064_cmesh 15 26 835.3
|
||||
mob_n065_cmesh 17 30 882.6
|
||||
mob_n066_cmesh 15 26 961.3
|
||||
mob_n110_bdy_cmesh 29 54 5463.7
|
||||
mob_n111_bdy_cmesh 28 52 3602.2
|
||||
mob_n112_bdy_cmesh 21 38 1093.2
|
||||
mob_n113_bdy_cmesh 20 36 1160.5
|
||||
mob_n114_bdy_cmesh 14 24 765.3
|
||||
mob_n115_bdy_cmesh 18 32 888.3
|
||||
mob_n116_bdy_cmesh 19 34 901.4
|
||||
mob_n500_cmesh 26 48 363.2
|
||||
mob_n900_b01_cmesh 561 1082 17288.3
|
||||
mob_n900_b02_cmesh 545 1050 17288.3
|
||||
mob_n900_cmesh 569 1098 17288.3
|
||||
mob_n900_gear_cmesh 700 1556 2858.9
|
||||
rob_e001_cmesh 1605 4402 44378.7
|
||||
rob_e005_bdy_cmesh 3802 7004 50179.3
|
||||
rob_f001_bdy_cmesh 3459 6356 50179.3
|
||||
rob_f002_cmesh 3682 6968 447521.9
|
||||
rou_e010_cmesh 76 148 133.2
|
||||
rou_e011_cmesh 94 184 235.8
|
||||
rou_e017_cmesh 76 148 133.2
|
||||
rou_e018_cmesh 94 184 235.8
|
||||
rou_e101_bdy_cmesh 380 756 9371.1
|
||||
rou_e101_brg_01_cmesh 71 130 2264.1
|
||||
rou_e101_brg_02_cmesh 78 152 2502.4
|
||||
rou_e101_eng_01_cmesh 92 156 3518.8
|
||||
rou_e101_eng_02_cmesh 92 156 3518.8
|
||||
rou_e101_wep_01_cmesh 18 32 2674.5
|
||||
rou_e102_bdy_cmesh 283 550 6933.2
|
||||
rou_e102_brg_cmesh 12 20 1153.8
|
||||
rou_e102_eng_cmesh 66 94 2493.4
|
||||
rou_e102_wep_cmesh 8 12 537.4
|
||||
rou_e104_bdy_cmesh 280 548 3946.0
|
||||
rou_e104_brg_01_cmesh 26 48 897.8
|
||||
rou_e104_eng_cmesh 42 64 1297.7
|
||||
rou_e104_ext_01_cmesh 32 60 1230.7
|
||||
rou_e104_ext_02_cmesh 32 60 1230.7
|
||||
rou_e105_bdy_cmesh 262 522 3757.1
|
||||
rou_e105_brg_cmesh 48 88 553.7
|
||||
rou_e105_eng_01_cmesh 56 96 1332.5
|
||||
rou_e105_wep_01_cmesh 12 20 251.6
|
||||
rou_e106_bdy_cmesh 412 836 2368.1
|
||||
rou_e106_brg_01_cmesh 22 40 356.8
|
||||
rou_e106_eng_cmesh 90 176 921.3
|
||||
rou_e106_wep_02_01_cmesh 25 46 539.0
|
||||
rou_e107_all_cmesh 78 152 419.9
|
||||
rou_e107_eng_01_cmesh 36 68 241.2
|
||||
rou_e108_all_cmesh 41 78 534.7
|
||||
rou_e108_eng_01_cmesh 8 12 266.0
|
||||
rou_e201_all_cmesh 121 238 2450.6
|
||||
rou_e201_eng_01_cmesh 25 46 937.3
|
||||
rou_e301_base_cmesh 12 20 328.0
|
||||
rou_e302_base_cmesh 12 20 193.4
|
||||
rou_e303_wep_cmesh 8 12 82.1
|
||||
rou_e401_cmesh 12 20 107.3
|
||||
rou_e402_cmesh 8 12 68.6
|
||||
rou_e501_101_cmesh 8 12 405.5
|
||||
rou_e501_102_106_cmesh 8 12 202.7
|
||||
rou_e501_104_cmesh 8 12 304.1
|
||||
rou_e501_105_cmesh 8 12 141.9
|
||||
rou_e901_barrier_cmesh 58 112 9534.9
|
||||
rou_e901_body_01_c 55 106 840.1
|
||||
rou_e901_body_02_c 16 28 258.3
|
||||
rou_e901_body_03_c 306 608 1224.2
|
||||
rou_e901_tail_L_c 24 44 861.9
|
||||
rou_e901_tail_R_c 24 44 861.9
|
||||
rou_e901_wing_01_L_c 8 12 181.2
|
||||
rou_e901_wing_01_R_c 8 12 181.2
|
||||
rou_e901_wing_02_L_c 15 26 382.3
|
||||
rou_e901_wing_02_R_c 15 26 382.3
|
||||
rou_e901_wing_03_L_c 32 60 895.9
|
||||
rou_e901_wing_03_R_c 32 60 895.9
|
||||
rou_e901_wing_04_L_c 14 24 209.5
|
||||
rou_e901_wing_04_R_c 14 24 209.5
|
||||
rou_e901_wing_05_L_c 38 72 1145.5
|
||||
rou_e901_wing_05_R_c 38 72 1145.5
|
||||
rou_e910_core_cmesh 1410 2816 2058.3
|
||||
rou_f101_bdy_cmesh 128 252 1943.1
|
||||
rou_f101_wep_01_cmesh 12 20 266.8
|
||||
rou_f102_bdy_cmesh 128 252 1943.1
|
||||
rou_f102_wep_01_cmesh 12 20 266.8
|
||||
rou_f104_bdy_cmesh 270 536 6907.9
|
||||
rou_f104_sld_01_cmesh 8 12 1021.4
|
||||
rou_f104_sld_02_cmesh 8 12 698.1
|
||||
rou_f105_bdy_cmesh 201 398 4345.7
|
||||
rou_f105_sld_01_cmesh 8 12 983.8
|
||||
rou_f106_bdy_cmesh 136 268 2212.3
|
||||
rou_f106_sld_01_cmesh 24 44 636.2
|
||||
rou_f106_sld_02_cmesh 24 44 636.2
|
||||
rou_f201_bdy_01_cmesh 96 180 421.1
|
||||
rou_f202_cmesh 159 314 2572.4
|
||||
rou_f301_body_cmesh 12 20 539.7
|
||||
rou_f302_cmesh 8 12 183.8
|
||||
rou_f303_body_cmesh 8 12 96.0
|
||||
rou_f401_cmesh 12 20 77.1
|
||||
rou_f402_cmesh 8 12 51.8
|
||||
S01_Asteroid_cmesh_01a 363 658 34254.3
|
||||
S01_Asteroid_cmesh_01b 212 376 30974.1
|
||||
S01_Asteroid_cmesh_02a 619 1138 39752.2
|
||||
S01_Asteroid_cmesh_02b 747 1370 39995.1
|
||||
S01_Asteroid_cmesh_03a 619 1158 40217.2
|
||||
S01_Asteroid_cmesh_03b 736 1360 46540.4
|
||||
S01_Asteroid_cmesh_04a 782 1448 44984.2
|
||||
S01_Asteroid_cmesh_04b 535 978 40160.5
|
||||
S04_Asteroid_cmesh_01 895 1622 73822.3
|
||||
S04_Asteroid_cmesh_02a 1204 2176 69436.0
|
||||
S04_Asteroid_cmesh_02b 1282 2356 74150.4
|
||||
S04_Asteroid_cmesh_03 2003 3626 74048.6
|
||||
S04_Asteroid_cmesh_04 1862 3404 84713.5
|
||||
S04_Asteroid_cmesh_05 1397 2550 79901.0
|
||||
S04_Asteroid_cmesh_06a 442 788 52369.2
|
||||
S04_Asteroid_cmesh_06b 330 604 30301.4
|
||||
S04_Asteroid_cmesh_07a 746 1368 72327.1
|
||||
S04_Asteroid_cmesh_07b 134 244 48014.9
|
||||
S05_Asteroid_cmesh_01 219 406 38168.9
|
||||
S05_Asteroid_cmesh_02a 205 386 18885.4
|
||||
S05_Asteroid_cmesh_02b 204 384 20502.8
|
||||
S05_Asteroid_cmesh_03 164 300 25043.3
|
||||
S05_Asteroid_cmesh_04 188 344 34732.1
|
||||
S08_p1_Asteroid_cmesh_01a 722 1308 29753.7
|
||||
S08_p1_Asteroid_cmesh_01b 546 972 26043.0
|
||||
S08_p1_Asteroid_cmesh_02a 754 1348 26627.9
|
||||
S08_p1_Asteroid_cmesh_02b 404 736 24309.1
|
||||
S08_p1_Asteroid_cmesh_03a 430 772 21897.1
|
||||
S08_p1_Asteroid_cmesh_03b 509 918 25737.3
|
||||
S13_Asteroid_cmesh_01a 1201 2134 22779.1
|
||||
S13_Asteroid_cmesh_01b 706 1256 18998.4
|
||||
S13_Asteroid_cmesh_02a 398 708 13927.6
|
||||
S13_Asteroid_cmesh_02b 514 916 13470.3
|
||||
S14_p1_Asteroid_cmesh_01a 328 600 20990.0
|
||||
S14_p1_Asteroid_cmesh_01b 257 466 15479.2
|
||||
S14_p1_Asteroid_cmesh_02a 570 1040 24344.0
|
||||
S14_p1_Asteroid_cmesh_02b 379 698 16168.5
|
||||
S14_p1_Asteroid_cmesh_03a 247 442 18536.1
|
||||
S14_p1_Asteroid_cmesh_03b 584 1064 23480.9
|
||||
S14_p1_Asteroid_cmesh_04a 123 218 13485.6
|
||||
S14_p1_Asteroid_cmesh_04b 169 302 14212.4
|
||||
S14_p1_Asteroid_cmesh_05 229 410 16777.9
|
||||
S14_p2_Asteroid_cmesh_01a 386 696 19582.7
|
||||
S14_p2_Asteroid_cmesh_01b 442 812 21074.7
|
||||
S14_p2_Asteroid_cmesh_02a 113 202 10183.9
|
||||
S14_p2_Asteroid_cmesh_02b 173 314 10685.8
|
||||
|
||||
158 meshes, 90836 triangles
|
||||
|
||||
PASS
|
||||
Reference in New Issue
Block a user