实验题目来自2021年春季学期山东大学软件学院计算机动画基础课程
本人比较菜,代码有很多bug以及莫名其妙的地方,发在这记录一下写代码的艰辛😭,仅供参考思路哦!
现在代码已经找不到了,请不要找我要文件啦!(当然,欢迎指正)
- 使用glfw,glad库,C++编写,参考LearnOpenGL
实验题目
给出咳嗽或打喷嚏时,应该纸巾掩口鼻的渐变动画
可以是图形方式,也可以是图像方式
思路
使用坐标网格法实现图像的渐变:
定义两幅图像,初始(没打喷嚏)和目标(打喷嚏),分别定义网格并将网格点与图像的特征位置相对应(眼睛、鼻子、嘴等位置)。
在渲染循环中,不断对初始网格和目标网格进行插值,并将其交叉融合形成中间网格。
利用中间网格作为图像的采样点,使初始图象和目标图像发生扭曲,将其融合(插值),得到中间图像。
实现效果



步骤
-
使用maya等建模工具定义网格,并移动特征点到相应位置。(没错,思路就是这么神奇)


-
从maya导出obj格式文件,编写函数读取其各顶点位置,分别保存为初始和目标网格信息,注意需要将其大小转换为OpenGL标准坐标。
void readObj(char* path, float * r) { int i = 0; ifstream ifs(path, ios::in); if (!ifs) { cout << "open file error!" << endl; exit(1); } float t = 0; char l; for (i = 0; i < 121*3; i+=3) { ifs >> l; ifs >> t; r[i] = t / 4; ifs >> t; r[i+

本文介绍了使用glfw和glad库,结合C++编程,参考LearnOpenGL,来创建咳嗽或打喷嚏时掩口鼻的渐变动画。通过坐标网格法,定义初始和目标图像,利用插值算法在渲染循环中不断融合,形成中间图像。作者提到,虽然实现过程复杂,且实际效果因采样点密度和网格选择等因素影响,但提供了改进的可能性。
OpenGL实现渐变动画&spm=1001.2101.3001.5002&articleId=119701603&d=1&t=3&u=cfb34ba85da04cb2960462aeb704e21b)
6798

被折叠的 条评论
为什么被折叠?



