Three.js中文网 Three.js中文网
首页
免费视频
系统课 (opens new window)
  • Three.js基础课程
  • Vue3+Threejs 3D可视化
  • Threejs进阶课程
  • 展厅3D预览漫游
  • Threejs Shader
  • Blender建模基础
  • Three.js基础课程(旧版本) (opens new window)
  • 文章
WebGPU教程
  • WebGL教程
  • WebGL教程(旧版本) (opens new window)
3D案例
  • 本站部署(打开快) (opens new window)
  • 原英文官网文档 (opens new window)
首页
免费视频
系统课 (opens new window)
  • Three.js基础课程
  • Vue3+Threejs 3D可视化
  • Threejs进阶课程
  • 展厅3D预览漫游
  • Threejs Shader
  • Blender建模基础
  • Three.js基础课程(旧版本) (opens new window)
  • 文章
WebGPU教程
  • WebGL教程
  • WebGL教程(旧版本) (opens new window)
3D案例
  • 本站部署(打开快) (opens new window)
  • 原英文官网文档 (opens new window)
Web3D系统课程视频
  • 0.学前说明

  • 1.Three.js快速入门

  • 2.几何体BufferGeometry

  • 3.模型对象、材质

  • 4.层级模型

  • 5.顶点UV坐标、纹理贴图

  • 6.加载外部三维模型(gltf)

  • 7.PBR材质与纹理贴图

  • 8.渲染器和前端UI界面

  • 9.生成曲线、几何体

    • 1. 生成圆弧顶点
    • 2. 几何体方法.setFromPoints()
    • 3. 曲线Curve简介
    • 4. 椭圆、圆
    • 5. 样条曲线
    • 6. 贝塞尔曲线
    • 7. 样条、贝塞尔曲线应用
    • 8. 组合曲线CurvePath拼接曲线
    • 9. 曲线路径管道TubeGeometry
    • 10. 旋转成型LatheGeometry
    • 11. 轮廓填充ShapeGeometry
    • 12. 拉伸ExtrudeGeometry
    • 13. 扫描ExtrudeGeometry
    • 14. 多边形轮廓Shape简介
    • 15. 多边形轮廓Shape(圆弧)
    • 16. 多边形Shape(内孔.holes)
    • 17. 模型边界线EdgesGeometry
    • 18. 几何体顶点颜色数数据
    • 19. 一段曲线颜色渐变
    • 20. Color颜色渐变插值
      • 21. 查看或设置gltf几何体顶点
      • 22. 山脉地形高度可视化
    • 10.相机基础

    • 11.光源和阴影

    • 12.精灵模型Sprite

    • 13.后处理EffectComposer

    • 14.射线拾取模型

    • 15.场景标注标签信息

    • 16.关键帧动画

    • 17.动画库tween.js

    • Three.js教程
    • 9.生成曲线、几何体
    郭隆邦
    2023-02-04
    目录

    20. Color颜色渐变插值

    # Color颜色渐变插值

    下面给大家介绍一个颜色对象Color颜色渐变插值方法.lerpColors()和.lerp()。

    # 颜色对象Color颜色插值方法.lerpColors()

    通过浏览器控制台测试.lerpColors()方法颜色插值的规律。

    执行.lerpColors(Color1,Color2, percent)通过一个百分比参数percent,可以控制Color1和Color2两种颜色混合的百分比,Color1对应1-percent,Color2对应percent。

    const c1 = new THREE.Color(0xff0000); //红色
    const c2 = new THREE.Color(0x0000ff); //蓝色
    const c = new THREE.Color();
    

    颜色插值结果,和c1一样rgb(1,0,0),100% c1 + 0% c2混合

    c.lerpColors(c1,c2, 0);
    console.log('颜色插值结果',c);
    

    颜色插值结果rgb(0.5,0,0.5),c1和c2各取50%:

    c.lerpColors(c1,c2, 0.5);
    console.log('颜色插值结果',c);
    

    和c2一样rgb(0,0,1) 0% c1 + 100% c2混合

    c.lerpColors(c1,c2, 1);
    console.log('颜色插值结果',c);
    

    # 颜色对象Color颜色插值方法.lerp()

    .lerp()和.lerpColors()功能一样,只是具体语法细节不同。

    c1与c2颜色混合,混合后的rgb值,赋值给c1的.r、.g、.b属性。

    const c1 = new THREE.Color(0xff0000); //红色
    const c2 = new THREE.Color(0x0000ff); //蓝色
    c1.lerp(c2, percent);
    

    # 颜色克隆.clone()

    通过颜色对象克隆方法.clone()可以返回一个新的颜色对象。

    注意c1.clone().lerp()和c1.lerp()写法是不同的,执行c1.clone().lerp(),c1和c2颜色混合后,不会改变c1的颜色值,改变的是c1.clone()返回的新颜色对象。

    const c1 = new THREE.Color(0xff0000); //红色
    const c2 = new THREE.Color(0x0000ff); //蓝色
    const c = c1.clone().lerp(c2, percent);//颜色插值计算
    

    # Color颜色插值应用

    上节课"19.一段曲线颜色渐变"中颜色渐变是自己写的规则,这样比较麻烦,可以借助颜色插值方法Color.lerp()快速实现颜色渐变的计算。

    const pos = geometry.attributes.position;
    const count = pos.count; //顶点数量
    // 计算每个顶点的颜色值
    const colorsArr = [];
    for (let i = 0; i < count; i++) {
        const percent = i / count; 
        // 红色分量从0到1变化,蓝色分量从1到0变化
        colorsArr.push(percent, 0, 1 - percent); //蓝色到红色渐变色
    }
    
    // 根据顶点距离起点远近进行颜色插值计算
    const c1 = new THREE.Color(0x00ffff); //曲线起点颜色 青色
    const c2 = new THREE.Color(0xffff00); //曲线结束点颜色 黄色
    for (let i = 0; i < count; i++) {
        const percent = i / count; //点索引值相对所有点数量的百分比
        //根据顶点位置顺序大小设置颜色渐变
        const c = c1.clone().lerp(c2, percent);//颜色插值计算
        colorsArr.push(c.r, c.g, c.b); 
    }
    
    19. 一段曲线颜色渐变
    21. 查看或设置gltf几何体顶点

    ← 19. 一段曲线颜色渐变 21. 查看或设置gltf几何体顶点→

    Theme by Vdoing | Copyright © 2016-2025 豫ICP备16004767号-2
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式