bevy_blendy_cameras

Crates.iobevy_blendy_cameras
lib.rsbevy_blendy_cameras
version0.5.1
sourcesrc
created_at2024-07-26 19:15:31.813465
updated_at2024-10-27 20:58:47.332876
descriptionBevy editor like cameras controls for Pan/Orbit/Zoom and Fly mode. Switch mode, set camera viewpoint and frame view around entities
homepagehttps://github.com/thmxv/bevy_blendy_cameras
repositoryhttps://github.com/thmxv/bevy_blendy_cameras
max_upload_size
id1316641
size253,987
Xavier Thomas (thmxv)

documentation

README

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.

Commit count: 48

cargo fmt