514 lines
14 KiB
Markdown
514 lines
14 KiB
Markdown
# 毕业设计论文正文大纲
|
||
|
||
## 一、正文总体写法
|
||
|
||
这篇论文的正文主线应当明确为:
|
||
|
||
1. 以渲染引擎的设计与实现为主体。
|
||
2. 以体积渲染作为渲染引擎当前阶段最重要的高级渲染扩展来展开。
|
||
3. 体积渲染理论必须单独成章。
|
||
4. NanoVDB 体积渲染模块的工程实现必须单独成章。
|
||
|
||
同时,第1章绪论不能脱离现有开题报告另起炉灶。更合理的写法是:
|
||
|
||
1. 继承开题报告中关于体积特效、实时体积渲染、NanoVDB 和 DirectX 12 的背景与问题意识。
|
||
2. 结合当前项目的真实工程进展,把开题阶段的目标落到“渲染引擎主体 + 体积渲染扩展”的实际形态上。
|
||
3. 让绪论看起来像开题报告的自然展开和工程落地版本,而不是完全换题重写。
|
||
|
||
因此,正文结构不能写成“只围绕体积渲染展开”,也不能把体积渲染理论简单塞进技术基础里带过去。更合适的结构是:
|
||
|
||
1. 绪论
|
||
2. 渲染引擎发展现状与本课题引擎概述
|
||
3. 体积渲染理论基础
|
||
4. 渲染引擎总体架构设计
|
||
5. 渲染引擎核心模块设计与实现
|
||
6. 编辑器与引擎工作流设计与实现
|
||
7. 基于 NanoVDB 的体积渲染模块设计与实现
|
||
8. 系统测试与结果分析
|
||
9. 总结与展望
|
||
|
||
---
|
||
|
||
## 二、字数分配建议
|
||
|
||
按正文约 2 万字估算,可按下表控制:
|
||
|
||
| 章节 | 建议字数 |
|
||
| ------------------------------------------- | ---------: |
|
||
| 第1章 绪论 | 1800 |
|
||
| 第2章 渲染引擎发展现状与本课题引擎概述 | 1600 |
|
||
| 第3章 体积渲染理论基础 | 2500 |
|
||
| 第4章 渲染引擎总体架构设计 | 2400 |
|
||
| 第5章 渲染引擎核心模块设计与实现 | 3500 |
|
||
| 第6章 编辑器与引擎工作流设计与实现 | 2900 |
|
||
| 第7章 基于 NanoVDB 的体积渲染模块设计与实现 | 3100 |
|
||
| 第8章 系统测试与结果分析 | 1800 |
|
||
| 第9章 总结与展望 | 700 |
|
||
| 合计 | 20000 左右 |
|
||
|
||
这个分配的含义是:
|
||
|
||
1. 引擎主体部分占正文大头。
|
||
2. 体积渲染理论单独给出完整章节。
|
||
3. 体积渲染实现章节作为高级扩展重点展开。
|
||
|
||
---
|
||
|
||
## 三、正文结构设计
|
||
|
||
## 第1章 绪论
|
||
|
||
### 1.1 课题背景
|
||
|
||
这一节应直接承接开题报告中的选题背景,建议写成下面三点:
|
||
|
||
1. 随着实时图形应用复杂度不断提升,渲染引擎已经从单一绘制程序发展为集图形接口抽象、资源管理、场景组织、材质与光照、脚本运行时、编辑器工具链于一体的综合系统,是支撑现代图形应用开发的重要基础。
|
||
2. 云、雾、烟、火等体积特效已经成为现代实时图形表现中的常见内容,但实时体积渲染涉及参与介质中的吸收、散射、透射率累积与大量采样计算,在效果质量与实时性能之间始终存在明显约束。
|
||
3. OpenVDB 与 NanoVDB 为稀疏体数据表达提供了较成熟的技术路径,其中 NanoVDB 更适合 GPU 访问;同时,DirectX 12 提供了更底层的资源与命令控制能力,适合作为体积特效实现与渲染引擎扩展的技术基础。
|
||
|
||
### 1.2 课题意义
|
||
|
||
这一节可以从两个层面展开:
|
||
|
||
1. 体积渲染层面的意义
|
||
将 NanoVDB 稀疏体数据与 DirectX 12 图形 API 相结合,探索实时体积特效渲染的实现路径,为云、雾、烟等参与介质效果的工程实现提供参考。
|
||
|
||
2. 渲染引擎层面的意义
|
||
在渲染引擎平台上完成资源、场景、材质、光照、脚本与编辑器协同设计,并在此基础上扩展体积渲染能力,有助于体现工程设计类毕业设计的系统性与完整性。
|
||
|
||
### 1.3 本课题的主要内容
|
||
|
||
这一节应在不偏离开题报告目标的前提下,明确当前课题已经形成的真实工作结构,建议写成两部分:
|
||
|
||
1. 渲染引擎主体部分
|
||
包括图形接口抽象层、渲染主链、资源系统、场景与组件系统、模型与材质系统、多光源与阴影、C# 脚本系统以及编辑器工作流支撑等内容。
|
||
|
||
2. 体积渲染扩展部分
|
||
包括体积渲染理论分析、NanoVDB 稀疏体数据加载、GPU Buffer 访问方式、体积光线步进流程、跳空优化和体积阴影实现等内容。
|
||
|
||
### 1.4 本文的主要工作
|
||
|
||
这一节可直接概括本文已经完成的主要工程工作,例如:
|
||
|
||
1. 完成了渲染引擎的总体架构设计与模块划分。
|
||
2. 实现了 RHI、资源系统、场景组件系统和渲染主链等核心运行时模块。
|
||
3. 实现了模型渲染、材质系统、多光源和简单阴影等基础渲染能力。
|
||
4. 实现了 C# 脚本系统以及编辑器视口与调试支撑能力。
|
||
5. 完成了基于 NanoVDB 的体积渲染模块原型设计与实现,当前正在向主引擎主线集成收尾推进。
|
||
|
||
### 1.5 论文结构安排
|
||
|
||
这一节可以自然说明全文安排逻辑:
|
||
|
||
1. 前两部分先交代渲染引擎发展现状与主流引擎分析,以及体积渲染理论基础。
|
||
2. 中间几章集中展开渲染引擎主体的架构设计、核心模块实现以及编辑器工作流实现。
|
||
3. 后续章节再集中说明基于 NanoVDB 的体积渲染模块设计、系统测试与实验分析。
|
||
|
||
---
|
||
|
||
## 第2章 渲染引擎发展现状与本课题引擎概述
|
||
|
||
这一章不再写成通用技术教材式基础,而是从发展脉络、主流引擎能力对比、体积特效支持现状和本课题引擎当前完成情况四个角度,先把“当前行业在做什么”以及“本课题已经做到了什么”交代清楚。
|
||
|
||
### 2.1 渲染引擎的发展历程与能力演进
|
||
|
||
建议写:
|
||
|
||
1. 从单一绘制程序到综合引擎平台的发展过程
|
||
2. 从固定管线到可编程管线后的能力扩展
|
||
3. 从运行时渲染到资源、脚本、编辑器协同工作流的演进
|
||
|
||
### 2.2 当前主流渲染引擎的特点与对比分析
|
||
|
||
建议写:
|
||
|
||
1. Unity 的组件化、资源工作流与编辑器体系
|
||
2. Unreal Engine 的高质量渲染能力与工具链体系
|
||
3. Godot 等开源引擎的开放性与轻量化特点
|
||
4. 主流引擎在架构、编辑器、脚本与渲染扩展方面的共性
|
||
|
||
### 2.3 主流引擎中体积特效的支持现状
|
||
|
||
建议写:
|
||
|
||
1. 体积雾、体积云、体积光等效果在实时图形中的应用
|
||
2. 主流引擎中体积特效与光照、材质、场景系统的结合方式
|
||
3. 实时体积渲染在效果质量与性能上的主要矛盾
|
||
|
||
### 2.4 本课题渲染引擎的总体介绍
|
||
|
||
建议写:
|
||
|
||
1. 本项目渲染引擎的定位与整体组成
|
||
2. 当前已实现的核心能力与工作流闭环
|
||
3. 体积渲染模块在当前项目阶段中的位置
|
||
|
||
### 2.5 本章小结
|
||
|
||
---
|
||
|
||
## 第3章 体积渲染理论基础
|
||
|
||
这一章必须单独成章。
|
||
|
||
建议这一章主要吸收 `docs/plan/毕设` 下三份体积渲染理论笔记的内容,但写法要服务于后续工程实现。
|
||
|
||
### 3.1 参与介质与体积渲染基本概念
|
||
|
||
建议写:
|
||
|
||
1. 参与介质的定义
|
||
2. 吸收、散射、透射率
|
||
3. 体积颜色形成的基本原因
|
||
|
||
### 3.2 比尔-朗伯定律与光线透射
|
||
|
||
建议写:
|
||
|
||
1. 比尔-朗伯定律的物理含义
|
||
2. 消光系数、吸收系数、散射系数的关系
|
||
3. 透射率在体积渲染中的作用
|
||
|
||
### 3.3 体绘制方程与单次散射近似
|
||
|
||
建议写:
|
||
|
||
1. 体绘制方程的基本形式
|
||
2. 单次散射的含义
|
||
3. 相位函数的作用
|
||
4. 为什么在实时系统中常采用简化模型
|
||
|
||
### 3.4 光线步进算法原理
|
||
|
||
建议写:
|
||
|
||
1. ray marching 的基本思想
|
||
2. 正向步进与反向步进
|
||
3. 步长、最大步数与误差控制
|
||
4. 提前终止和抖动等常见优化
|
||
|
||
### 3.5 稀疏体数据与空域跳过思想
|
||
|
||
建议写:
|
||
|
||
1. 稠密体素网格的问题
|
||
2. 稀疏体数据结构的意义
|
||
3. 空区域跳过对实时性的作用
|
||
|
||
### 3.6 本章小结
|
||
|
||
这一章的作用是为第7章的 NanoVDB 体积渲染实现做理论铺垫。
|
||
|
||
---
|
||
|
||
## 第4章 渲染引擎总体架构设计
|
||
|
||
这一章的任务是把整个渲染引擎的组织方式讲清楚,重点回答系统如何分层、各模块职责如何划分、运行时与编辑器如何协同,以及体积渲染扩展应当放在什么位置。
|
||
|
||
### 4.1 引擎设计目标
|
||
|
||
建议写:
|
||
|
||
1. 形成完整的渲染引擎工作框架。
|
||
2. 建立稳定的基础场景渲染闭环。
|
||
3. 兼顾运行时能力与编辑器工作流。
|
||
4. 为高级渲染特性扩展预留架构空间。
|
||
|
||
### 4.2 引擎总体分层架构
|
||
|
||
建议配图,按层写:
|
||
|
||
1. 平台层
|
||
2. 图形接口抽象层
|
||
3. 资源与场景层
|
||
4. 渲染组织层
|
||
5. 脚本与编辑器层
|
||
|
||
### 4.3 核心模块职责划分
|
||
|
||
建议围绕真实项目模块写其职责边界:
|
||
|
||
1. `RHI`
|
||
2. `Rendering`
|
||
3. `Resources / AssetDatabase`
|
||
4. `Scene / Components`
|
||
5. `Scripting`
|
||
6. `Editor`
|
||
|
||
### 4.4 模块协同与数据流
|
||
|
||
建议明确写清:
|
||
|
||
1. 资源从工程目录进入运行时的路径
|
||
2. 场景状态到渲染数据的转换关系
|
||
3. 编辑器视口与渲染主链的接入关系
|
||
4. 脚本更新、场景状态与渲染结果之间的联动
|
||
|
||
### 4.5 体积渲染模块在总体架构中的位置
|
||
|
||
这一节必须明确:
|
||
|
||
1. 体积渲染作为高级渲染扩展的接入层次。
|
||
2. 它对 RHI、资源系统、渲染主链与编辑器能力的依赖关系。
|
||
3. 当前原型验证与后续正式集成之间的关系。
|
||
|
||
### 4.6 本章小结
|
||
|
||
---
|
||
|
||
## 第5章 渲染引擎核心模块设计与实现
|
||
|
||
这一章集中写引擎主体能力,把“引擎真正做出来了什么”放在一章里讲清楚。
|
||
|
||
### 5.1 RHI 抽象层设计与实现
|
||
|
||
建议写:
|
||
|
||
1. 多后端抽象思路
|
||
2. `D3D12 / OpenGL / Vulkan` 的统一封装
|
||
3. Buffer、Texture、ResourceView、Pipeline 等关键对象
|
||
|
||
### 5.2 资源系统设计与实现
|
||
|
||
建议写:
|
||
|
||
1. `Assets + .meta + Library` 组织方式
|
||
2. `AssetDatabase`
|
||
3. artifact 缓存与运行时加载
|
||
|
||
### 5.3 场景与组件系统设计与实现
|
||
|
||
建议写:
|
||
|
||
1. `Scene`
|
||
2. `GameObject`
|
||
3. `Component`
|
||
4. `CameraComponent`
|
||
5. `LightComponent`
|
||
6. `MeshFilterComponent`
|
||
7. `MeshRendererComponent`
|
||
|
||
### 5.4 渲染主链设计与实现
|
||
|
||
建议写:
|
||
|
||
1. `SceneRenderer`
|
||
2. `CameraRenderer`
|
||
3. `RenderPipeline`
|
||
4. 渲染请求生成与执行流程
|
||
|
||
### 5.5 模型、材质与着色器系统
|
||
|
||
建议写:
|
||
|
||
1. OBJ 模型加载
|
||
2. `Mesh / Material / Shader` 的组织关系
|
||
3. 材质参数与 shader 资源绑定
|
||
|
||
### 5.6 多光源与简单阴影实现
|
||
|
||
建议写:
|
||
|
||
1. 主光与附加光组织方式
|
||
2. 光照计算流程
|
||
3. 当前简单阴影实现方式
|
||
|
||
### 5.7 C# 脚本系统设计与实现
|
||
|
||
建议写:
|
||
|
||
1. `ScriptEngine`
|
||
2. `ScriptComponent`
|
||
3. 托管与原生运行时桥接
|
||
4. 生命周期调度
|
||
|
||
### 5.8 本章小结
|
||
|
||
---
|
||
|
||
## 第6章 编辑器与引擎工作流设计与实现
|
||
|
||
这一章专门写引擎的可视化工作界面和工具链闭环,也是展示整个系统操作界面的主要章节。
|
||
|
||
### 6.1 编辑器在引擎中的定位
|
||
|
||
建议写:
|
||
|
||
1. 编辑器是引擎工作流中的可视化工作界面
|
||
2. 编辑器承担场景查看、资源管理、脚本调试和渲染验证等任务
|
||
|
||
### 6.2 编辑器界面总体布局设计
|
||
|
||
这里建议放整套界面截图,并说明:
|
||
|
||
1. 菜单栏
|
||
2. Hierarchy
|
||
3. Inspector
|
||
4. Project
|
||
5. Console
|
||
6. Scene / Game 视口
|
||
|
||
### 6.3 Scene 与 Game 视口实现
|
||
|
||
建议写:
|
||
|
||
1. 离屏渲染目标
|
||
2. 视口纹理接入方式
|
||
3. Scene/Game 视口与引擎渲染主链的关系
|
||
|
||
### 6.4 编辑器交互与调试辅助能力
|
||
|
||
建议写:
|
||
|
||
1. ObjectId Picking
|
||
2. Outline
|
||
3. Grid
|
||
4. Gizmo 和辅助显示能力
|
||
|
||
### 6.5 资源与脚本工作流支撑
|
||
|
||
建议写:
|
||
|
||
1. 资源重导入
|
||
2. 脚本程序集重建
|
||
3. 编辑器在资源与脚本调试中的作用
|
||
|
||
### 6.6 本章小结
|
||
|
||
---
|
||
|
||
## 第7章 基于 NanoVDB 的体积渲染模块设计与实现
|
||
|
||
这一章是体积渲染实现章节,建立在第3章理论基础和前面引擎基础之上。
|
||
|
||
### 7.1 模块设计目标
|
||
|
||
建议写:
|
||
|
||
1. 在现有渲染引擎基础上扩展体积渲染能力。
|
||
2. 支持 NanoVDB 稀疏体数据。
|
||
3. 构建可实时运行的体积渲染原型。
|
||
4. 为后续正式并入主引擎提供实现基础。
|
||
|
||
### 7.2 NanoVDB 数据加载与 GPU 上传
|
||
|
||
建议写:
|
||
|
||
1. `.nvdb` 文件读取流程
|
||
2. CPU 侧元数据解析
|
||
3. world bbox、voxel size 等信息提取
|
||
4. 默认堆 GPU buffer 与上传流程
|
||
|
||
### 7.3 体积渲染核心流程实现
|
||
|
||
建议写:
|
||
|
||
1. 相机光线构造
|
||
2. 与体积包围盒求交
|
||
3. 体积内部采样与累积
|
||
4. 颜色与透明度输出
|
||
|
||
### 7.4 稀疏体数据访问与跳空优化
|
||
|
||
建议写:
|
||
|
||
1. `StructuredBuffer<uint>` 的访问方式
|
||
2. `PNanoVDB` 在 shader 中的使用
|
||
3. HDDA 或层级访问带来的空域跳过
|
||
|
||
### 7.5 光照与体积阴影实现
|
||
|
||
建议写:
|
||
|
||
1. 单次散射近似
|
||
2. 沿光照方向的阴影积分
|
||
3. 当前实现的近似性与局限性
|
||
|
||
### 7.6 当前实现状态分析
|
||
|
||
建议明确区分:
|
||
|
||
1. 已完成部分
|
||
2. 正在收尾部分
|
||
3. 尚未正式并入主引擎主线的部分
|
||
|
||
### 7.7 本章小结
|
||
|
||
---
|
||
|
||
## 第8章 系统测试与结果分析
|
||
|
||
这一章要同时验证“渲染引擎主体”和“体积渲染模块”。
|
||
|
||
### 8.1 测试环境与实验配置
|
||
|
||
写:
|
||
|
||
1. 硬件环境
|
||
2. 软件环境
|
||
3. 测试场景与测试数据
|
||
|
||
### 8.2 渲染引擎主体功能验证
|
||
|
||
建议写:
|
||
|
||
1. 模型加载与渲染验证
|
||
2. 材质系统验证
|
||
3. 多光源与阴影验证
|
||
4. 脚本系统验证
|
||
5. 编辑器视口验证
|
||
|
||
### 8.3 体积渲染模块验证
|
||
|
||
建议写:
|
||
|
||
1. NanoVDB 文件加载正确性
|
||
2. GPU 数据访问正确性
|
||
3. 步长、步数、阴影参数变化验证
|
||
|
||
### 8.4 效果与性能分析
|
||
|
||
建议写:
|
||
|
||
1. 体积渲染结果展示
|
||
2. 参数对效果与性能的影响
|
||
3. 跳空优化的作用
|
||
|
||
### 8.5 本章小结
|
||
|
||
---
|
||
|
||
## 第9章 总结与展望
|
||
|
||
### 9.1 工作总结
|
||
|
||
建议分两部分总结:
|
||
|
||
1. 渲染引擎主体完成情况
|
||
2. 体积渲染模块完成情况
|
||
|
||
### 9.2 当前不足
|
||
|
||
建议诚实写:
|
||
|
||
1. 体积渲染正式并入主引擎仍在推进
|
||
2. 更完整的资源化与工具化仍待完善
|
||
3. DXR 与更高质量体积光照仍可继续扩展
|
||
|
||
### 9.3 后续展望
|
||
|
||
建议写:
|
||
|
||
1. 继续完善渲染引擎整体能力
|
||
2. 推动体积渲染模块正式主线集成
|
||
3. 完善编辑器工作流和高级渲染扩展
|
||
|
||
---
|
||
|
||
## 四、这一版大纲的关键点
|
||
|
||
1. 渲染引擎是全文主体。
|
||
2. 体积渲染理论单独成章。
|
||
3. NanoVDB 体积渲染实现单独成章。
|
||
4. 引擎主体与体积渲染扩展的关系在结构上是清楚分开的。
|