计算机动画实验(三)OpenGL实现渐变动画

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

实验题目来自2021年春季学期山东大学软件学院计算机动画基础课程
本人比较菜,代码有很多bug以及莫名其妙的地方,发在这记录一下写代码的艰辛😭,仅供参考思路哦!
现在代码已经找不到了,请不要找我要文件啦!(当然,欢迎指正)

  • 使用glfw,glad库,C++编写,参考LearnOpenGL

实验题目

给出咳嗽或打喷嚏时,应该纸巾掩口鼻的渐变动画
可以是图形方式,也可以是图像方式

思路

使用坐标网格法实现图像的渐变:
定义两幅图像,初始(没打喷嚏)和目标(打喷嚏),分别定义网格并将网格点与图像的特征位置相对应(眼睛、鼻子、嘴等位置)。
在渲染循环中,不断对初始网格和目标网格进行插值,并将其交叉融合形成中间网格。
利用中间网格作为图像的采样点,使初始图象和目标图像发生扭曲,将其融合(插值),得到中间图像。

实现效果

变变变

步骤

  1. 使用maya等建模工具定义网格,并移动特征点到相应位置。(没错,思路就是这么神奇)
    在这里插入图片描述在这里插入图片描述

  2. 从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+
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值