Transformační body
Čtěte pojmenované transformační body pro modely, vrtule, kamery, světla či efekty.
Ověřeno podle zdrojů projektu 19. září 2026.
Syntax#
jolt_asset_get_point(asset, point_ref);
jolt_asset_get_point_transform(asset, point_ref, [body]);
jolt_asset_create_point(asset, point_ref, body);Factory funkce při chybě vracejí undefined; ihned přečtěte jolt_get_error(). Lookup vrací samostatnou validovanou kopii záznamu. Reference je kanonické UUID nebo přesný Key rozlišující velikost písmen. Vlastník musí být živé spravované těleso aktuálního světa.
Světová transformace = aktuální transformace originu Body × lokální transformace z assetu. Těžiště není autorovací počátek. Pozice používají metry a rotace normalizované XYZW quaterniony. Při pohybu tělesa snímky znovu načítejte.
Transform Point je obecný prostorový bod. JSON v2 points[] obsahuje id, key, volitelné name, position a rotation bez scale, radius, síly či herního typu. Blender kreslí pevnou růžovou krychli 0,24 m a RGB osy 0,30 m; runtime +X/+Y/+Z odpovídá Blender −X/+Y/+Z. Používejte G/R; scale je zamknutý.
Struktura výsledků#
| API / pole | Význam a pravidla |
|---|---|
| jolt_asset_get_point | Běžný záznam; pole position[3], rotation[4]. |
| jolt_asset_get_point_transform | {position:{x,y,z}, rotation:{x,y,z,w}}. Bez tělesa lokální; s tělesem aktuální světová transformace. |
| point.get_transform() / point.get_local_transform() | Aktuální světová transformace / kopie lokální transformace. |
| point.get_position() / point.get_rotation() | Světové {x,y,z} / {x,y,z,w}. |
| point.get_x() / point.get_y() / point.get_z() | Složky světové pozice. |
| point.is_valid() / point.destroy() | Kontrola vlastníka a helperu / odstranění debug registrace. |
Příklad#
// Create: the asset contains Key "propeller_left".
propeller_point = jolt_asset_create_point(asset, "propeller_left", body_vehicle);
// Step or Draw: request a fresh world transform.
if (!is_undefined(propeller_point) && propeller_point.is_valid()) {
var frame = propeller_point.get_transform();
var model_matrix = model_matrix_from_transform(frame);
// Pass model_matrix to your rendering system.
}
jolt_debug_enable(true);
jolt_debug_set(JOLT_DEBUG_POINTS, true);Nastavené body ukládají snímek assetu a sledují aktuální statické/kinematické/dynamické těleso. Nealokují nativní zdroj a neaplikují fyziku. Po použití zavolejte destroy(); zničení vlastníka či jolt_stop() je automaticky zneplatní. Neplatné gettery vracejí undefined. Samotný lookup/transform žádný debug marker neregistruje.
Ověřené kontrakty operací#
Následující kontrakty rozlišují jednotky, návratové hodnoty, chyby a životnost podle aktuální implementace. Nevynechávej kontrolu výsledku: false, 0 a undefined mohou mít u různých metod odlišný význam.
| Symbol / vlastník | Signatura | Kontrakt operace |
|---|---|---|
| AssetPoint.destroy | AssetPoint.destroy() | Boolean platnosti helperu/ownera; destroy true a zneplatní jen helper, ne ownera. |
| AssetPoint.get_local_transform | AssetPoint.get_local_transform() | Aktuální transform {position m, rotation XYZW}, jeho světová pozice/rotace/složka dle názvu. Pouze get_local_transform je vůči owneru. Vše undefined při chybě, výsledky nejsou BBMOD instance s get_transform(). |
| AssetPoint.get_position | AssetPoint.get_position() | Aktuální transform {position m, rotation XYZW}, jeho světová pozice/rotace/složka dle názvu. Pouze get_local_transform je vůči owneru. Vše undefined při chybě, výsledky nejsou BBMOD instance s get_transform(). |
| AssetPoint.get_rotation | AssetPoint.get_rotation() | Aktuální transform {position m, rotation XYZW}, jeho světová pozice/rotace/složka dle názvu. Pouze get_local_transform je vůči owneru. Vše undefined při chybě, výsledky nejsou BBMOD instance s get_transform(). |
| AssetPoint.get_transform | AssetPoint.get_transform() | Aktuální transform {position m, rotation XYZW}, jeho světová pozice/rotace/složka dle názvu. Pouze get_local_transform je vůči owneru. Vše undefined při chybě, výsledky nejsou BBMOD instance s get_transform(). |
| AssetPoint.get_x | AssetPoint.get_x() | Aktuální transform {position m, rotation XYZW}, jeho světová pozice/rotace/složka dle názvu. Pouze get_local_transform je vůči owneru. Vše undefined při chybě, výsledky nejsou BBMOD instance s get_transform(). |
| AssetPoint.get_y | AssetPoint.get_y() | Aktuální transform {position m, rotation XYZW}, jeho světová pozice/rotace/složka dle názvu. Pouze get_local_transform je vůči owneru. Vše undefined při chybě, výsledky nejsou BBMOD instance s get_transform(). |
| AssetPoint.get_z | AssetPoint.get_z() | Aktuální transform {position m, rotation XYZW}, jeho světová pozice/rotace/složka dle názvu. Pouze get_local_transform je vůči owneru. Vše undefined při chybě, výsledky nejsou BBMOD instance s get_transform(). |
| AssetPoint.is_valid | AssetPoint.is_valid() | Boolean platnosti helperu/ownera; destroy true a zneplatní jen helper, ne ownera. |
| jolt_asset_create_point | jolt_asset_create_point(asset,point_ref,body) | Vrací AssetPoint/undefined, zachová nezávislý authoring záznam a sleduje živého ownera; nevytváří fyziku. |
| jolt_asset_get_point | jolt_asset_get_point(asset,point_ref) | Asset + přesný key nebo kanonické UUID. Znovu validuje mutable asset a vrací nezávislý datový záznam, nikoliv fyzikální objekt; chyba undefined a managed error. |
| jolt_asset_get_point_transform | jolt_asset_get_point_transform(asset,point_ref,body=undefined) | Bez body vrací místní transform bodu, s živým body světový {position m, rotation XYZW}; undefined při chybě. |