Constraints
Přehled constraintů
Vybírá a spravuje native Jolt solver vztahy mezi tělesy nebo mezi jedním tělesem a pevným světem.
Constraint odebírá nebo řídí relativní stupně volnosti. Vyberte nejužší typ odpovídající mechanismu: jednodušší constraint se snáze nastavuje, vysvětluje a ladí než plně obecný SixDOF joint.
Výběr constraintu#
| Typ | Povolený relativní pohyb | Limity / pohon | World varianta |
|---|---|---|---|
| Fixed | Žádný; zachová celý relativní transform | Bez limitů a motoru | Ano |
| Point | Veškerá rotace kolem jednoho shared point | Bez angular limits a motoru | Ano |
| Distance | Volná orientace uvnitř length range | Min/max distance a pružina | Ano |
| Hinge | Jedna rotační osa | Angular limits, torque motor a pružina | Ano |
| Slider | Jedna lineární osa | Lineární limity, force motor a pružina | Ano |
| Cone | Kruhový omezený swing a volný twist | Jediný swing half-angle | Ano |
| SwingTwist | Eliptický swing a omezený twist | Friction a samostatné swing/twist motory | Ne |
| SixDOF | Každá osa může být fixed, free nebo limited | Per-axis friction, limity a motory | Ne |
| Pulley | Dvě délky spojené přes ratio | Celkový length range | Ne |
| Path | Pohyb po Hermite curve | Path motor, friction a rotation modes | Samostatná sekce Paths |
Public creatory#
| Factory | Použití |
|---|---|
| jolt_fixed | Argumenty určuje reference konkrétního kloubu. |
| jolt_point | Argumenty určuje reference konkrétního kloubu. |
| jolt_distance | Argumenty určuje reference konkrétního kloubu. |
| jolt_hinge | Argumenty určuje reference konkrétního kloubu. |
| jolt_slider | Argumenty určuje reference konkrétního kloubu. |
| jolt_cone | Argumenty určuje reference konkrétního kloubu. |
| jolt_swing_twist | Argumenty určuje reference konkrétního kloubu. |
| jolt_sixdof | Argumenty určuje reference konkrétního kloubu. |
| jolt_pulley | Argumenty určuje reference konkrétního kloubu. |
| jolt_path | Argumenty určuje reference konkrétního kloubu. |
Společný creation kontrakt#
- Managed creatory vyžadují jolt_start() a resources patřící jeho aktivnímu default worldu.
- Body-to-body creatory potřebují dvě různá živá JoltBody ve stejném worldu.
- Podporované jsou static-dynamic, kinematic-dynamic a dynamic-dynamic mechanismy; nepodporovaná static-static konfigurace selže.
- Creator vrací JoltConstraint nebo undefined. jolt_get_error() poskytne code, message a context.
- Public positions, anchors a běžné axes jsou pravotočivé world-space X/Y/Z se Z nahoru, pokud stránka výslovně neuvádí COM-local nebo constraint-space data.
Společné runtime rozhraní#
| Metoda | Význam |
|---|---|
| is_valid() | Ověří wrapper, managed world a native generační handle. |
| get_native_handle() | Vrátí opaque handle pro diagnostiku/advanced interop, nebo 0 při neplatnosti. |
| destroy() | Idempotentně odstraní pouze tento constraint. |
| set_enabled() / get_enabled() | Dočasně mění účast v solveru. |
| set_collision_enabled() / get_collision_enabled() | Řídí collision připojené dvojice uživatelských těles. |
Collision policy#
Klasické body-to-body constrainty mají collision defaultně true. SwingTwist a SixDOF ji mají defaultně false. Vypnutí ovlivní pouze danou dvojici a při více constrainteh je reference-counted. World varianty nemají druhé uživatelské těleso a vždy vracejí false.
Update a cleanup order#
jolt_start();
// Create bodies and constraints.
// Step event:
jolt_update();
// Cleanup when needed:
joint.destroy();
body_a.destroy();
body_b.destroy();
jolt_stop();Debug drawing#
jolt_debug_enable(true);
jolt_debug_set(JOLT_DEBUG_CONSTRAINTS, true);
// Draw End, after opaque scene geometry:
jolt_debug_draw();Constraint debug layer zobrazuje live anchors, frames, limity, motory a type-specific solver geometry. Stav simulace nijak nemění.