毕设工作日志

记录从23年12月起的毕设工作情况,顺便练习用OKR工作法

三维殷集可视化软件的开发

项目总体说明

12月

工作计划

  • 目标
    • 毕设框架搭建(最重要)
    • CS468基本学完
    • 月底进行项目说明的补充
    • 开始学习GAMES202(Bounce)

关键成果清单

最后更新时间12.06

  • 毕设框架搭建(最重要)
    • 程序完成模块化设计
      • 渲染模块(最重要)
        • 实现2D与3D场景的渲染
        • 1207 LearnOpenGL已有代码的全部在程序中跑通
        • 实现读取bunny的obj模型文件
        • 掌握渲染管线流程
        • GAMES101中保存帧画面的代码在程序中跑通
        • GAMES101中的光照模型与加速算法的代码迁移到程序中(Bounce)
      • 几何模块
        • 完成几何底层数据结构的设计
        • 2D场景下DelaunayTriangulation的代码在程序中跑通
      • GUI模块
        • 学会如何添加Widgets组件
        • 通过GUI实现保存当前帧画面功能
        • 通过GUI实现2D-3D视图切换
  • CS468初步学完
    • 完成笔记的翻译
      • Section 1-5
      • Section 6-10
      • Section 11-15
    • 明确下一阶段学习安排(看视频?写作业?写代码?)
  • 月底进行项目说明的补充
  • 开始学习GAMES202(Bounce)

(GPT帮忙总结了一下目前的工作)

在您的项目描述中,您提到了想要完成一个基于 ImGui/OpenGL/OCCT 的 GUI 可视化软件的 C++ 开发工作,专门用于 Linux 系统。您已经设置了项目的目录结构,并且计划通过分别利用 ImGui、OpenGL 和 OCCT 来实现 GUI 交互、渲染表现和几何算法的开发。

您的目录结构包括了:

  • include:存放头文件
  • src:源代码文件
  • tests:单元测试
  • shaders:着色器代码
  • external:第三方库,目前包括 glad、imgui 和 stb
  • assets:资源文件,如纹理、模型等

您的代码结构设计中包含了以下几个关键类:

  • Application:包含主循环
  • Camera:摄像机类,可能用于视图控制
  • Renderer:渲染类,包含 CameraShader 成员变量
  • ResourceManager:资源管理类,用于加载和管理 OpenGL 资源,如模型和纹理

目前,您已经实现了一个基础的 demo,能够渲染一个带纹理的立方体,这是基于 LearnOpenGL 教程的代码移植。

接下来,为了进一步推进项目,我们可以分阶段进行:

  1. 基础 GUI 开发
    • 利用 ImGui 创建一个简单的用户界面,包括菜单和能够输入参数的控件。
    • 集成 ImGui 和 OpenGL,确保可以通过 GUI 控件调整渲染参数。
  2. 二维几何图形绘制
    • 实现基础的二维图形绘制功能,允许用户输入参数并在 OpenGL 窗口中渲染图形。
    • 添加基础交互功能,如图形的位移、旋转和缩放。
  3. 增强渲染表现
    • 开发更高级的渲染效果,如光照、阴影和反射。
    • 优化渲染流程,提高渲染效率和质量。
  4. 集成 OCCT 以进行几何算法开发
    • 集成 OCCT 库,实现复杂的几何算法处理。
    • 开发文件读取输出功能,支持几何模型的导入导出。
    • 实现具体的几何模型编辑功能。

为了继续前进,我们需要确认当前的进度和具体的下一步行动。您提到想要先实现一个基础版的 demo,那么,我们可以从以下步骤开始:

  • 设计并实现一个基础的 ImGui 用户界面。
  • 通过 ImGui 界面接受用户输入,并将这些输入用于 OpenGL 二维图形的绘制。

如果您同意这个方向,请告诉我,我们可以开始着手编写伪代码,然后是具体的 C++ 代码。如果您有其他的想法或者需要先解决的问题,请告知。