Skip to content

AmionSky/bevy_obj

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

68 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

bevy_obj

Crates.io

A Wavefront .obj mesh asset loader plugin for the Bevy engine.

Usage:

Add the crate as a dependency:

Major and Minor version number should match bevy version

[dependencies]
bevy = "0.14"
bevy_obj = "0.14"

Add the plugin:

use bevy::prelude::*;
use bevy_obj::ObjPlugin;

fn main() {
    App::new()
        .add_plugins((DefaultPlugins, ObjPlugin))
        .run();
}

Load the .obj file:

fn example_startup_system(asset_server: Res<AssetServer>) {
    // Load it as a singular mesh
    let mesh_handle = asset_server.load::<Mesh>("example.obj");

    // Load it as a scene with limited .mtl material support
    let scene_handle = asset_server.load::<Scene>("example.obj");

    // Or let bevy infer the type
    let model = PbrBundle {
        mesh: asset_server.load("example.obj"),
        ..default()
    };
}

Settings

You can use load_with_settings() to modify some loader settings.

fn example_startup_system(asset_server: Res<AssetServer>) {
    // Load the model with flat normals
    let model = SceneBundle {
        scene: asset_server.load_with_settings(
            "example.obj",
            |settings: &mut bevy_obj::ObjSettings| {
                settings.force_compute_normals = true;
                settings.prefer_flat_normals = true;
            },
        ),
        ..default()
    };
}

About

A Wavefront .obj mesh asset loader plugin for the Bevy engine

Resources

License

Stars

Watchers

Forks

Languages