触摸拖尾特效

实现原理

参考cocos2d中MotionStreak拖尾特效的实现。MotionStreak 的拖尾效果,原理实际上是:触摸手指在移动的过程中,会动态生成一段段条带段(如图),然后这些条带段会在生命周期Fade秒内,渐渐隐去(慢慢变透明),从而形成了拖尾的效果。

条带使用的是OpenGL中三角形条带。条带上的关键点并不是触摸点,而是相邻触摸坐标线段的垂直平分线上距离线段中点距离为[条带宽度/2]的点,坐标计算方式如下:

触摸相邻点的线段的倾斜角α已知,L为 条带的宽度,那么三角形条带相对于线段中点的(xm,ym)(x_m,y_m)(xm​,ym​) 偏移量 dx,dydx,dydx,dy为
dx=L∗cos⁡β2,dy=L∗sin⁡β2,α+β=Π4dx=\frac{L\ast\cos{\beta}}{2}, dy=\frac{L\ast\sin{\beta}}{2}, \ \alpha+\beta=\frac{\mathrm{\Pi}}{4} dx=2L∗cosβ​,dy=2L∗sinβ​, α+β=4Π​
至此,条带上的所有关键点可以计算得出。条带上内侧的关键点放到顶点数组的奇数位置,外侧的关键点放到顶点数组的偶数位置,最后将顶点数组按照OpenGL中三角形条带(GL_TRIANGLE_STRIP)的方式依次连接,便可得到三角形条带,最后将纹理(如下图)和颜色混合后映射到条带上,便可得到触摸拖尾特效。

效果

触摸点击、长按特效

实现原理

触摸点击的效果是点击位置出现一个圆,手指离开后圆半径逐渐缩小,直至消失。触摸长按的效果是长按位置出现圆环,手指离开后圆环消失。两个动画根本上是进行圆环的绘制,圆其实就是个内径为零的圆环。但在OpenGL中基本图元中并不包含圆,需要用三角形去拟合。圆环的绘制是采用OpenGL的三角形条带进行绘制,难点在顶点数组的计算,如下图:

建模后:已知当前的坐标(x,y)(x,y)(x,y),偏移角度ααα, 圆心(cx,cy)(cx,cy)(cx,cy),圆半径为rrr, 我们需要推导出(x′,y′)(x\prime,y\prime)(x′,y′),做辅助角βββ,以圆心为坐标原点建系,则有
x=rcos(α+β);x′=rcosβ;y=rsin(α+β);y′=rsinβx=rcos(α+β);x'=rcosβ;y=rsin(α+β);y'=rsinβ x=rcos(α+β);x′=rcosβ;y=rsin(α+β);y′=rsinβ
最终可推导出:
x′=xcosα−ysinα;y′=xsinα+ycosαx'=xcosα - ysinα;y'=xsinα+ycosα x′=xcosα−ysinα;y′=xsinα+ycosα
假设我们用一个N多边形去拟合圆,则有:
α=2ΠN\alpha=\ \frac{2\mathrm{\Pi}}{N} α= N2Π​
至此,圆环上的所有的关键点可以推导得出。然后,将圆环内侧的关键点放入顶点数组的奇数位置,外侧的关键点放到顶点数组的偶数位置,通过OpenGL中的三角形条带(GL_TRIANGLE_STRIP)的方式,进行绘制,便可得到圆环,然后将圆环的纹理贴合上去,最后,通过QAnimation做成渐变的效果。至此,点击、长按动画便大功告成。

效果

  1. 触摸点击动效

  2. 触摸长按动效

