type
status
date
slug
summary
tags
category
icon
password
Computer-Graphic-Final-Program
RichardLiuda • Updated Dec 28, 2024
2024-2025学年计算机图形学大作业
项目简介
本项目为2024-2025学年计算机图形学大作业,主要实现了一个基于OpenGL的3D模型渲染器。该渲染器支持加载GLB等常用文件格式的3D模型,并提供了多种渲染模式,包括平移、旋转、缩放等操作。此外,还实现了光照、阴影、纹理映射等功能,以增强模型的视觉效果。
面向对象
由于写得比较简单,框架基本沿袭课程参考代码,也对课内提及的技术有较多讲解能算是Hytidel学长神作的补足版嘛,可以给像我这样的菜鸡指明一点OpenGL的相关内容吧(大佬轻喷QAQ
功能介绍
- 利用
Assimp
库,加载Glb
等文件格式的3D模型
- 支持包括平移、旋转、调整视场角等操作
- 实现了光照、阴影、纹理映射等功能
- 支持用户交互,包括鼠标拖拽、键盘操作等
- 支持多种材质和纹理,使用Phong光照模型,以增强模型的视觉效果
- 详请参阅使用说明书和答题纸
键鼠操作:
备注
因为事情比较多,整体的代码框架延续了课程参考代码的风格,所以代码没有进行太多的优化,逻辑比较混乱,实现的功能也相对简单,请见谅。
一些感想和背景
其实有很多功能想加(前端,速度控制,HDR渲染,人车交互等等),但是时间不够,所以只能先这样了。
实话讲,虽然已经是在ddl前半个月就着手研究了,但是研究assimp耽误了不少时间(ddl前两天才给我整明白,正式开始功能实现,第一次接触建模这些知识),ddl临近这几天非常痛苦,没日没夜地调试,实现功能,觉都没睡多少,全靠肾上腺素支撑,不过最后还是在大作业轮到我展示之前的两分钟基本上实现了所有功能(核心功能都整上了)。
代码上,很多实现都是充分利用到了C++的特性,指针,面向对象,库等等。有些基础知识还是不太扎实(上学期才刚学了基础的面向对象程序设计),导致在调试上花费了大量的时间……
临近ddl的前三天,前脚刚处理完JAVA的大作业BigModelChat,后脚马上接上图形学,几乎是没日没夜地调,学期最后一周的课也没怎么听,都在写这个。
ddl前一天晚上,才下载了Blender这个久负盛名的开源软件,花了些时间熟悉了一下功能,就用上了。由于我主要是拿来编辑和导出模型,只是用到了些基础功能,所以对Blender的掌握程度还是很浅的,UV贴图什么的也没能仔细完善,瑕疵很多。
ddl当晚,VS突然出现了bug,应该是头文件和链接库引起的,我用的是preview版本,不知道是不是系统bug,总之把VS更新了,vcpkg重新部署,重新链接所有库,才勉强可以运行。当时心态很难评
我是提前选修的这门课(大二上),还需要顾及到本学期的其他课程,压力确实比较大,很遗憾没能把所有想要加的功能都实现。但是图形学这方面的内容我是非常感兴趣的,自己平时也玩玩摄影,影像后期什么的,和图形学有很多相似之处。也正是因为感兴趣,ddl这几天才能坚持下来,不然我可能早就开摆了。
附件
- Author:Richard Liu
- URL:http://richardliuda.top/article/CG_Final
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!