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开发之可视化大数据地图,更多特效尽在里面,限时折扣哦

相关推荐
gis分享者1 天前
学习threejs,PerspectiveCamera透视相机和OrthographicCamera正交相机对比
threejs·透视相机·正交相机
gis分享者4 天前
学习threejs,scene.overrideMaterial全局材质效果
threejs·全局材质·overridemater
我码玄黄6 天前
在THREEJS中加载3dtile模型
前端·javascript·3d·threejs
gis分享者14 天前
学习threejs,加载天地图
threejs·加载天地图
踏实探索17 天前
Three.js教程_02场景、相机与渲染器全面解析
开发语言·javascript·数码相机·threejs
gis分享者18 天前
学习threejs,实现配合使用WebWorker
多线程·threejs·webworker
AllBlue18 天前
threejs相机辅助对象cameraHelper
threejs
gis分享者21 天前
学习threejs,使用VideoTexture实现视频Video更新纹理
threejs·视频贴图·videotexture
gis分享者22 天前
学习threejs,通过设置纹理属性来修改纹理贴图的位置和大小
threejs·纹理贴图·位置和大小
gis分享者1 个月前
学习threejs,使用设置normalMap法向量贴图创建更加细致的凹凸和褶皱
threejs·normalmap·法向量贴图