Bevy Code & Blender addon for a simple workflow to add & edit Bevy components in Blender
Go to file
kaosat.dev 253d33f1bb feat(asset preloading): experimented with using the underlying gltf crate
to get the list of assets & preload them
 * a tiny bit clunky but works and is somewhat cleaner than the previous "staggered loading" approach
 * enables having level load state (could be used for progress information & co)
 * modified blueprints spawning to used the new system
 * various cleanups & related tweaks
 * fixed issues on the Blender side when with the formating of the ron data for assets
2024-06-24 23:47:36 +02:00
.github/workflows chore(Bevy): Update to bevy 0.13 (#136) 2024-03-04 22:16:31 +01:00
crates feat(asset preloading): experimented with using the underlying gltf crate 2024-06-24 23:47:36 +02:00
docs feat(tools/bevy_blueprints): bevy plugin + blender addon for components UI to more easily create components (#70) 2024-02-05 23:01:19 +01:00
examples feat(examples): started examples reorg 2024-06-20 00:08:22 +02:00
testing/bevy_example feat(asset preloading): experimented with using the underlying gltf crate 2024-06-24 23:47:36 +02:00
tools feat(asset preloading): experimented with using the underlying gltf crate 2024-06-24 23:47:36 +02:00
.gitignore chore(lock files ): Delete and ignore Cargo.lock files (#101) 2024-01-19 11:49:22 +01:00
Cargo.toml chore(Bevy): Update to bevy 0.13 (#136) 2024-03-04 22:16:31 +01:00
FUNDING.yml chore(funding): added funding file + ko-fi config (#104) 2024-01-23 16:07:45 +01:00
LICENSE.md fix(): various Fixes and tweaks (#7) 2023-09-28 16:53:21 +02:00
LICENSE_APACHE.md docs(): readme tweaks + added licenses 2023-07-27 02:08:57 +02:00
LICENSE_MIT.md docs(): readme tweaks + added licenses 2023-07-27 02:08:57 +02:00
README-workflow-classic.md feat(tools/bevy_blueprints): bevy plugin + blender addon for components UI to more easily create components (#70) 2024-02-05 23:01:19 +01:00
README-workflow-ui.md refactor(Blenvy): BIG cleanup 2024-06-10 14:08:16 +02:00
README.md docs(README): minor subtitle change 2024-06-12 12:43:27 +02:00
RELEASE_NOTES.md docs(): preparing future release notes 2024-05-03 00:28:00 +02:00
rust-toolchain.toml chore(Bevy): Update to bevy 0.13 (#136) 2024-03-04 22:16:31 +01:00

README.md

Bevy tracking License ko-fi

BLENVY: a friendly Blender <=> Bevy workflow !

demo

Crates & tools for adding components from gltf files in the Bevy game engine.

It enables minimalistic Blender (gltf) centric workflow for Bevy, ie defining entites & their components inside Blender using Blender's objects custom properties. Aka "Blender as editor for Bevy"

It also allows you to setup 'blueprints' in Blender by using collections (the recomended way to go most of the time), or directly on single use objects .

Features

  • Useful if you want to use Blender (or any editor allowing to export gltf with configurable gltf_extras) as your Editor
  • define Bevy components as custom properties in Blender (some visually , some using RON, though an older JSON version is also available)
  • now also with an UI tool to add & edit Bevy components, automatically export gltf blueprints & more in Blender
  • define components in Blender Collections & override any of them in your collection instances if you want
  • ability to automatically turn your Blender collections into gltf Blueprints for reuse
  • minimal setup & code, you can have something basic running fast
  • minimal dependencies: Bevy, Serde & Ron only !
  • opensource

Crates

  • bevy_gltf_components This crate allows you to define components direclty inside gltf files and instanciate/inject the components on the Bevy side.

    There is a video tutorial/explanation if you want, or you can read the crate docs. The examples for the crate are here

  • bevy_gltf_blueprints This crate adds the ability to define Blueprints/Prefabs for Bevy inside gltf files and spawn them in Bevy. With the ability to override and add components when spawning, efficient "level" loading etc

    There is a video tutorial/explanation for this one too, or you can read the crate docs The examples for the crate are here

    Note: this is the recomended crate to use and uses bevy_gltf_components under the hood

  • bevy_gltf_save_load This crate adds the ability to save & load your game state in a relatively simple way, by leveraging the blueprint functionality of bevy_gltf_blueprints to only save a minimal subset of dynamic data, seperating dynamic & static parts of levels etc. The examples for the crate are here

    Note: this uses bevy_gltf_blueprints under the hood

  • bevy_registry_export This crate adds the ability to export your project's Bevy registry to json, in order to be able to generate custom component UIs on the Blender side in the Blender blenvy add-on

Tools

Blender: blenvy

  • an all in one Blender addon for the Blender side of the workflow:
    • allow easilly adding & editing Bevy components , using automatically generated UIs for each component
    • automatically exports your level/world from Blender to gltf whenever you save your Blend file
    • it also supports automatical exports of collections as Gltf blueprints &

Please read the README of the add-on for installation & use instructions

Examples

you can find all examples, by crate as seperate crates for clearer dependencies in here

Workflow

The workflow goes as follows (once you got your Bevy code setup)

  • create & register all your components you want to be able to set from the Blender side (this is basic Bevy, no specific work needed)

component registration

  • then you have two options
    • add your components to objects in Blender manually as custom properties : see here for more details
    • add your components to objects in Blender with a nice UI see here for more details

Limitations / issues

  • Some of bevy_rapier/physics code / ways to define colliders could perhaps be done better/visually within Blender (currently it also goes via RON)

Future work

  • I have a number of other tools/ code helpers that I have not yet included here, because they need cleanup/ might make this example too complex

Credits

  • somebody I cannot recall helped me originally with the gltf loading tracker in the Bevy Discord, so thanks ! And if it was you, please let me know so I can give credit where credit is due :)

Contributors

Thanks to all the contributors helping out with this project ! Big kudos to you, contributions are always appreciated ! :)

License

This repo, all its code, contents & assets is Dual-licensed under either of