#bevy #obj #engine #settings #mesh

bevy_obj

Wavefront OBJ mesh asset loader plugin for the Bevy engine

21 releases (breaking)

Uses new Rust 2024

0.16.0 Apr 24, 2025
0.15.1 Mar 11, 2025
0.15.0 Oct 29, 2024
0.14.0 Jul 6, 2024
0.3.0 Nov 3, 2020

#224 in Game dev

Download history 80/week @ 2025-01-08 110/week @ 2025-01-15 150/week @ 2025-01-22 91/week @ 2025-01-29 245/week @ 2025-02-05 215/week @ 2025-02-12 110/week @ 2025-02-19 288/week @ 2025-02-26 136/week @ 2025-03-05 330/week @ 2025-03-12 41/week @ 2025-03-19 139/week @ 2025-03-26 47/week @ 2025-04-02 136/week @ 2025-04-09 152/week @ 2025-04-16 278/week @ 2025-04-23

644 downloads per month
Used in 4 crates (3 directly)

MIT/Apache

39KB
254 lines

bevy_obj

Crates.io

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.16"
bevy_obj = "0.16"

Add the plugin:

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

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

Load an .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 mesh = Mesh3d(asset_server.load("example.obj"));
    let scene = SceneRoot(asset_server.load("example.obj"));
}

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 scene = SceneRoot(asset_server.load_with_settings(
        "example.obj",
        |settings: &mut bevy_obj::ObjSettings| {
            settings.force_compute_normals = true;
            settings.prefer_flat_normals = true;
        },
    ));
}

License

Licensed under either of

at your option.

Dependencies

~41–71MB
~1.5M SLoC