Blender a integrace

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#

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 / poleVýznam a pravidla
jolt_asset_get_pointBěž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#

GML
// 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íkSignaturaKontrakt operace
AssetPoint.destroyAssetPoint.destroy()Boolean platnosti helperu/ownera; destroy true a zneplatní jen helper, ne ownera.
AssetPoint.get_local_transformAssetPoint.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_positionAssetPoint.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_rotationAssetPoint.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_transformAssetPoint.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_xAssetPoint.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_yAssetPoint.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_zAssetPoint.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_validAssetPoint.is_valid()Boolean platnosti helperu/ownera; destroy true a zneplatní jen helper, ne ownera.
jolt_asset_create_pointjolt_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_pointjolt_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_transformjolt_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ě.