Bevy Pan/Orbit Camera provides orbit camera controls for Bevy Engine, designed with simplicity and flexibility in mind. Use it to quickly prototype, experiment, for model viewers, and more!
- Smoothed orbiting, panning, and zooming
- Works with orthographic camera projection in addition to perspective
- Customisable controls, sensitivity, and more
- Touch support
- Works with multiple viewports and/or windows
- Easy to control manually, e.g. for keyboard control or animation
- Can control cameras that render to a texture
Default mouse controls:
- Left Mouse - Orbit
- Right Mouse - Pan
- Scroll Wheel - Zoom
Default touch controls:
- One finger - Orbit
- Two fingers - Pan
- Pinch - Zoom
Add the plugin:
.add_plugins(PanOrbitCameraPlugin)
Add PanOrbitCamera
(this will automatically add a Camera3d
but you can add it manually if necessary):
commands.spawn((
Transform::from_translation(Vec3::new(0.0, 1.5, 5.0)),
PanOrbitCamera::default(),
));
This will set up a camera with good defaults.
Check out the advanced example to see all the possible configuration options.
bevy_egui
(optional): MakesPanOrbitCamera
ignore any input thategui
uses, thus preventing moving the camera when interacting with egui windows
bevy | bevy_panorbit_camera |
---|---|
0.15 | 0.21 |
0.14 | 0.19-0.20 |
0.13 | 0.14-0.18 |
0.12 | 0.9-0.13 |
0.11 | 0.6-0.8 |
0.10 | 0.1-0.5 |
- Bevy Cheat Book: For providing an example that I started from
- babylon.js: I referenced their arc rotate camera for some of this
- bevy_pancam: For the egui feature idea
All code in this repository is dual-licensed under either:
- MIT License (LICENSE-MIT or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
at your option. This means you can select the license you prefer! This dual-licensing approach is the de-facto standard in the Rust ecosystem and there are very good reasons to include both.