ps滤镜之旋转扭曲算法实现
最近捕鱼达人3的发布 ,人气比较高,由于前2部作品已经有一大群“粉丝”,所以此次3代再发布就受到很多关注。就画面3代是3d的效果,加上一些特殊效果,在画面质量上有了一定的提升。本文讲述一下捕鱼3的开场漩涡实现方法,它类似ps的旋转扭曲效果,只是程序中可以动态改变参数,实现像漩涡一样的效果。
首先,进入主场景的时候,将整个场景渲染到一个节点中,然后执行shader操作,vert着色器将所有的点进行扭曲变换,在颜色着色器乘以一个沿着中心点变化的因子,使得越靠近中心点,颜色逐渐变成白色或者透明。
为了将扭转力具体化,这里我将它看出角加速度,假设靠近中心点的距离在一定范围内用百分比表示,比如在400个单位的范围,距离中心点100的点就是100/400=0.25,将它用do表示。假如扭力在距离中心点100的地方是最大的,然后向两边越来越少,这样就会形成旋转扭曲的效果。
float d=sqrt(ja_position.x*ja_position.x+ja_position.y*ja_position.y);
float d0=d/400;
float w=0.1+(1-(do-0.25)*(do-0.25))*force;
float c=cos(w);
float s=sin(w);
mat4 m1=mat4(c,s,0,0,-s,c,0,0,0,0,1,0,0,0,0,1);
gl_Position =CC_MVPMatrix *m1* ja_position;
在以上的代码中,m1是点的变换矩阵,将所有点左乘m1,最后就会出现扭曲的效果。
gl_FragColor =dstclr*d0;
以上是将目标色乘以变化因子,这里只是简单将中心点附近的颜色变浅。
由于源代码很多,还要建立网格,顶点索引等等,这里就不一一贴上来啦~,需要的朋友可以联系,呵呵。
效果图:
变换前:
变换后:
ps滤镜之旋转扭曲算法实现相关推荐
- 图像滤镜艺术---图像滤镜晕影调节算法研究
原文:图像滤镜艺术---图像滤镜晕影调节算法研究 本文对滤镜中常见的晕影,晕角效果的实现做了研究,具体如下: 1 晕影调整算法 所谓晕影就是给图像四个角添加暗影效果,这暗影向图像中心逐渐淡化.我们使用 ...
- python绘制立体扇形_Python实现PS滤镜特效之扇形变换效果示例
本文实例讲述了Python实现PS滤镜特效之扇形变换效果.分享给大家供大家参考,具体如下: 这里用 Python 实现 PS 滤镜中的一种几何变换特效,称为扇形变换,将图像扭曲成一个扇形,具体的算法原 ...
- html怎么做出相框的效果,PS滤镜制作漂亮的实木相框效果
一.新建一个600 * 800像素的文件,然后新建一个图层,前景颜色设置为红色,背景设置为深红色,执行:滤镜 > 渲染 > 纤维,参数设置如下图. 二.执行:图像 > 旋转画布 &g ...
- python 艺术照片滤镜_Python实现PS滤镜Fish lens图像扭曲效果示例
本文实例讲述了Python实现PS滤镜Fish lens图像扭曲效果.分享给大家供大家参考,具体如下: 这里实现 PS 滤镜中的一种几何变换– Fish lens, 对图像做扭曲,感觉就像通过一个凸镜 ...
- python图片马赛克_Python实现PS滤镜中马赛克效果示例
本文实例讲述了Python实现PS滤镜中马赛克效果.分享给大家供大家参考,具体如下: 这里利用 Python 实现PS 滤镜中的马赛克效果,具体的算法原理和效果可以参考附录说明,Python示例代码如 ...
- Python: PS滤镜--径向模糊
本文用 Python 实现 PS 滤镜中的径向模糊特效,具体的算法原理和效果可以参考之前的博客: http://blog.csdn.net/matrix_space/article/details/3 ...
- Python: PS 滤镜--马赛克
本文利用 Python 实现PS 滤镜中的马赛克效果,具体的算法原理和效果可以参考之前的博客: http://blog.csdn.net/matrix_space/article/details/30 ...
- Python: PS 滤镜--素描
本文用 Python 实现 PS 滤镜中的素描特效,具体的算法原理和效果可以参考之前的博客: http://blog.csdn.net/matrix_space/article/details/386 ...
- OpenCV——PS 滤镜, 浮雕效果
具体的算法原理可以参考: PS 滤镜, 浮雕效果 // define head function #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITH ...
最新文章
- 【Dlib】使用dlib_face_recognition_resnet_model_v1.dat无法实现微调fune-tuning
- js控制文本框仅仅能输入中文、英文、数字与指定特殊符号
- 589-N叉树的前序遍历
- 前端学习(548):node的自定义模块
- 哥哥被我打哭了的飞鸽传书
- 【bzoj3669】[Noi2014]魔法森林【LCT】
- Jest中Mock网络请求
- CISC, RISC 探究
- 深入理解数组与指针——原因在于”退化“
- JSON --- JAVA 使用方法
- 历时2年《爱上Android》出版了
- 设计模式(4)—— 简单工厂模式(Simple Factory,创建型)
- Java 生成二维码实战
- ef mysql 分页查询语句_MySQL、Oracle和SQL Server的分页查询语句
- 数据系统 需要的服务器配置,数据系统 需要的服务器配置
- 持久层框架JPA与Mybatis该如何选型
- Java零基础学习021-API进阶第二天
- marlin固件烧录教程_marlin固件中文(marlin固件下载)
- Matplotlib grid()设置网格格式
- wifi共享大师去广告的方法