news 2026/8/6 7:50:31

Three.js 3D 热力云图效果实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Three.js 3D 热力云图效果实现

一、效果展示及原理概述

1.1 核心思想

3D 热力云图的核心思路是将 2D 热力图数据转化为 3D 立体效果。整体流程分为三个阶段:

原始数据 → 2D 热力图(heatmap.js) → 纹理贴图 → 3D 几何体顶点位移(Three.js Shader)

1.2 技术架构

技术作用
heatmap.js生成 2D 热力图画布(颜色映射热度值)
Three.js Texture将热力图画布作为纹理注入 GPU
PlaneBufferGeometry高分辨率平面(1000×1000 分段),提供密集顶点供位移
ShaderMaterial自定义着色器,读取纹理像素值驱动顶点 Y 方向位移

1.3 3D 云图效果的关键

  1. 高度图(HeightMap):在顶点着色器中采样热力图纹理的红色通道(R)作为高度值,乘以heightRatio控制位移幅度
  2. 密集网格PlaneBufferGeometry(290, 80, 1000, 1000)提供 100 万个顶点,实现平滑的地形起伏
  3. 透明云感:片元着色器中根据高度偏差计算透明度,高度越高偏差越大,透明度越高,形成云雾消散的视觉效果

二、完整 HTML 实现

2.1 完整代码

<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"><title>3D 热力云图教程</title><styletype="text/css">body{width:100%;height:100%;margin:0;padding:0;overflow:hidden;}.btn{position:absolute;top:20px;left:100px;z-index:100;}</style><!-- 顶点着色器:根据高度图位移顶点 --><scriptid="vertexShader"type="x-shader/x-vertex">uniform sampler2D heightMap;uniform float heightRatio;varying vec2 vUv;varying float hValue;varying vec3 cl;voidmain(){vUv=uv;vec3 pos=position;// 采样热力图颜色(用于片元着色器显示)cl=texture2D(heightMap,vUv).rgb;// 采样热力图红色通道作为高度值hValue=texture2D(heightMap,vUv).r;// 根据高度值位移顶点 Y 坐标pos.y=hValue*heightRatio;gl_Position=projectionMatrix*modelViewMatrix*vec4(pos,1.0);}</script><!-- 片元着色器:根据高度偏差计算透明度 --><scriptid="fragmentShader"type="x-shader/x-fragment">varying float hValue;varying vec3 cl;voidmain(){// 计算与最大高度(1.0)的偏差float v=abs(hValue-1.0);// 透明度随偏差增大而降低,形成云雾消散效果gl_FragColor=vec4(cl,0.8-v*v);}</script></head><body><divid="heatmap"></div><divid="heatmap-canvas"style="display:none;"></div><divclass="btn"><buttononclick="toggleHeatMap()"
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/6 7:49:07

从零构建飞书小程序Demo:环境配置、核心开发与实战指南

1. 项目概述&#xff1a;为什么从零开始一个飞书小程序Demo&#xff1f;如果你是一名开发者&#xff0c;最近肯定没少听到“飞书”、“小程序”、“Agent”这些词。飞书作为一款集成了IM、日历、文档、视频会议等功能的协同办公平台&#xff0c;其开放平台的能力正在被越来越多…

作者头像 李华
网站建设 2026/8/6 7:48:37

告别盲目投放:美诚数据看板助力优化低投入高效率营销

告别盲目投放&#xff1a;美诚数据看板助力优化低投入高效率营销对于许多中小企业和实体门店而言&#xff0c;传统的销售增长模式往往依赖于扩大销售团队规模。然而&#xff0c;无需大量招聘销售人员也能高效获客的数字化方案正成为更具性价比的选择。这种转变的核心不在于完全…

作者头像 李华
网站建设 2026/8/6 7:45:20

从单次操作到批量稳定:工程化思维解决自动化流程瓶颈

最近在折腾一些需要批量处理小物件的项目时&#xff0c;我遇到了一个挺典型的工程问题&#xff1a;单次手动操作很顺畅&#xff0c;但一到批量任务&#xff0c;效率就断崖式下跌&#xff0c;手忙脚乱不说&#xff0c;还容易出错。这让我想起一个更具体的场景——比如给一些模型…

作者头像 李华
网站建设 2026/8/6 7:42:51

3步解锁全球最大同人创作平台:AO3镜像站终极访问指南

3步解锁全球最大同人创作平台&#xff1a;AO3镜像站终极访问指南 【免费下载链接】AO3-Mirror-Site 项目地址: https://gitcode.com/gh_mirrors/ao/AO3-Mirror-Site 你是否曾经渴望探索全球最大的同人创作宝库&#xff0c;却因网络限制而无法触及&#xff1f;Archive o…

作者头像 李华
网站建设 2026/8/6 7:38:32

网页飘窗智能定位:从CSS基础到动态避让算法实战

1. 项目缘起&#xff1a;从“碍眼”到“点睛”的网页飘窗设计做前端开发或者网页设计的朋友&#xff0c;估计都遇到过这样的需求&#xff1a;产品经理或者运营同学拿着一个设计稿过来&#xff0c;指着某个角落说&#xff0c;“这里&#xff0c;我们需要一个活动弹窗/公告提示/客…

作者头像 李华
网站建设 2026/8/6 7:37:36

Cocos Creator TiledMap实战:从资源管理到性能优化的全流程避坑指南

1. 项目概述&#xff1a;当Cocos Creator遇上TiledMap如果你正在用Cocos Creator开发2D游戏&#xff0c;尤其是横版过关、RPG或者策略类项目&#xff0c;那么TiledMap&#xff08;瓦片地图&#xff09;几乎是一个绕不开的技术选型。它能把美术同学精心绘制的关卡地图&#xff0…

作者头像 李华