1个不稳定版本
0.1.1 | 2024年7月8日 |
---|---|
0.1.0 |
|
#556 in 游戏开发
145KB
2.5K SLoC
Bevy glTF 特性
这是bevy /crates/bevy_gltf
的分支,它不改变任何功能,但提供了使用特性 GltfTrait
在加载时自定义gltf与bevy内部转换的几种可能性的方式。
特性功能
- 设置扩展
default: &["gltf", "glb"]
- 材质
- 更改所使用的
Material
- 或者仅编辑
StandardMaterial
- 更改所使用的
- 网格
- 编辑任何
Mesh
- 编辑它们的
EntityWorldMut
(类似于EntityCommands
) - 编辑它们的父级
Transform
和EntityWorldMut
- 编辑任何
- 灯光
- 编辑它们的
SpotLight
、PointLight
或DirectionalLight
组件 - 编辑它们的
EntityWorldMut
- 编辑它们的父级
Transform
和EntityWorldMut
- 编辑它们的
- 编辑
App
注意
- 如果您想通过特性插入组件,并且它们对bevy_gltf来说是外来的
- 请确保使用
on_app
通过.register_type()
注册它们
- 请确保使用
- 提供的gltf结构体使得能够对自定义的gltf属性做出反应
示例
添加插件的原始方式改为
fn main(){
let mut app = App::new();
app.add_plugins((
MinimalPlugins,
GltfPlugin::<()>::default(),
// ...
));
app.run();
}
..并且可以使用特性进行修改,以 替换 或 扩展 (使用不同的扩展)场景导入。
#[derive(Reflect,Default)]
struct WhiteGltf;
impl GltfTrait for WhiteGltf {
const EXTENSIONS: &'static [&'static str] = &["myglb"];
type Material = StandardMaterial;
fn convert_material (mut convert:GltfTraitMaterial) -> Self::Material {
convert.material.base_color = Color::WHITE;
convert.material.base_color_texture = None;
convert.material
}
}
fn main(){
let mut app = App::new();
app.add_plugins((
DefaultPlugins,
GltfPlugin::<WhiteGltf>::default()
));
app.run();
}
Bevy支持表
bevy | bevy_gltf_trait |
---|---|
0.14 | 0.1 |
依赖
~32–69MB
~1M SLoC