Skip to content

Instantly share code, notes, and snippets.

This file has been truncated, but you can view the full file.
COL3ü  COL3_Container_981  €· 5 ÀµÞOí@þOíÀÆØšÀ4—À¾Oí@ÈØš@(—@  ùÿüÿþÿ üÿþÿ  þÿùÿ þÿùÿüÿ  üÿ    ùÿ                  þOm½ÆØ½4—†¼¾Om=ÈØ=(—†<  þOm½ÆØ½4—†¼¾Om=ÈØ=(—†<ÿÿÿÿÿÿÿÿ ¾Om=ÆØ½4—†¼¾Om=ÈØ=(—†<ÿÿÿÿÿÿÿÿ COL3  COL3_BoundingSphere_ À5 6 ~AxÁyÁ~Á{A~A~A â           ÿÿ  üÿ  úÿ  ùÿ  øÿ                       ÿÿ  ýÿ  üÿ  úÿ  ùÿ  øÿ  øÿ                         ÿÿ  ýÿ  üÿ  úÿ  ùÿ  øÿ  øÿ                         ÿÿ  ýÿ  üÿ  úÿ  ùÿ  øÿ  øÿ                         ÿÿ  ýÿ  üÿ  úÿ  ùÿ  øÿ  øÿ                        ÿÿ  ýÿ  üÿ  úÿ  ùÿ  øÿ øÿ                          ÿÿ  ýÿ  üÿ  úÿ  ùÿ  øÿ øÿ         
COL3`   Õ |· 5 °µ~AþOíÀÆØšÀ4—À ¾Oí@ÈØš@(—@ COL3`   Ö  6 87 0µ!æÄA¸<¼Á•ëÀˆ7ÿ¿ ¼<¼A»•ë@|7ÿ? COL3`   × *-À…Æ-A ø¯>­óÞ>"–BÀž,A€XÝ< ¾Àl /A<
)? COL3`   Ø €v·@.½ ¸µɉ?ê-¿ðо"†H¿ þ-?ê~¤>ô…H? COL3ð   Ù œ~¼@…-¼‚c¾¦­@À"¿6;á¿ ‰g¿ à-?"…Þ?à×?  ¿7;á¿€ÙQ¿ €˜ü=ÉÀ¿ _+> 9 À"¿ÐÀ¿ ‰g¿ –ü=ÐÂÝ?€„¾ 9 "¿ý¼? ìQ¿ @Ø>ä„Þ? þ > 9  ^µ>"»à¿0cQ¿ ° ?"…Þ?°Ø? 9 COL3ð   Ú ‡
¼ ~©;"ö¾i®@>»à¿à-¿ðÒg¿ "…Þ?ØÓ?à×?  >»à¿Ø ¿ðÒg¿ >ý¼?ØÓ?@; 9 ³ºà¿ˆ ¿cQ¿ M{À¿ˆð?@”,> 9 "»à¿¨ ¿0cQ¿ "…Þ?°^µ¾°Ø? 9 ý¼?Ø ¿ ûQ¿ ä„Þ?ØÒ? +> 9 COL3`   Û  ¶ b÷öA$ØÁÚVÁÀLÔÀ $ØAÐVAÀLÔ@ COL3`
{
"nodes": [
{
"offset": 0,
"min": [
4.7569539418645945e-08,
1.3452465257518244e-43,
9.184110135184851e-41
],
"max": [
[
{
"offset": 0,
"min": [
4.7569539418645945e-08,
1.3452465257518244e-43,
9.184110135184851e-41
],
"max": [
0.0,
Python 3.14.0 (tags/v3.14.0:ebf955d, Oct 7 2025, 10:15:03) [MSC v.1944 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
... "num_aabb_groups": len(groups),
... "num_headers": len(headers),
... "header_offsets": [h["offset"] for h in headers],
... }
...
... with open(output_meta, "w", encoding="utf-8") as f:
... json.dump(meta, f, indent=2)
...
Python 3.14.0 (tags/v3.14.0:ebf955d, Oct 7 2025, 10:15:03) [MSC v.1944 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
...
... # --- AABB Tree Nodes ---
... # For simplicity, read until next object or EOF
... # Each node: min(3f), max(3f), left(int), right(int), prim(int) = 36 bytes
... # We'll read until we hit the next object or EOF
... while True:
... node_data = f.read(36)
... if len(node_data) < 36:
Python 3.14.0 (tags/v3.14.0:ebf955d, Oct 7 2025, 10:15:03) [MSC v.1944 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
...
... # Sanity check: min should be less than max
... if min_x <= max_x and min_y <= max_y and min_z <= max_z:
... # Optional: ignore obvious garbage (e.g., huge coordinates)
... if all(-10000 < v < 10000 for v in (min_x, min_y, min_z, max_x, max_y, max_z)):
... found_nodes.append({
... "offset": offset,
... "min": (min_x, min_y, min_z),
Python 3.14.0 (tags/v3.14.0:ebf955d, Oct 7 2025, 10:15:03) [MSC v.1944 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
... header_end = offset + 8 + file_size
... # Attempt to read AABB node count at end of block
... try:
... # Rough guess: AABB nodes usually at the end of the block
... search_offset = offset + 8 + file_size - 4 - 36*max_nodes
... if search_offset < 0: search_offset = offset + 8
... for i in range(max_nodes):
... node_offset = search_offset + i*36
COL3`   Õ |· 5 °µ~AþOíÀÆØšÀ4—À ¾Oí@ÈØš@(—@ COL3`   Ö  6 87 0µ!æÄA¸<¼Á•ëÀˆ7ÿ¿ ¼<¼A»•ë@|7ÿ? COL3`   × *-À…Æ-A ø¯>­óÞ>"–BÀž,A€XÝ< ¾Àl /A<
)? COL3`   Ø €v·@.½ ¸µɉ?ê-¿ðо"†H¿ þ-?ê~¤>ô…H? COL3ð   Ù œ~¼@…-¼‚c¾¦­@À"¿6;á¿ ‰g¿ à-?"…Þ?à×?  ¿7;á¿€ÙQ¿ €˜ü=ÉÀ¿ _+> 9 À"¿ÐÀ¿ ‰g¿ –ü=ÐÂÝ?€„¾ 9 "¿ý¼? ìQ¿ @Ø>ä„Þ? þ > 9  ^µ>"»à¿0cQ¿ ° ?"…Þ?°Ø? 9 COL3ð   Ú ‡
¼ ~©;"ö¾i®@>»à¿à-¿ðÒg¿ "…Þ?ØÓ?à×?  >»à¿Ø ¿ðÒg¿ >ý¼?ØÓ?@; 9 ³ºà¿ˆ ¿cQ¿ M{À¿ˆð?@”,> 9 "»à¿¨ ¿0cQ¿ "…Þ?°^µ¾°Ø? 9 ý¼?Ø ¿ ûQ¿ ä„Þ?ØÒ? +> 9 COL3`   Û  ¶ b÷öA$ØÁÚVÁÀLÔÀ $ØAÐVAÀLÔ@ COL3`
,-187463476794515959115611573412962500608.00,0.00) left=-15923162 right=136513572 prim=-15923170 extra=25081e081f080dff
Node 3532: min=(0.00,-187463334817648733553918605782203498496.00,0.00) max=(-187463375382467940857259453676706070528.00,0.00,-187463355100058337205589029729454784512.00) left=136448027 right=-15923167 prim=136316953 extra=1f080dff1d081e08
Node 3533: min=(-187463395664877544508929877623957356544.00,0.00,-187463294252829526250577757887700926464.00) max=(0.00,-187463334817648733553918605782203498496.00,0.00) left=-15923172 right=135923745 prim=-15923173 extra=1e081d0818080dff
Node 3534: min=(0.00,-187463192840781507992225638151444496384.00,0.00) max=(-187463213123191111643896062098695782400.00,0.00,-187463273970419922598907333940449640448.00) left=135858194 right=-15923176 prim=135923731 extra=19080dff15081c08
Node 3535: min=(-187463233405600715295566486045947068416.00,0.00,-187463213123191111643896062098695782400.00) max=(0.00,-187463050863914282430532670520685494272.00,0.00) left=-1592318