1 unstable release
| 0.1.1 | Jul 8, 2024 |
|---|---|
| 0.1.0 |
|
#461 in Game dev
145KB
2.5K
SLoC
Bevy glTF Trait
This is a fork of bevy /crates/bevy_gltf, that doesn't change any functionalities, but provides several possibilities to customize the conversion between gltf and bevy interns on load using the trait GltfTrait.
Trait Features
- set the extensions
default: &["gltf", "glb"] - Material:
- change the
Materialused - or just edit the
StandardMaterials
- change the
- Meshes:
- edit any
Mesh - edit their
EntityWorldMut(similar toEntityCommands) - edit the
TransformandEntityWorldMutof their parent
- edit any
- Lights:
- edit their
SpotLight,PointLightorDirectionalLightcomponents - edit their
EntityWorldMut - edit the
TransformandEntityWorldMutof their parent
- edit their
- edit the
App
Notes
- If you want to insert components through the trait and they are foreign to bevy_gltf:
- Make sure to use
on_appto.register_type()them
- Make sure to use
- the provided gltf structs make it possible to react to custom gltf properties
Example
The original way of adding the plugin changes to:
fn main(){
let mut app = App::new();
app.add_plugins((
MinimalPlugins,
GltfPlugin::<()>::default(),
// ...
));
app.run();
}
..and can be modified with the trait to either replace or extend (using different extensions) scene imports.
#[derive(Reflect,Default)]
struct WhiteGltf;
impl GltfTrait for WhiteGltf {
const EXTENSIONS: &'static [&'static str] = &["myglb"];
type Material = StandardMaterial;
fn convert_material (mut convert:GltfTraitMaterial) -> Self::Material {
convert.material.base_color = Color::WHITE;
convert.material.base_color_texture = None;
convert.material
}
}
fn main(){
let mut app = App::new();
app.add_plugins((
DefaultPlugins,
GltfPlugin::<WhiteGltf>::default()
));
app.run();
}
Bevy support table
| bevy | bevy_gltf_trait |
|---|---|
| 0.14 | 0.1 |
Dependencies
~34–71MB
~1.5M SLoC