问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Flutter 小技巧之不一样的思路实现炫酷 3D 翻页折叠动画

发布网友 发布时间:2024-10-08 16:37

我来回答

1个回答

热心网友 时间:2024-11-20 13:35

在Flutter动画实现中,有一个有趣的话题——如何制作一个3D折叠动画效果?许多人可能会首先想到使用Dart中的矩阵变换和Canvas来实现。

这种效果在当前的小说阅读器场景中非常常见,而类似的翻页效果通常是通过这种思路实现的。例如,我曾经尝试过的《炫酷的3D卡片和帅气的360°展示效果》以及《用纯代码实现立体Dash和3D掘金Logo》都是利用矩阵变换实现的视觉3D效果。

然而,今天我要介绍一个名为riveo_page_curl的项目,它提供了一个与众不同的实现方法,即通过自定义Fragment Shaders来实现动画。这种方式允许开发者使用GLSL语言进行编程,从而通过GPU渲染出更丰富的图形效果。

在介绍这个项目之前,我们先来了解一下Fragment Shader。自Flutter 3.7版本开始,就提供了Fragment Shader API。这个API允许开发者直接介入到Flutter渲染管道的渲染流程中。

直接使用Fragment Shader而不是Dart矩阵变换的好处是,它可以减少CPU的耗时。通过图形语言(GLSL)直接给GPU发送指令,性能上可以得到提升,并且实现起来更简洁。不过,加载着色器可能会带来一定的开销,因此需要在运行时将其编译为特定于平台的着色器。

在Flutter中使用Fragment Shader也有一些条件限制,例如需要引入特定的头文件,以及只支持.frag格式的文件。

如果需要将已有的GLSL效果(如shadertoy上的代码)搬运到Flutter中,可能需要进行一些代码改造。以下是一段渐变动画的着色器示例,以及它在Flutter中的对应代码。

通过这些片段着色器,我们可以获得极其丰富的渲染效果。在Flutter中,渐变动画的完整代码可以在GitHub上的相应仓库中找到。

riveo_page_curl项目中的折叠着色器包含了一些矩阵变换和三角函数计算。它的核心在于计算弯曲部分的弧度,并增加阴影投影以提高视觉效果。

在Dart层,除了ShaderBuilder之外,还可以通过flutter_shaders的AnimatedSampler来实现更简洁的shader、image和canvas的配合。

完整项目可以在GitHub上查看。相比在Dart层实现3D翻页折叠,使用FragmentShader实现的代码更加简洁,性能体验也更优秀。此外,通过简单的移植适配,ShaderToy里的着色器代码可以直接在Flutter中使用,这对于Flutter在游戏场景的实现非常有帮助。

最后,Flutter 3.10版本之后,Flutter Web也支持了fragment shaders,因此着色器在Flutter的实现已经相对成熟。如果将之前通过Flutter实现的《霓虹灯文本的「故障」效果》的逻辑转换成fragment shaders来完成,性能和代码简洁程度也可能会有所提升。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
索尼NEX-6单头套机(E 16-50mm)主要参数 索尼NEX-6单头套机(E 18-200mm LE)主要参数 索尼NEX-6单头套机(E 18-200mm LE)基本参数 索尼NEX-6单头套机(16-80mm)基本参数 追加诉前财产保全的条件是什么 电脑开机硬盘灯循环亮灭电脑开机后硬盘灯一下亮一下灭是怎么回事_百度... ...不能开机了?显示器亮橘色的灯,风扇能转,就是主机上的灯不亮... ...重起时电源灯是常亮, 风扇是转的,但硬盘灯不亮, 屏幕无显示_百度知 ... 硬盘灯常亮电脑无法正常运行电脑开机后硬盘指示灯常亮不闪是什么原因... 电脑硬盘不亮电脑硬盘指示灯不亮 ssh页面怎么提取form中的值 世界最大的宫殿是故宫吗 12盎司是多少毫升? QQ2009游戏大厅关闭声音 代用茶技术要求 躺床上用手机下象棋与现实中坐那面对面下是不是水平会不一样? 请教:食品检验员证书,化学检验员证书本科生可以直接考高级???_百度知... 用手机下象棋,大概能画多少钱? 手机游戏下象棋是不是有堵钱的 低保金2021年6月份横县发下来了吗? 2018年5月份的低保金为什么还没有发下来 低保证多久能发下来 ...等本金转出后,二到四个工作日查看并提取收益这个是什么意思... F1中国站历届冠军 股票委托晚上12点挂单可以吗? 许添的介绍 美味人生介绍的分了破壁机好用吗 美味人生主持介绍 美味人生节目介绍 word分页预览如何调整每页均匀word分页预览如何调整每页均匀打印 Struts标签遍历问题出不来! 目前进口电容器质量最好服务好的️那些品牌? 巴中苍蝇馆子前十名 眼袋是怎么形成的呢?我23岁眼袋已经有好几年了而且非常严重、特别是早... 眼袋为什么老是肿的 眼睛天天肿着。黑眼圈眼袋很浓。消除不掉。怎么才消除的掉?_百度知 ... 打印出来的照片黑色部分的感觉有点像底片,怎么办? 泰坦尼克号沉没在哪个洋 增值税发票和普通发票差别在哪 自己脱发比较多,地上长头发在被福玛特扫地机器人清扫的时候,会不会被... 农村房屋土地出现争议要如何处理 脚气起水疱什么药最好 脚气、水泡、真菌感染、什么药最好,现在我皮肤干糙裂缝很难看。_百度... ...电视只要打开设置就卡在那里了。遥控器按了没反应 天平车险怎么样可靠吗 非典之前有什么重大 ...按每6个一堆刚好分完,按每7个一堆分也刚好分完,按每8个一堆分也... ...平均分给幼儿园的小朋友,刚好分完,这个班最多有多少个小朋友_百度... 一堆桃子,不论是分给6只猴子,还是分给10只猴子,都刚好分完,这堆... 工商银行出现93012587风控怎么解决?去银行也查不出决果,留个电话在家等...