Linux触摸屏动效相关推荐

  1. Pag——腾讯自创动效

    背景 是腾讯公司自主研发,最初诞生于2016年,为解决复杂视频编辑场景下动画 渲染的问题,同时又覆盖了UI动画和直播场景,2022年一月在GitHub正式开源.这意味着目前还处于一个小众阶段,从网上搜 ...

  2. PAG 动效方案使用总结

    近几年能明显感觉到,互联网产品已经越来越离不开动效了:不管是APP里会动的加载动画UI,还是直播间里华丽的礼物,都需要经历动效上线的过程.而负责这些动效上线的前端同学应该有过这样的体验:各种加班写代码 ...

  3. 前端必看!微信都在用的开源动效方案【PAG动效】

    1.PAG 是什么? 在 web 中实现一个动画, css animation 声明一下各个时间点的样式就好了, 写起来并不麻烦.但是当设计给的动画越来越复杂, 还原度要求越来越高的情况下, 单纯依赖 ...

  4. ui动效 unity_Unity - UIWidgets 2. 控件组合

    UIWidgets没有提供完整文档, 称可以去看Flutter的文档 中文 \ 英文 控件(Control)在Flutter中称为"Widget", 一个界面的若干控件是通过wid ...

  5. three相机在模型上_基于 three.js 的 3D 粒子动效实现

    作者:个推web前端开发工程师 梁神 一.背景 粒子特效是为模拟现实中的水.火.雾.气等效果由各种三维软件开发的制作模块,原理是将无数的单个粒子组合使其呈现出固定形态,借由控制器.脚本来控制其整体或单 ...

  6. 【骚气的动效】无限循环往下往复淡入淡出运动,通常用于向下箭头,提示用户可以往下滚动或者点击展开

    /* 无限循环往下往复淡入淡出运动 */%auto-down-animate {animation: auto-down-animate 1s ease-in-out infinite;-moz-an ...

  7. Fade 数字切换动效

    原文链接:http://www.jianshu.com/p/983674e6f4ef 根据原型高度还原的一个动效作品.希望可以通过审核.谢谢. -- 由Bear1494735376123分享 欢迎同样 ...

  8. 如何选取合适的前端动效方案?

    一.原因 前端动画场景需求多 对众多动画场景的技术实现方案选择上比较模糊 各动画方案的优劣及适用场景认识模糊 现有动画库太多,不知道选哪个 主流动画库的适用场景认识模糊 二.分类 动画用途 展示型的动 ...

  9. QQ音乐的动效歌词是如何实践的?

    2019独角兽企业重金招聘Python工程师标准>>> 本文由云+社区发表 作者:QQ音乐技术团队 一. 背景 1. 现状 歌词浏览已经成为音乐app的标配,展示和动画效果也基本上大 ...

最新文章

  1. 借助numpy.rot90实现图片顺时针旋转90°,旋转后图片没有黑边
  2. Spring Boot——易班优课YOOC课群在线测试自动答题解决方案(二)答案储存
  3. linux升级补丁tar,Linux下Bash严重漏洞补丁升级方法
  4. [转载]Spring配置文件详解一:
  5. 提交显示成功但是没有看到文件_如何向RTThread提交一个BSP?
  6. hadoop2.4.2集群搭建及hive与mysql集成文档记录
  7. springboot(四)——@EnableConfigurationProperties是如何起作用的你知道吗
  8. POJ1384Piggy-Bank(DP)
  9. 是时候给为的 C 盘清理污垢了!一个830KB的神器安全解决烦恼 | C 盘快满了,如何清理 C 盘? | win 10 OS盘清理
  10. EOS技术研究:合约与数据库交互
  11. 机器学习算法:马尔可夫链
  12. MMKV_Android数据持久化方案调研-MMKV SP REALM ROOM WCDB...
  13. 读养生四要有感《慎动篇》
  14. 别让生活 耗尽了你的耐心和向往 你还有诗和远方...
  15. USB大容量存储设备无法启动该怎么办?
  16. java 获得唯一 数字_java生成唯一数字
  17. velocity模板技术生成word文档
  18. GEE基础-实现NDVI年最大值合成
  19. 【noip2005】采药
  20. Cmder安装和配置

热门文章

  1. 【漏洞发现-1】操作系统之漏洞探针类型及利用
  2. 处理海量数据之awk命令
  3. 高手diy android控制的智能蓝牙led灯,高手DIY Android控制智能蓝牙LED灯
  4. S32K144(13)PDB
  5. 风口中的智慧城市:智慧的面子,数字的里子
  6. maven deploy上传文件到私服 神坑解决
  7. java服务和net服务_艾伟_转载:Java和.NET互操作:我们应该放弃Web Service吗?
  8. 正整数表示为连续自然数的和(难度:1颗星)
  9. 保险产品即Token,众安科技的新区块链项目背后有何门道?
  10. WEB页面SEO —— 网站TDK优化细节