bevy_gltf_trait

Crates.iobevy_gltf_trait
lib.rsbevy_gltf_trait
version
sourcesrc
created_at2024-07-08 11:08:02.538398
updated_at2024-12-10 14:11:01.351135
descriptionCustomizable Bevy Engine GLTF loading
homepage
repositoryhttps://github.com/dekirisu/bevy_gltf_trait
max_upload_size
id1295654
Cargo.toml error:TOML parse error at line 17, column 1 | 17 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include`
size0
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

Versions

Bevy This
0.15 0.2
0.14 0.1

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: 256

cargo fmt