简介
欢迎来到《构建简易引擎》系列的模型加载章节!在前几章中,我们探讨了引擎架构与相机系统,如今将聚焦于在引擎框架中处理 3D 资源。
本章我们将搭建一套健壮的模型加载系统,以支持各类现代 3D 资源。基于已实现的引擎架构和相机系统,我们将新增复杂 3D 模型的加载与渲染能力。在主教程的 glTF 与 KTX2 章节中,我们学习了从 OBJ 格式迁移至 glTF 格式的方法,以及加载 glTF 模型的基础知识。现在,我们将把这些知识整合到引擎架构中,实现一套更完整的落地方案。
本章将让你对 3D 资源处理的理解,从简单的模型加载提升至专业的引擎级系统设计层面。我们将从构建场景图(scene graph) 开始,它为复杂 3D 场景提供了层级化的组织方式。这一基础能力能让你对场景对象进行逻辑分组、在不同层级应用变换,并高效管理复杂场景的结构。
动画支持是现代 3D 应用的核心组成部分。我们将实现一套支持 glTF 骨骼动画的系统,通过流畅的角色动作、对象动画和复杂的多部件系统,让 3D 模型拥有生动的表现效果。
我们将打造的PBR 材质系统,将前几章的光照理论与实际 3D 资源的集成打通。你将学会如何将 glTF 的材质属性无缝映射到自定义着色器中,打造出美术人员能理解并高效使用的工作流。
渲染带有不同变换的多个对象,会同时带来技术实现和结构组织上的挑战。我们将通过精心设计的引擎架构解决这些问题,既能高效批处理相似对象,又能保持灵活性,为每个对象单独处理独特的材质与变换属性。
在整个实现过程中,我们将以引擎级设计思路组织代码,而非仅提供教程式的简易解决方案。这种思路能让你的项目在复杂度和规模提升时依然具备良好的可维护性,为你创建包含动画模型的复杂场景打下坚实基础。
前置知识
本章内容基于 Vulkan 主教程的核心基础展开,尤其需要你掌握第 16 章(多对象渲染) 的知识 —— 我们将把该章节的概念拓展,以处理更复杂的场景组织和资源管理工作。多对象渲染章节介绍了渲染不同几何图形的基础概念,而本章将在此基础上进一步扩展,实现对包含材质和动画的完整 3D 模型的处理。
你需要熟练掌握 Vulkan 的核心概念,这些是搭建模型加载系统的基石:
- 命令缓冲区(command buffer):处理带有不同材质的多个模型时,命令缓冲区的逻辑会变得更复杂,我们需要高效管理描述符集(descriptor set) 和推送常量(push constant);
- 图形管线(graphics pipeline):这一概念至关重要,因为不同的材质可能需要不同的管线配置;
- 顶点缓冲区与索引缓冲区:这部分经验可直接迁移至模型加载中 ——glTF 文件包含特定格式的顶点数据,我们需要对其进行解析并上传至 GPU 缓冲区;
- 统一缓冲区(uniform buffer):掌握该知识是必备要求,我们将通过它存储变换矩阵、光照信息和材质属性;
- 纹理映射(texture mapping):该技能尤为重要,因为 glTF 模型的单个材质通常包含多张纹理(漫反射纹理、法线纹理、金属度 – 粗糙度纹理等),我们需要高效完成这些纹理的加载与绑定。
最后,基础 3D 数学知识(矩阵、向量、四元数)是处理模型变换、动画和场景层级的关键。如果需要复习相关内容,可参考相机变换章节,其中对这些数学概念有详细讲解。
![【题解】[COCI 2025/2026 #6] 滑雪 / Skijanje(李超树 0 基础友好喵)-171主机测评](https://www.171host.com/wp-content/uploads/2026/08/20260826083930-6a8ea642697bc-220x25.png)




