bevy_skein

Crates.iobevy_skein
lib.rsbevy_skein
version
sourcesrc
created_at2025-03-13 05:39:20.539094+00
updated_at2025-04-08 04:32:49.842446+00
descriptionProcess glTF extras when spawning Scenes to insert Components using Reflection, such as when using Blender as an editor
homepagehttps://rustadventure.dev/
repositoryhttps://github.com/rust-adventure/skein
max_upload_size
id1590523
Cargo.toml error:TOML parse error at line 29, column 1 | 29 | 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
Chris Biscardi (ChristopherBiscardi)

documentation

README

[!CAUTION] in-progress crate.

Skein

A Bevy Plugin and a Blender extension for improving the efficiency of Bevy/Blender workflows.

tldr:

  1. Register components in Bevy
  2. Apply Bevy Components to objects, meshes, or materials in Blender
  3. Export to glTF
  4. Components are instantiated when spawning in Bevy

Quickstart

Add the plugin and register components (reflect(Component) is important!)

use bevy::prelude::*;
use bevy_skein::SkeinPlugin;

fn main() {
    App::new()
        .register_type::<Player>()
        .add_plugins((
            DefaultPlugins,
            SkeinPlugin::default(),
        ))
        .run();
}

#[derive(Component, Reflect, Debug)]
#[reflect(Component)]
struct Player {
    name: String,
    power: f32,
    test: i32,
}
  • Install the Blender Addon (todo)
  • Fetch the Bevy registry using the Blender Operator
  • Select and apply a component
  • Export to glTF
  • Spawn a Scene from the glTF file, which will have components instantiated
commands.spawn(SceneRoot(asset_server.load(
    GltfAssetLabel::Scene(0).from_asset("my_export.gltf"),
)));

Use Cases

  • Apply Bevy Components in Blender
  • Replace materials from Blender with materials defined in Bevy (example)
  • Use Blender Drivers to power Bevy Component values

Why is it named Skein?

Its a tool that aims to improve the efficiency of Bevy (group of birds) and Blender workflows.

A flock of wild geese or swans in flight, typically in a V-shaped formation.

A V formation is a symmetric V- or chevron-shaped flight formation. In nature, it occurs among geese, swans, ducks, and other migratory birds, improving their energy efficiency

Its also thread/yarn related which is cool too.

Commit count: 0

cargo fmt