Skip to content

Bevy cameras for Pan/Orbit/Zoom and Fly movements, set viewpoint and frame entities

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

thmxv/bevy_blendy_cameras

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bevy Blendy Cameras

Summary

Editor like cameras controls and features inspired by Blender's viewport camera controls.

Features

  • Pan/orbit/zoom camera controls with "zoom to mouse position" and "auto depth" options
  • Fly camera controls
  • Move to viewpoints (top, bottom, front, back, left, right)
  • Frame entities into view
  • Grab cursor or wrap cursor around the viewport during orbit and fly rotation
  • Egui support

TODO

  • Clean code
  • Make fly mode works with orthographic projection
  • Support "Auto depth" for pan movement. So that the result of the raycast under the mouse coursor always stays under the mouse cursor during pan, if no cursor grab/wrap.
  • Make the raycast used for "Auto depth" respect the materials backface culling setting. Maybe optionally because this might conflict with other raycast options used for other uses by the user.

Default Controls

OrbitCameraController

  • Middle mouse drag - Orbit
  • Shift + Middle mouse drag - Pan
  • Scroll wheel - Zoom

FlyCameraController

  • Middle mouse drag - Rotate
  • Scroll wheel - Change movement speed
  • E - Move forward (zoom)
  • D - Move backward (unzoom)
  • S - Move to the left
  • F - Move to the right
  • W - Move to the bottom
  • R - Move to the top

Quick Start

Add the plugin:

.add_plugins(BlendyCamerasPlugin)

Add the controllers components to a camera:

commands.spawn((
    Camera3dBundle {
        transform: Transform::from_translation(Vec3::new(0.0, 1.5, 5.0)),
        ..default()
    },
    OrbitCameraController::default(),
    FlyCameraController {
        is_enabled: false,
        ..default()
    },
));

Check out the basic example to see more functionalities.

Cargo Features

  • bevy_egui (optional): Ignore input when egui has the focus

Version Compatibility

bevy bevy_blendy_cameras
0.14 0.2-0.5
0.13 0.1

Credits

Disclaimer

I am a bit new to both Rust and Bevy and this plugin is in early stages. Help is welcomed.

About

Bevy cameras for Pan/Orbit/Zoom and Fly movements, set viewpoint and frame entities

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

No packages published

Languages