ThreeJS 动画之 Noisy Lines

简介: ThreeJS 动画之 Noisy Lines

本文已参与[新人创作礼]活动,一起开启掘金创作之路

五一假期即将结束啦,大家也即将准备投入到工作中来了,在这假期的最后一天,给大家带来一个复杂的线条动画,效果如下所示。

image.png

如果你做过一些企业站点的项目,应该会有遇到过这种需求,为了让我们的站点更具有活力及动画效果,往往会加一些类似这样的效果来丰富我们的网站,今天就来看看如何实现这种效果吧,动画效果基于threejs-toys实现,本文不讨论其底层原理,有兴趣的同学可以看看源码研究。

实现

引入依赖包

import { noisyLinesBackground } from 'https://unpkg.com/threejs-toys@0.0.4/build/threejs-toys.module.cdn.min.js'

初始化调用

<div id="app"></div>
const bg = noisyLinesBackground({
  el: document.getElementById('app'),
  colors: [143811, 10932726],
  minStroke: 5,
  maxStroke: 20,
  timeCoef: 0.0002,
  coordScale: 2,
  displacementScale: 0.02
})

参数解释

参数 含义
el 动画加载元素
colors 线条颜色数组区间
minStroke 线条最小宽度
maxStroke 线条最大宽度
timeCoef 线条运动速度
coordScale 曲线级别,1是全直线运动
displacementScale 线条移动级别

通过以上初始化调用后界面就能看到线条动起来啦,我们改可以继续通过点击事件来改变相应的参数,让我们的界面动画效果发生变化。

document.body.addEventListener('click', () => {
  bg.config.colors = [Math.random() * 0xffffff, Math.random() * 0xffffff]
  bg.config.minStroke = Math.random() * 2
  bg.config.maxStroke = bg.config.minStroke + Math.random() * 5
  bg.drawTexture()
  bg.config.timeCoef = 0.000025 + Math.random() * 0.001
  bg.uniforms.uCoordScale.value = 0.5 + Math.random() * 4.5
  bg.uniforms.uDisplacementScale.value = 0.00025 + Math.random() * 0.01
})

效果如下:

13cded5ab1fbd06beea6543193dfcf4.png

最后

整体实现就介绍完啦,调用的方式相当简单,大家有兴趣的可以看看源码实现过程,基于threejs实现。如果觉得有用,赶紧点赞收藏起来吧,说不定哪天就用上啦~

地址

github:github.com/klevron/thr…

codepen:codepen.io/soju22/pen/…



目录
相关文章
|
1月前
|
前端开发
ThreeJs通过canvas和Sprite添加标签
这篇文章介绍了在Three.js中利用Canvas和Sprite实现动态文本标签的方法,使得标签可以跟随模型并在3D空间中始终保持面向摄像机。
47 0
ThreeJs通过canvas和Sprite添加标签
|
2月前
|
前端开发 JavaScript
鼠标移动淡入淡出Canvas小球效果_TS版本
使用TypeScript重新实现鼠标移动产生淡入淡出Canvas小球效果。涉及到TS的数据类型、泛型定义、函数与接口定义、类的实现及作为接口的使用,以及枚举类型。通过定义Ball类实现小球的属性和行为,使用事件监听鼠标移动并创建小球实例,然后使用requestAnimationFrame实现动画效果。
29 0
鼠标移动淡入淡出Canvas小球效果_TS版本
|
1月前
|
前端开发 数据可视化 开发者
D3.js 内置的动画函数
D3.js 内置的动画函数
|
1月前
|
存储 JavaScript
ThreeJS创建关键帧动画
这篇文章讲解了如何在Three.js中利用关键帧轨道 (`KeyframeTrack`) 创建动画效果,并提供了详细的步骤和代码示例。
57 0
|
3月前
|
存储 JavaScript vr&ar
three.js中的矩阵变换(模型视图投影变换)
three.js中的矩阵变换(模型视图投影变换)
76 1
SVG SMIL 动画(基本动画 、变换动画)
SVG SMIL 动画(基本动画 、变换动画)
54 0
Three.js绘制管
使用Three.js绘制中空的圆柱管道
205 0
|
图形学 异构计算
Unity Visual Effect Graph 制作Fireworks烟花特效
Unity Visual Effect Graph 制作Fireworks烟花特效
515 1
Unity Visual Effect Graph 制作Fireworks烟花特效
|
图形学
Unity Shader Graph 制作 Fade 淡入淡出效果
Unity Shader Graph 制作 Fade 淡入淡出效果
644 1
Unity Shader Graph 制作 Fade 淡入淡出效果
|
JSON 前端开发 JavaScript
Threejs引入字体,实现3D文字,Canvas画布作为纹理贴图实现滚动字幕
Threejs引入字体,实现3D文字,Canvas画布作为纹理贴图实现滚动字幕
937 0
Threejs引入字体,实现3D文字,Canvas画布作为纹理贴图实现滚动字幕