1.圆内放大

//圆内放大
vec2 enlargeFun(vec2 curCoord,vec2 circleCenter,float radius,float intensity,float curve)
{float currentDistance = distance(curCoord,circleCenter);{float weight = currentDistance/radius;weight = 1.0-intensity*(1.0-pow(weight,curve));//默认curve 为2 ,当 curve 越大时, 会放大得越大的,weight = clamp(weight,0.0,1.0);curCoord = circleCenter+(curCoord-circleCenter)*weight;}return curCoord;
}这是圆内放大算法,
输入:坐标,放大中心坐标,放大半径,放大比例系数,放大算法参数.
返回:放大之后应该取的像素的位置.通常 intensity = 1.0,curve = 2.0

2.圆内缩小

vec2 narrowFun(vec2 curCoord,vec2 circleCenter,float radius,float intensity,float curve)
{float currentDistance = distance(curCoord,circleCenter);{float weight = currentDistance/radius;weight = 1.0-intensity*(1.0-pow(weight,curve));//默认curve 为2 ,当curve 越大时, 会缩小得越小的,weight = clamp(weight,0.0001,1.0);curCoord = circleCenter+(curCoord-circleCenter)/weight;}return curCoord;
}参数含义
输入:坐标,放大中心坐标,放大半径,放大比例系数,放大算法参数.
返回:放大之后应该取的像素的位置.
通常 intensity = 1.0,curve = 2.0

3.向某一点拉伸

// 拉伸
vec2 stretchFun(vec2 textureCoord, vec2 originPosition, vec2 targetPosition, float radius,float curve)
{vec2 offset = vec2(0.0);vec2 result = vec2(0.0);vec2 direction = targetPosition - originPosition;float infect = distance(textureCoord, originPosition)/radius;infect = pow(infect,curve);// 默认 curve 为1,这个值越大,拉伸到指定点越圆润,越小越尖infect = 1.0-infect;infect = clamp(infect,0.0,1.0);offset = direction * infect;result = textureCoord - offset;return result;
}参数含义
输入:坐标,拉伸中心坐标,拉伸目标坐标,拉伸半径,拉伸算法参数.
返回:放大之后应该取的像素的位置.
通常 curve = 2

具体原理分析和参数对效果的影响请参考 大神 zfgrinm
的博客 https://blog.csdn.net/zfgrinm/article/details/79291693

用途,圆内放大可以放大眼睛,圆内缩小可以缩小嘴巴,向某一点拉伸的曲线形变可以瘦脸、削脸、瘦下巴、换脸等等

形变应用请参考大神 cain_huang
https://www.jianshu.com/p/3334a3af331f

OpenGL ES圆内放大、缩小、向某一点拉伸(曲线形变)算法相关推荐

  1. 计算机图形学代码放大缩小,当今主流数字图像缩放技术的算法

    1.Ferguson双三次曲面 给定双三次参数曲面 4个角点处的几何信息:位置矢量 (i,j=0,1),沿 向的切矢 ,以及四个角点处的扭矢 ,则满足以上几何条件的双三次曲面可表示为: (4.1) 其 ...

  2. IOS OpenGL ES GPUImage 滤色混合 GPUImageScreenBlendFilter

    目录 一.简介 二.效果演示 三.源码下载 四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 Ope ...

  3. IOS – OpenGL ES 图像柏林噪点/花边噪点 GPUImagePerlinNoiseFilter

    目录 一.简介 二.效果演示 三.源码下载 四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 Ope ...

  4. IOS – OpenGL ES 图像加亮边缘 GPUImage3x3ConvolutionFilter

    目录 一.简介 二.效果演示 三.源码下载 四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 Ope ...

  5. IOS OpenGL ES GPUImage 图像Lanczos重取样模糊效果 GPUImageLanczosResamplingFilter

    目录 一.简介 二.效果演示 三.源码下载 四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 Ope ...

  6. IOS – OpenGL ES 图像马赛克圆点 GPUImagePolkaDotFilter

    目录 一.简介 二.效果演示 三.源码下载 四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 Ope ...

  7. IOS – OpenGL ES 图像球形折射 GPUImageSphereRefractionFilter

    目录 一.简介 二.效果演示 三.源码下载 四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 Ope ...

  8. IOS – OpenGL ES 图像CGA色彩滤镜 GPUImageCGAColorspaceFilter

    目录 一.简介 二.效果演示 三.源码下载 四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 Ope ...

  9. IOS – OpenGL ES 图像水晶球效果 GPUImageGlassSphereFilter

    目录 一.简介 二.效果演示 三.源码下载 四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 Ope ...

最新文章

  1. elasticsearch分布式搜索配置文件详解
  2. 使用Python+OpenCV+GAN实现车牌图像增强
  3. linux root权限_深入了解 Linux 权限
  4. sublime 写lua相关的插件 cocos
  5. 上海电信计划2015年用户带宽提高12.5倍
  6. Hadoop SequnceFile.Writer 压缩模式及压缩库浅析
  7. 入门训练 序列求和 c语言
  8. ejb模式_EJB的完整形式是什么?
  9. Calendar、Date、long类型的时间,三者之间如何转化
  10. Sharepoint学习笔记—ECM系列—找不到Content Type Publishing链接
  11. ACM32 MCU元器件AD封装库
  12. java的数据类型有哪些_java数据类型有哪些
  13. 程序员凌晨闲暇无聊时干什么
  14. 超声波传感器(CHx01) 学习笔记 Ⅲ - I2C读写操作
  15. 关于linux网络编程的项目,linux网络编程入门
  16. 论文阅读:Permutation Matters: Anisotropic Convolutional Layer for Learning on Point Clouds
  17. 2021年中国智能驾驶行业研究报告
  18. 微信支付:商户订单号重复
  19. python之matplotlib制作基础图表以及图例,标注,marker,中文设置
  20. 04.大数据必备软件WinSCP、MTputty

热门文章

  1. mac os 隐私安全_了解OS X中的隐私和安全设置以确保数据安全
  2. 单元测试 class not found
  3. Halcon之畸变标定Grid-Rectification
  4. Android P中的AVB校验
  5. JAXB Simple Example
  6. 计算机体系结构.微结构概述
  7. 「恐惧型广告」有效爬入你的潜意识,网络广告新方向?
  8. C++调用Fortran动态库说明
  9. STM32寄存器HAL库方式的LED程序
  10. 关于Hive中的存储格式及压缩格式详解