使用 Bevy 渲染 Blender / gltf 模型,包括颜色

问题描述

我正在用 Bevy 做我的第一步,旨在模拟“定居者”或“纪元 18xx”类型的模拟。我有一个树模型,我从 Blender 导出为 gltf。这棵树有一个棕色的树干和绿色的叶子。我可以在基于网络的查看器中打开 gltf 文件,到目前为止一切看起来都很好。

在 Bevy 中,我设置了一个简单的相机、灯光、......并且可以像这样加载树:

let tree = asset_server.load("tree.gltf#Scene0");
commands.spawn_scene(tree);

这很好用。我可以看到颜色正确的树。但它是一个充满“世界”的“场景”。我想用不同的变换渲染许多树,所以我尝试渲染“普通”网格。我发现模型是由两个网格组成的,所以我必须这样做:

let trunk = asset_server.load("tree.gltf#Mesh0/Primitive0");
let leaves = asset_server.load("tree.gltf#Mesh1/Primitive0");

commands.spawn_bundle(PbrBundle {
    mesh: leaves,material: materials.add(Color::rgb(0.0,1.0,0.0).into()),// ...

这“有点”有效:我从 gltf 文件中丢失了颜色,必须手动设置它们。树干和叶子之间的相对位置被破坏了,所以我可能丢失了文件中定义的一些转换。

根据 https://bevyengine.org/news/bevy-0-5/#top-level-gltf-asset 的说法,Bevy 0.5 中的 Gltf 处理已得到改进,但我不明白在我的情况下使用它的预期方式是什么。

有人能给我一个最简单的例子,说明如何在 Blender 中定义我的游戏资产(树、房子、栅栏……),并在 Bevy 中多次渲染导出的 gltf?包括指定的颜色/材料?我认为我上面展示的两种方法之间一定有某种东西,但我不明白。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)