Skip to content

glTF 与 3D 资产

前两章的布景全是代码里现编的——meshes.add(Cuboid::new(...)) 铸坯子、materials.add(StandardMaterial {...}) 调漆,连旗子都是手搓顶点。真做游戏,美术不可能用 Rust 写几何体。得有一扇门,让 Blender、Maya、3ds Max 里做好的模型走进来。

glTF(GL Transmission Format)就是那扇门。Khronos Group 制定的开放标准,专为实时渲染设计,业界称它"3D 界的 JPEG"。Bevy 的 glTF 加载器由 bevy_gltf crate 提供,随 DefaultPlugins 自动注册——装好插件就能用,不需要额外配置。

本章覆盖:

  • AssetServer + WorldAssetRoot 加载第一个 glTF 模型
  • GltfAssetLabel:按场景、节点、网格、材质精准取子资产
  • Gltf 资产的 named_scenesnamed_nodes:按名字访问
  • 材质与纹理的自动映射:glTF 材质怎么变成 StandardMaterial
  • 场景实例化:同一份模型摆多份,各自带变换
  • WorldInstanceReady:场景实体就绪后改材质
  • 加载状态检测:LoadState 轮询
  • 自定义 AssetLoader:教 Bevy 认识新格式

配套 crate 是 code/ch23-gltf。本章用到的 glTF 模型是 Bevy 自带的 FlightHelmet,不需要自己准备美术资产。