10 releases (4 breaking)
0.5.2 | Mar 16, 2023 |
---|---|
0.5.1 | Mar 14, 2023 |
0.4.1 | Mar 7, 2023 |
0.3.0 | Nov 18, 2022 |
0.1.0 | Sep 7, 2022 |
#42 in Rendering
131 downloads per month
24KB
300 lines
Bevy Image Export
A Bevy plugin for rendering image sequences.
Usage
use bevy::{prelude::*, winit::WinitSettings};
use bevy_image_export::{ImageExportCamera, ImageExportPlugin};
fn main() {
let export_plugin = ImageExportPlugin::default();
let export_threads = export_plugin.threads.clone();
App::new()
.insert_resource(WinitSettings {
return_from_run: true,
..default()
})
.add_plugins(DefaultPlugins.set(WindowPlugin {
primary_window: Some(Window {
resolution: (1024., 1024.).into(),
..default()
}),
..default()
}))
.add_plugin(export_plugin)
// ...
.run();
// This line is optional but recommended.
// It blocks the main thread until all image files have been saved successfully.
export_threads.finish();
}
fn setup(
mut commands: Commands,
mut meshes: ResMut<Assets<Mesh>>,
mut materials: ResMut<Assets<StandardMaterial>>,
) {
commands
.spawn(Camera3dBundle {
transform: Transform::from_xyz(-2.0, 2.5, 5.0).looking_at(Vec3::ZERO, Vec3::Y),
..default()
})
// Add a child camera to your main camera and insert the ImageExportCamera component.
.with_children(|parent| {
parent
.spawn(Camera3dBundle::default())
.insert(ImageExportCamera {
// Frames will be saved to "./out/[#####].png".
output_dir: "out",
extension: "png",
..default()
});
});
// ...
}
Video file export
With FFmpeg installed, you can run the following command to convert your exported image sequence to an MP4 video file:
ffmpeg -r 60 -i out/%05d.png -vcodec libx264 -crf 25 -pix_fmt yuv420p out.mp4
Dependencies
~32–67MB
~1M SLoC