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);| Parameter | Description |
|---|---|
| camera | Camera the controller manipulates. |
| params | Configuration 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);| Parameter | Description |
|---|---|
| camera | Camera the controller manipulates. |
| params | Configuration parameters. |
Types
OrbitControls::Parameters struct
Parameters for constructing an OrbitControls object.
| Parameter | Description |
|---|---|
| radius float | Initial distance of the camera from its target. |
| pitch float | Initial pitch angle in radians. |
| yaw float | Initial yaw angle in radians. |
| orbit_speed float | Mouse sensitivity when orbiting. |
| pan_speed float | Mouse sensitivity when panning. |
| zoom_speed float | Scroll wheel zoom factor. |
| damping_factor float | Set 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;| Parameter | Description |
|---|---|
| event | Mouse event pointer. |
OnUpdate() void virtual
Updates camera position each frame, applying damping if enabled.
cpp
void OrbitControls::OnUpdate(float delta) override;| Parameter | Description |
|---|---|
| delta | Time step in seconds. |