Threejs利用着色器编写动态飞线特效

一、导语

动态飞线特效是可视化数据地图中常见的需求之一,鼠标点击的区块作为终点,从其他区块飞线至点击区块,附带颜色变换或者结合粒子动画

二、分析

  1. 利用创建3点来构成贝塞尔曲线,形成线段
  2. 利用着色器材质来按照线段以及时间点变化来变化线段的颜色形成动画

三、上基础代码

复制代码
 // 贝塞尔曲线
    const curve = new THREE.QuadraticBezierCurve3(source, center, target)

    // 创建曲线
    const geometry = new THREE.TubeGeometry(curve, 64, 0.03)
    const tubeLineMaterial = new THREE.ShaderMaterial({
      transparent:true,
      uniforms: {
        baseColor: {
          value: new THREE.Color(baseColor)
        },
        finallyColor: {
          value: new THREE.Color(finallyColor)
        },
        time: this.lineTime
      },
      vertexShader: `
        ***
        `,
      fragmentShader: `
       ***
      `
    })

四、利用着色器来形成颜色变化的动画

具体动态效果实现可以关注课程ThreejsWeb3D开发之可视化大数据地图,更多特效尽在里面,限时折扣哦

相关推荐
吴梓穆1 天前
three js 9 补间动画tween
threejs
吴梓穆4 天前
Three js 5 HDR天空盒、颜色空间、材质
threejs
吴梓穆5 天前
Three js 4 调试工具ui
threejs
独立开发之道8 天前
【three.js教程】场景图:用“父子关系“让月亮自动绕地球转
threejs
avi911110 天前
Threejs新版本后glb导出提示.x问题GLTFExporter,替代3dmax
开发语言·前端·javascript·threejs·glb·gltfexporter
答案—answer25 天前
VibeCoding 能做到什么程度?我用它做了一座 3D 数字博物馆
3d·ai编程·threejs·vibecoding
a1117761 个月前
三色软糖坠落玻璃池 THreeJS kimi
前端·人工智能·threejs
一根数据线2 个月前
从建筑可视化到数字孪生:Three.js如何改变3D展示?
3d建模·3d模型轻量化·threejs·3d模型·模型减面·lod·轻装3d
gis分享者3 个月前
学习threejs,实现炫酷的3D编程语言地球可视化效果
可视化·编程语言·threejs·地球·spheregeometry·raycaster·meshbasic
gis分享者3 个月前
学习threejs,实现分形球体交互可视化
交互·threejs·分形·glsl·球体·shadermaterial·planegeometry