rust - 使用 Bevy 渲染 Blender / gltf 模型,包括颜色
问题描述
我正在与Bevy一起迈出第一步,目标是“定居者”或“anno 18xx”类型的模拟。我有一个树模型,我从 Blender 导出为 gltf。这棵树有棕色的树干和绿色的叶子。我可以在基于 Web 的查看器中打开 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,Gltf处理在 Bevy 0.5 中得到了改进,但我不明白使用它的预期方式是什么我的情况。
有人可以给我一个最简单的例子,说明如何在 Blender 中定义我的游戏资产(树、房子、栅栏……)并在 Bevy 中多次渲染导出的 gltf 吗?包括指定的颜色/材料?我认为在我上面展示的两种方法之间一定有一些东西,但我不明白。
解决方案
推荐阅读
- javascript - 如何在 javascript (node.js) 中通过控制台获取输入?
- c# - 使用 Linq 返回列表中的所有对象,其中对象的 sub-object-list 属性包含 int 列表的所有值
- ruby-on-rails - 为 Rails 模型和控制器使用自定义脚手架模板?(`inherited_resources_controller` 与`脚手架控制器`)
- java - 如果运算符符号后有方法(而不是变量),如何实现左关联?
- python - 手动对 python 目录进行排序,然后无法推送到远程存储库
- javascript - 将 JavaScript 代码转换为 C# 以获取频繁字数
- c++ - 具有可分离内核的 2D 模糊卷积
- python - 从python中的两个数据框中打印出不匹配的行
- asp.net - 错误:如果连接未处于“已连接”状态,则无法发送数据。为什么我的 signalR 连接不起作用?
- r - 如何根据日期生成匹配对?