JSON formát a kolizní tvary
JSON v1–v6, sedm kolizních typů, převod souřadnic a validační limity.
Ověřeno proti aktuálnímu loaderu a exportéru; verze pluginu 0.34.1.
Verze a identita#
Formát je "joltphysics-authoring". Verze 1 používá boxes[]; verze 2 shapes[] a volitelná sockets[], sensors[], raycasts[], force_points[], explosion_points[] a points[]. Physical Controls používají verzi 3 se samostatným polem controls[]; Render Surfaces používají verzi 4 se surfaces[] a ragdolly verzi 5 s ragdoll:{skeleton,parts}. Aktuální loader podporuje verze 1–6. Konfigurace pouze s boxy bez pomocných prvků a ovladačů mohou exportovat v1. configuration_id a ID prvků jsou persistentní UUID, nikoli runtime handly.
Key pomocných prvků odpovídá [a-z][a-z0-9_]{0,63}, je unikátní v kategorii dané konfigurace a nezávisí na Display Name ani Blender Object Name. Socket Key je kvůli kompatibilitě volitelný; novější kategorie jej vyžadují. UUID musí být unikátní napříč dokumentem.
Kolizní geometrie#
| API / pole | Význam a pravidla |
|---|---|
| box: size[3] | Plné lokální rozměry XYZ. |
| sphere: radius | Kladný poloměr. |
| capsule: radius, height | Lokální osa Z; celková výška včetně konců, height > 2 × radius. |
| cylinder: radius, height | Plná výška mezi podstavami, lokální osa Z. |
| tapered_capsule: top_radius, bottom_radius, height | Oba poloměry kladné; height > 2 × max(poloměrů). Top je +Z. |
| tapered_cylinder: top_radius, bottom_radius, height | Oba authoring poloměry kladné; plná výška; Top je +Z. |
| convex_hull: points[N][3] | 4–256 lokálních bodů s 3D objemem. Jeden konvexní obal vyplní konkávní prohlubně. |
Asset má nejvýše 64 kolizních children. Soubor musí mít 1–1 048 576 bajtů. Hodnoty musí zůstat platné po převodu na float32; degenerované obaly, shear, reflexe a neplatné rozměry se odmítají. Asset pouze s pomocnými prvky lze načíst, bez tvarů z něj ale nelze vytvořit kolizní těleso. Convex body obsahují jen geometrii bez UV, materiálů a triangulace.
Souřadnice#
Exporter zrcadlí X: F = diag(-1,1,1), position_json = F × position_blender, rotation_json = F × rotation_blender × F. Convex body zahrnují kladné zapečené měřítko a stejné zrcadlení. JSON rotace jsou normalizované XYZW. V GML je znovu nezrcadlete. Pomocné prvky vyžadují scale 1; používejte jejich size/radius/length, pokud je typ nabízí.
Vytvoření tělesa a migrace#
jolt_asset_create_body(asset, motion, [options]);Použijte options.position = {x,y,z}; vynechaná pozice je nulová a rotace identitní. Starší pěti/šestiargumentová varianta s XYZ zatím zůstává jako dočasná kompatibilita. Nové příklady používejte s options. Načtení nepotřebuje svět; vytvoření tělesa vyžaduje jolt_start(). Obě operace znovu validují měnitelný vstup. Chyba vrací undefined s jolt_get_error(); neúspěšný build uvolní rozpracované zdroje.
Nové související postupy#
Penetration Points / JSON v6#
Verze 6 přidává penetration_points[]. Ragdoll zůstává samostatná verze 5. Exportér volí verzi podle přítomných prvků; ne každý soubor musí mít číslo 6. Načtení neaktivuje automaticky helpers.