unavi-xyz / bevy_vrm Goto Github PK
View Code? Open in Web Editor NEWBevy plugin for loading VRM avatars.
Home Page: https://unavi-xyz.github.io/bevy_vrm/
License: Apache License 2.0
Bevy plugin for loading VRM avatars.
Home Page: https://unavi-xyz.github.io/bevy_vrm/
License: Apache License 2.0
Current global illumination is not at all to spec, need to figure out how to get world lighting for a given point
We have a few example VRMs, would be nice to have ui to switch between them
The spec mentions outlines typically being implemented in a separate pass rather than part of the same mtoon shader.
Maybe we can use an existing outline crate like https://github.com/komadori/bevy_mod_outline
When running https://github.com/kayhhh/vrm-viewer using the latest version, I get a wgpu error in the web build. Not sure what it means but I assume its something with the mtoon shader.
Greetings, I'm making some supplementary 3D animated video for a project with an aggressive deadline using the bevy_vrm commit that adds Bevy 0.14 support. When I compile using bevy_vrm as a dependency it gives an error that bevy_vrm requires bevy_gltf_kun (which is getting pulled from its github repo) with features = "import" but bevy_gltf_kun doesn't have that feature. Somehow when I compile the VRM Viewer crate it doesn't trigger that issue... I checked the bevy_gltf_kun repo and couldn't find any reference to a feature called "import". Please advise etc, thx! :D
https://github.com/vrm-c/vrm-specification/tree/master/specification/0.0
Should probably start with VRM 0.0, as most avatars are still using this version.
Alright so turns out this won't be quite as easy as I was hoping.
Bevy doesn't provide a good way to access custom glTF extensions, because the underlying gltf
crate doesn't either (see gltf-rs/gltf#231).
Soooo I think we either have to:
or
I think option 2 is best. It is less efficient as we have to load the model twice, but I don't think it make sense to maintain a second glTF loading pipeline when we already have one in bevy.
Eventually we can work on getting custom extensions supported in gltf
, then in bevy, but for the short term I'll try option 2.
I have a brand new binary project called bevy_example
Dependencies
bevy = "0.13.0"
bevy_vrm = "0.0.8"
I have replaced main.rs with the code written in the load_vrm example.
I have changed the asset directory path to point to asset directory
It compiles fine, but exits imminently with an error in draw_springbones
│[m@jahl bevy_example]$ cargo run │
│ Finished dev [unoptimized + debuginfo] target(s) in 0.14s │
│ Running `target/debug/bevy_example` │
│2024-03-09T21:37:05.727246Z INFO bevy_winit::system: Creating new window "App" (0v1) │
│2024-03-09T21:37:05.727802Z INFO log: Guessed window scale factor: 1 │
│2024-03-09T21:37:05.875800Z INFO bevy_render::renderer: AdapterInfo { name: "AMD Radeon RX 5600M (RADV NAVI10)", vendor: 4098, device: 29471, device_type: DiscreteGpu, driver: "radv", driver_info: "Mesa 24.0.2-manjaro1.1", backend: Vulkan } │
│2024-03-09T21:37:06.364992Z INFO bevy_diagnostic::system_information_diagnostics_plugin::internal: SystemInfo { os: "Linux 23.1.3 Manjaro Linux", kernel: "6.6.19-1-MANJARO", cpu: "AMD Ryzen 7 4800H with Radeon Graphics", core_count: "8", memory: "7.1 GiB" } │
│thread 'main' panicked at /home/m/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bevy_ecs-0.13.0/src/system/system_param.rs:542:13: │
│error[B0002]: ResMut<bevy_gizmos::config::GizmoConfigStore> in system bevy_example::draw_spring_bones conflicts with a previous Res<bevy_gizmos::config::GizmoConfigStore> access. Consider removing the duplicate access. │
│note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace │
│Encountered a panic in system `bevy_app::main_schedule::Main::run_main`!
However if I comment the 3 lines dealing with the config it launches okay, just without the change in the config
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.