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/…



目录
相关文章
|
前端开发 数据可视化 JavaScript
前端图形学实战: 从零开发一款轻量级滑动验证码组件(vue3 + vite版)
前端图形学实战: 从零开发一款轻量级滑动验证码组件(vue3 + vite版)
1284 0
|
消息中间件 存储 Java
手动实现 Spring Boot 日志链路追踪:提升调试效率的利器
【8月更文挑战第8天】在复杂的分布式系统中,日志是诊断问题、追踪系统行为的重要工具。然而,随着微服务架构的普及,服务间的调用链路错综复杂,传统的日志记录方式往往难以快速定位问题源头。今天,我们将探讨如何在不依赖外部组件(如Zipkin、Sleuth等)的情况下,手动实现Spring Boot应用的日志链路追踪,让日志定位更加便捷高效。
644 1
|
JavaScript
Vue 报错Failed to mount component: template or render function not defined
Vue 报错Failed to mount component: template or render function not defined
Vue 报错Failed to mount component: template or render function not defined
Threejs中导入GLTF模型克隆后合并
这篇文章详细说明了在Three.js中如何导入GLTF模型,对其进行克隆,并将多个克隆模型合并成一个整体模型的过程。
506 2
Threejs中导入GLTF模型克隆后合并
|
Java
实现java执行kettle并传参数
实现java执行kettle并传参数
223 1
|
应用服务中间件 nginx
ThreeJs导入外部3D模型
这篇文章详细介绍了如何在Three.js中导入并显示外部的3D模型,包括所需的准备工作和具体实现步骤。
1148 0
|
计算机视觉
OpenCV滑动条(createTrackbar()函数)如何在多个维度进行同步调整?
这篇文章介绍了如何在OpenCV中使用`createTrackbar()`函数创建多个滑动条以同步调整图像的多个维度(如亮度和对比度),通过将不同滑动条的回调函数合并为一个,确保它们在同一图像基础上进行调整。
|
数据采集 存储 数据安全/隐私保护
CDGA|数据治理:自上而下与自下而上的双重策略
数据治理是一个复杂而长期的过程,需要企业从多个方面入手进行综合治理。自上而下和自下而上的双重策略可以相互补充、相互促进,共同推动企业数据治理工作的深入开展。在实践中,企业需要根据自身实际情况选择合适的策略和方法,确保数据治理工作的有效性和可持续性。
|
JavaScript 前端开发
vue2【详解】生命周期(含父子组件的生命周期顺序)
vue2【详解】生命周期(含父子组件的生命周期顺序)
1976 0
|
云安全 安全 网络安全
云上安全基础防护知识
网络安全涉及核心概念如机密性、完整性、可用性、认证、授权、不可否认性、保密性、可靠性、可控性和隐私保护。这些属性是安全策略的基础。网络风险模型描绘了攻击过程,如洛克希德·马丁的网络杀伤链,包括侦察、武器化、交付、利用、安装、命令与控制及行动阶段。攻防双方的状态图表展示了防御者和攻击者的动态。在中国,互联网安全态势和云安全威胁日益严峻,云安全遵循责任共担原则,阿里云提供了多层安全架构来保障云上安全。