我想创建一个 HTML5 画布动画,可能是这个网站上的动画:https ://flowstudio.co/ 。
我已经开始使用 GSAP,但看起来创建这样的东西确实是一项艰巨的任务。我必须创建几乎每个点/移动单数,我不知道是否有更快/更好的方法。目前我只看过没有插件的 GSAP。是否有一些特殊的工具/(GSAP)插件可以帮助创建这个?或者我应该使用 d3.js 吗?
我也试图为此找到一个教程,但看起来这个更高级的案例没有任何内容。
谢谢您的帮助!
我想创建一个 HTML5 画布动画,可能是这个网站上的动画:https ://flowstudio.co/ 。
我已经开始使用 GSAP,但看起来创建这样的东西确实是一项艰巨的任务。我必须创建几乎每个点/移动单数,我不知道是否有更快/更好的方法。目前我只看过没有插件的 GSAP。是否有一些特殊的工具/(GSAP)插件可以帮助创建这个?或者我应该使用 d3.js 吗?
我也试图为此找到一个教程,但看起来这个更高级的案例没有任何内容。
谢谢您的帮助!
您提供的示例是使用THREE.js ,我建议您也使用它,因为您也想在 3D 空间中操作。
当您想要为大量点设置动画时,您需要使用顶点着色器。这是因为顶点着色器将允许您一步计算所有点的位置(感谢 GPU 上的并行计算),而以“正常方式”(在 CPU 上)执行此操作对性能非常不利,因为每一个点必须一一计算。(在这里你可以看到区别)
您为点设置动画的方式与您可能想象的略有不同——您不想将动画应用于每个点。单身的。点...相反,您需要将三件事传递给着色器:
- 包含起点位置的数组,
-包含最终点位置的数组,
-混合参数(只是一个浮点变量,取值从 0 到 1)。
然后,您使用GSAP仅对混合参数进行动画处理,其余部分由着色器完成(例如,当混合参数为 0.5 时,点位置正好在您提供给着色器的起始位置和最终位置之间)
您提供的示例还使用了某种 Perlin Noise 函数,您还必须在着色器中实现该函数。
一次吃很多东西,但这里有一些来自Yuri Artyukh的很棒的教程,可以帮助你实现类似的目标:
https://www.youtube.com/watch?v=XjZ9iu_Z9G8&t=5713s
https://www.youtube.com/watch?v=QGMygnzlifk
https://www.youtube.com/watch?v=RKjfryYz1qY
https://www.youtube.com/watch?v=WVTLnYL84hQ&t=4452s
希望它有帮助......祝你好运!