简单几步打造酷炫粒子动画

1,693 阅读1分钟

之前看到一个外国小哥哥的网站效果,学习了利用three.js的一个粒子效果,相对简单但是效果杠杠的,快快学起来~

效果预览

点击预览效果

几个比较重要的点

获取图片点数据

点的数据是通过getImageData()方法获取的,得到的结果是一串Uint8ClampedArray数据和图片宽高。

imageData.data中的数据每四个数代表一个点。

通过拿到的imageData,获取R通道>0的点,设置该点的(x,y,z)坐标和rgb颜色。

移动相机位置形成动画

初始动画和拖拽动画的效果都是由相机的位置决定的,在初始状态下把相机放在(0, -40, 4)的位置,也就是会以一个仰视的角度去看图像的点,这时点就是分散的。

渲染时,让相机逐渐回到(0,0,4)的位置,面向z轴负方向,这时图像看起来就是平面且完整的。拖拽也是同理。

图片素材

我们把小哥哥的照片拉到PS中看一看。通过这张照片,可以看到在图像上的选择上适合有颜色的点少一些,这样效果会比较自然。(PS上可以看到红色通道的点基本与图像的点吻合,所以上面选择R通道>0的思路是OK的)

随便找一张大佬的照片试试效果,因为衣服颜色原因总体的色点还是比较多,效果就不如原例子自然,但效果还是依旧帅气。点击预览效果