bevy_gltf_trait

Crates.iobevy_gltf_trait
lib.rsbevy_gltf_trait
version0.1.1
sourcesrc
created_at2024-07-08 11:08:02.538398
updated_at2024-07-08 18:20:44.986397
descriptionCustomizable Bevy Engine GLTF loading
homepage
repositoryhttps://github.com/dekirisu/bevy_gltf_trait
max_upload_size
id1295654
size262,288
Dekirisu (dekirisu)

documentation

README

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 Material used
    • or just edit the StandardMaterials
  • Meshes:
    • edit any Mesh
    • edit their EntityWorldMut (similar to EntityCommands)
    • edit the Transform and EntityWorldMut of their parent
  • Lights:
    • edit their SpotLight, PointLight or DirectionalLight components
    • edit their EntityWorldMut
    • edit the Transform and EntityWorldMut of their parent
  • 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_app to .register_type() them
  • 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
Commit count: 252

cargo fmt