3 releases (breaking)
Uses new Rust 2024
| 0.3.0 | Dec 23, 2025 |
|---|---|
| 0.2.0 | Dec 19, 2025 |
| 0.1.0 | Dec 18, 2025 |
#2324 in Game dev
Used in 2 crates
(via bevy_zeroverse)
140KB
3.5K
SLoC
burn_human 🔥🧍
parametric 3d human (anny) model, view the demo.

features
- parametric 3dmm forward
- bevy plugin
- morphs, skeleton, skinning
- human motion model
- fitting
usage
use bevy::prelude::*;
use bevy_burn_human::{BurnHumanAssets, BurnHumanInput, BurnHumanPlugin};
fn main() {
App::new()
.add_plugins((DefaultPlugins, BurnHumanPlugin::default()))
.add_systems(Startup, setup)
.run();
}
fn setup(
mut commands: Commands,
mut mats: ResMut<Assets<StandardMaterial>>,
assets: Res<BurnHumanAssets>,
) {
commands.spawn((
Camera3d::default(),
Transform::from_xyz(0.0, 1.5, 4.0).looking_at(Vec3::Y, Vec3::Y),
));
commands.spawn((
DirectionalLight::default(),
Transform::from_xyz(2.0, 4.0, 2.0).looking_at(Vec3::Y, Vec3::Y),
));
let n = assets.body.metadata().metadata.phenotype_labels.len();
commands.spawn((
BurnHumanInput {
phenotype_inputs: Some(vec![0.5; n]),
..default()
},
MeshMaterial3d(mats.add(StandardMaterial::default())),
));
}
generate reference data
python tool/scripts/export_reference.py --output assets/model/fullbody_default.safetensors --seed 1234
The exporter now writes a lighter neutral bundle (fullbody_default.safetensors + fullbody_default.meta.json) with the heavy blendshape tensors quantized to float16 and unused reference cases removed. Output is deterministic (seeded) and cached assets live under .cache/anny/.
Bevy loads the model through the asset server (native and wasm). Keep the files under assets/model/ so the asset path model/fullbody_default.meta.json resolves at runtime.
run the demo
cargo run -p bevy_burn_human
license
mit or apache-2.0 (anny stays under its original license)
Dependencies
~86–130MB
~2M SLoC