Hand Wheel
Unlimited rotation around local Z; zero marker +Y.
JoltPhysics Asset Editor 0.31.1 · verified against project sources on 27 September 2026.
Blender setup#
Available since addon 0.19.0; supported by 0.31.1. Add this type under Physical Controls, assign its Key and keep scale 1.
| Field / operation | Meaning and validation |
|---|---|
| Geometry and pivot | Solid cylinder with Radius and full Depth. The three spokes and marker are visual guides; this is not a hollow ring. |
| Motion | Unlimited rotation around local Z; zero marker +Y. |
| Initial state and reading | Mount rotation defines the initial physical pose; the logical rotation counter starts at zero. Preview Phase 0..1 only previews one turn. |
| Limits and capabilities | No Min/Max Angle, Initial Angle, Auto Return or scalar target in the asset. Use resistance and periodic detents; existing runtime speed/position/phase motors and absolute detents remain available. |
| JSON v3 | size:{radius,depth}, periodic_detents? |
Create from the asset#
The following example assumes loaded asset data, a live machine_body and an authored wheel named control_main. Geometry overrides are optional; omit settings to use Blender defaults.
var settings = jolt_asset_control_settings();
settings.set_radius(0.30);
settings.set_depth(0.08);
settings.set_mass(1.5);
settings.set_periodic_detents({count:12});
control = jolt_asset_create_control(asset, "control_main", machine_body, settings);
if (is_undefined(control)) show_debug_message(jolt_get_error_message());
// Step, after the physics update:
if (!is_undefined(control) && control.is_valid()) {
var angle = control.get_angle();
var turns = control.get_turns();
var phase = control.get_phase();
var speed = control.get_speed();
}Live behavior#
get_angle() returns cumulative degrees, get_turns() signed completed turns, get_phase() phase 0..1 and get_speed() degrees per second. Use set_resistance, set_locked and set_periodic_detents; false disables periodic detents. Scalar Auto Return and set_target are unsupported for this type.
Simulation, rendering and lifetime#
Use the existing jolt_update() loop, then read the control's physical state. Drive your visual model with control.get_transform() or the existing control rendering API. The asset helper creates the same JoltControl bodies and constraints as the direct factory; it does not render your model or assign gameplay actions. Each creation is independent.
control.destroy() removes the mechanism and preserves its parent. Parent destruction and jolt_stop() clean up attached controls. Use managed lifecycle calls. No additional native bridge change is required by the Blender controls integration; use the matching current GML loader and jolt_asset_controls scripts.