Skip to content

OrbitControls

Interactive camera controller for orbit-style navigation.

OrbitControls lets the user rotate, pan, and zoom a camera around a target point using mouse input. It is added to the scene like any other node and updates the attached camera each frame. The controller maintains a spherical orbit radius and angular orientation pitch and yaw and applies smoothing when a non-zero damping factor is set.

The control scheme includes:

  • Left mouse drag: orbit around the target
  • Right mouse drag: pan in view space
  • Scroll wheel: zoom in and out
cpp
auto MyScene::OnAttached(SharedContextPointer context) -> void override {
  Add(vglx::OrbitControls::Create(
    context->camera, {
      .radius = 5.0f
    }
  ));
}

INFO

Derives from Node and inherits all public properties and methods.

Construction

Constructors


OrbitControls()

Constructs orbit controls.

cpp
OrbitControls::OrbitControls(Camera* camera, const Parameters& params);
ParameterDescription
cameraCamera the controller manipulates.
paramsConfiguration parameters.

Factories preferred


OrbitControls::Create() std::unique_ptr<OrbitControls>

Creates an instance of OrbitControls.

cpp
static std::unique_ptr<OrbitControls> OrbitControls::Create(Camera* camera, const Parameters& params);
ParameterDescription
cameraCamera the controller manipulates.
paramsConfiguration parameters.

Types

OrbitControls::Parameters struct

Parameters for constructing an OrbitControls object.

ParameterDescription
radius floatInitial distance of the camera from its target.
pitch floatInitial pitch angle in radians.
yaw floatInitial yaw angle in radians.
orbit_speed floatMouse sensitivity when orbiting.
pan_speed floatMouse sensitivity when panning.
zoom_speed floatScroll wheel zoom factor.
damping_factor floatSet to 1 for instant response.

Functions

OnMouseEvent() void virtual

Responds to mouse input for orbiting, panning, and zooming.

cpp
void OrbitControls::OnMouseEvent(MouseEvent* event) override;
ParameterDescription
eventMouse event pointer.

OnUpdate() void virtual

Updates camera position each frame, applying damping if enabled.

cpp
void OrbitControls::OnUpdate(float delta) override;
ParameterDescription
deltaTime step in seconds.

Released under the MIT License.