09915f521d
* chore(crates): updated crates to Bevy 0.13 * updated deps * updated / changed code where relevant * updated README files * bumped version numbers for upcoming release * updated rust-toolchain * updated assets where relevant * closes #132 * feat(bevy_gltf_components): * added GltfProcessed flag component to improve performance of iteration over added<gltfExtras> * closes #144 * light & shadow processing is now integrated, to match lights coming from Blender: you can now control whether lights cast shadows, the cascade resolution , background color etc from Blender * closes #155 * feat(bevy_registry_export): added boilerplate to make registry path relative to assets folder * closes #137 * feat(tools): added boilerplate for internal tools * clean zip file generator for blender add-on releases * example gltf file generator * feat(lighting): added components, exporter support & testing for blender-configurable shadows * added BlenderLightShadows component to bevy_gltf_components * added writing shadow information to gltf_auto_export * updated tests * closes #157 Co-authored-by: Jan Hohenheim <jan@hohenheim.ch> |
||
---|---|---|
.. | ||
src | ||
Cargo.toml | ||
LICENSE.md | ||
LICENSE_APACHE.md | ||
LICENSE_MIT.md | ||
README.md |
README.md
bevy_gltf_components
This crate allows you to define Bevy components direclty inside gltf files and instanciate the components on the Bevy side.
Usage
important : the plugin for processing gltf files runs in update , so you cannot use the components directly if you spawn your scene from gltf in setup (the additional components will not show up)
Please see the
- example
- or use
bevy_asset_loader
for a reliable workflow. - alternatively, use the
bevy_gltf_blueprints
crate, build on this crate's features, that allows you to directly spawn entities from gltf based blueprints.
Here's a minimal usage example:
# Cargo.toml
[dependencies]
bevy="0.13"
bevy_gltf_components = { version = "0.5"}
//too barebones of an example to be meaningfull, please see https://github.com/kaosat-dev/Blender_bevy_components_workflow/examples/basic for a real example
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_plugin(ComponentsFromGltfPlugin::default())
.add_system(spawn_level)
.run();
}
fn spawn_level(
asset_server: Res<AssetServer>,
mut commands: bevy::prelude::Commands,
keycode: Res<Input<KeyCode>>,
){
if keycode.just_pressed(KeyCode::Return) {
commands.spawn(SceneBundle {
scene: asset_server.load("basic/models/level1.glb#Scene0"),
transform: Transform::from_xyz(2.0, 0.0, -5.0),
..Default::default()
});
}
}
Installation
Add the following to your [dependencies]
section in Cargo.toml
:
bevy_gltf_components = "0.5"
Or use cargo add
:
cargo add bevy_gltf_components
Configuration
starting with version 0.3, this plugin is configurable Use the default configuration:
ComponentsFromGltfPlugin::default()
Or disable the legacy mode: (enabled by default)
ComponentsFromGltfPlugin{legacy_mode: false}
You need to disable legacy mode if you want to use the bevy_components
Blender addon + the bevy_registry_export crate
!
As it create custom properties that are writen in real ron file format
instead of a simplified version (the one in the legacy mode)
Note: the legacy mode support will be dropped in future versions, and the default behaviour will be NO legacy mode
SystemSet
the ordering of systems is very important !
For example to replace your proxy components (stand-in components when you cannot/ do not want to use real components in the gltf file) with actual ones,
which should happen AFTER the components from the gltf files have been injected,
so bevy_gltf_components
provides a SystemSet for that purpose:GltfComponentsSet
Typically , the order of systems should be
bevy_gltf_components (GltfComponentsSet::Injection) => replace_proxies
Additional features
- as of version 0.5 , this crate also includes automatic handling of lights in gltf files, to attempt to match Blender's eevee rendering as close as possible:
- BlenderLightShadows (automatically generated by the gltf_auto_export Blender add-on) allows you to toggle light's shadows on/off in Blender and have matching behaviour in Bevy
- BlenderBackgroundShader aka background color is also automatically set on the Bevy side
- BlenderShadowSettings sets the cascade_size on the bevy side to match the one configured in Blender
If these components are present in your gltf file, they will be handled automatically by this crate, will be ignored otherwise.
Examples
https://github.com/kaosat-dev/Blender_bevy_components_workflow/tree/main/examples/basic
Compatible Bevy versions
The main branch is compatible with the latest Bevy release, while the branch bevy_main
tries to track the main
branch of Bevy (PRs updating the tracked commit are welcome).
Compatibility of bevy_gltf_components
versions:
bevy_gltf_components |
bevy |
---|---|
0.5 |
0.13 |
0.2 - 0.4 |
0.12 |
0.1 |
0.11 |
branch main |
0.13 |
branch bevy_main |
main |
License
This crate, all its code, contents & assets is Dual-licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or https://opensource.org/licenses/MIT)