#magica-voxel #bevy #bevy-plugin #mesh #loading #vox

bevy_vox_mesh

A bevy engine plugin for loading magica voxel files directly in bevy as usable meshes

9 releases (breaking)

0.8.0 Nov 14, 2023
0.7.0 Jul 15, 2023
0.6.0 Mar 7, 2023
0.5.0 Dec 6, 2022
0.3.0 Jun 13, 2021

#927 in Game dev

MIT license

29KB
214 lines

bevy_vox_mesh

A plugin for the bevy engine which allows loading magica voxel .vox files directly into usable meshes. This uses mesh vertex coloring.

Bevy compatibility

Bevy version Plugin version
0.5 0.1, 0.2
0.8 0.4
0.9 0.5
0.10 0.6
0.11 0.7, 0.7.1
0.12 0.8

Usage

demo screenshot


use bevy::prelude::*;
use bevy_vox_mesh::VoxMeshPlugin;
use std::f32::consts::PI;

fn main() {
    App::default()
        .add_plugins(DefaultPlugins)
        .add_plugin(VoxMeshPlugin::default())
        .add_startup_system(setup)
        .run();
}

fn setup(
    mut commands: Commands,
    mut meshes: ResMut<Assets<Mesh>>,
    mut stdmats: ResMut<Assets<StandardMaterial>>,
    assets: Res<AssetServer>,
) {
    commands.spawn(Camera3dBundle {
        transform: Transform::from_xyz(-2.0, 2.5, 5.0).looking_at(Vec3::ZERO, Vec3::Y),
        ..Default::default()
    });

    commands.spawn(PbrBundle {
        transform: Transform::from_scale((0.01, 0.01, 0.01).into())
            * Transform::from_rotation(Quat::from_axis_angle(Vec3::Y, PI)),
        mesh: assets.load("chicken.vox"),
        material: stdmats.add(Color::rgb(1., 1., 1.).into()),
        ..Default::default()
    });
}



Take a look in the examples/ directory for a complete working example.

Acknowledgements

This asset loader is powered by the awesome block-mesh-rs crate.

Ported to bevy 0.12.0 thanks to @baranyildirim.

Dependencies

~37–72MB
~1.5M SLoC