OpenGL ES之实现“瘦脸大眼”效果

一、“瘦脸效果”的实现

  • 瘦脸效果的实现,是将指定区域内的像素按照一定的规则进行整体偏移,从而形成一种对脸部挤压的效果:

  • 如下所示,BC 表示偏移方向和偏移程度的向量,将圆内的所有像素按照向量 BC 的方向进行一定程度的偏移,像素偏移的强度,和像素与圆心的距离相关,越靠近圆心强度越大:

OpenGL ES之实现“瘦脸大眼”效果_第1张图片

  • 为了简化计算流程,只做原理性展示,选取 3 个人脸部位的关键点(如下图,左右太阳穴和下巴),再由关键点计算出来控制点(太阳穴和下巴的连线的中心点),控制点组成上述的 BC 向量,当然若想快速验证瘦脸效果,可以直接手动指定:

OpenGL ES之实现“瘦脸大眼”效果_第2张图片

  • 瘦脸效果的着色器脚本:
#

你可能感兴趣的