three.js 热力图

使用three.js 和 heatMap.js 实现在 三维场景中展示热力图的效果,以下代码复制粘贴即可在你的本机运行。

在线编辑运行预览可方位 https://threehub.cn/#/codeMirror?navigation=ThreeJS&classify=expand&id=heatmap3D
在 https://threehub.cn 中还有很多案例

在这里插入图片描述

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<script src="https://z2586300277.github.io/three-cesium-examples/js/heatmap.js"></script>
<script type="importmap">
{"imports": {"three": "https://threejs.org/build/three.module.min.js","three/addons/": "https://threejs.org/examples/jsm/","three/examples/jsm/": "https://threejs.org/examples/jsm/","gsap": "https://z2586300277.github.io/3d-file-server/js/gsap/index.js","postprocessing": "https://z2586300277.github.io/three-cesium-examples/js/postprocessing.js","dat.gui": "https://z2586300277.github.io/three-cesium-examples/js/dat.gui.module.js","@tweenjs/tween.js": "https://z2586300277.github.io/three-cesium-examples/js/tween.esm.js"}
}
</script>
<style>body {margin: 0;padding: 1px;box-sizing: border-box;background-color: #1f1f1f;display: flex;flex-direction: column;width: 100vw;height: 100vh;overflow: hidden;}#box {width: 100%;height: 100%;}
</style>
</head>
<body>
<div id="box"></div>
<script type="module">
import * as THREE from 'three';
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js'
import * as dat from 'dat.gui'
/* heatmap.js 自行安装module 方式引入  此处我为src 方式引入  */const DOM = document.getElementById('box')const scene = new THREE.Scene()const camera = new THREE.PerspectiveCamera(75, DOM.clientWidth / DOM.clientHeight, 0.1, 1000)camera.position.set(0, 40, 40)const renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true, logarithmicDepthBuffer: true })renderer.setSize(DOM.clientWidth, DOM.clientHeight)DOM.appendChild(renderer.domElement)new OrbitControls(camera, renderer.domElement)scene.add(new THREE.AxesHelper(500), new THREE.AmbientLight(0xffffff, 3))window.onresize = () => {renderer.setSize(DOM.clientWidth, DOM.clientHeight)camera.aspect = DOM.clientWidth / DOM.clientHeightcamera.updateProjectionMatrix()}animate()// 渲染 
function animate() {renderer.render(scene, camera)requestAnimationFrame(animate)}const getRandom = (max, min) => Math.round((Math.random() * (max - min + 1) + min) * 10) / 10var heatmap = h337.create({container: document.createElement('div'),width: 256,height: 256,blur: '0.8',radius: 10
});var i = 0, max = 10, data = [];
while (i < 2000) {data.push({ x: getRandom(1, 256), y: getRandom(1, 256), value: getRandom(1, 6) });i++;
}heatmap.setData({max: max,data: data
});const texture = new THREE.CanvasTexture(heatmap._renderer.canvas);
const geometry = new THREE.PlaneGeometry(50, 50, 1000, 1000);
geometry.rotateX(-Math.PI * 0.5);const material = new THREE.ShaderMaterial({uniforms: {heightMap: { value: texture },heightRatio: { value: 5 }},vertexShader: `	uniform sampler2D heightMap;uniform float heightRatio;varying vec2 vUv;varying float hValue;varying vec3 cl;void main() {vUv = uv;vec3 pos = position;cl = texture2D(heightMap, vUv).rgb;hValue = texture2D(heightMap, vUv).r;pos.y = hValue * heightRatio;gl_Position = projectionMatrix * modelViewMatrix * vec4(pos,1.0);}`,fragmentShader: `varying float hValue;varying vec3 cl;void main() {float v = abs(hValue - 1.);gl_FragColor = vec4(cl, .8 - v * v) ; }`,transparent: true,
})const mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);new dat.GUI().add(mesh.material.uniforms.heightRatio, "value", 1, 15).name("heightRatio")</script>
</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/53207.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣 中等 2300.咒语和药水的成功对数

文章目录 题目介绍解法 题目介绍 解法 class Solution {public int[] successfulPairs(int[] spells, int[] potions, long success){Arrays.sort(potions);int n spells.length, m potions.length;int[] pairs new int[n];for (int i 0; i < n; i) {int left 0, righ…

社团周报系统可行性研究-web后端框架对比-springboot,django,gin

对于目前市面上web后端框架&#xff0c;我主要了解到的就是springboot&#xff0c;django gin等&#xff0c;分别对应java python go三种语言&#xff0c;目前我比较熟悉的就是springboot 目录 spring boot框架 简介 优点 缺点 适用场景 与需求匹配度 django框架 简介…

【leetcode】树形结构习题

二叉树的前序遍历 返回结果&#xff1a;[‘1’, ‘2’, ‘4’, ‘5’, ‘3’, ‘6’, ‘7’] 144.二叉树的前序遍历 - 迭代算法 给你二叉树的根节点 root &#xff0c;返回它节点值的 前序 遍历。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,…

【相机方案(2)】V4L2 支持相机图像直接进入GPU内存吗?DeepStream 确实可以将图像数据高效地放入GPU内存进行处理!

V4L2 支持相机图像直接进入GPU内存吗&#xff1f; V4L2&#xff08;Video4Linux Two&#xff09;是Linux内核中用于视频捕获和播放的API&#xff0c;它本身并不直接支持将相机捕获的图像数据直接拷贝到GPU内存而不经过CPU内存。V4L2主要关注于视频设备的控制、数据的捕获和播放…

汉王手写签批控件如何在谷歌、火狐、Edge等浏览器使用

背景 近日&#xff0c;有网友咨询汉王手写签批控件是否可以通过allWebPlugin中间件技术加载到谷歌、火狐、Edge等浏览器&#xff1f;为此&#xff0c;笔者详细了解了一下汉王手写签批控件&#xff0c;它是一个标准的ActiveX控件&#xff0c;曾经主要在IE浏览器使用&#xff0c;…

C语言 | Leetcode C语言题解之第401题二进制手表

题目&#xff1a; 题解&#xff1a; char** readBinaryWatch(int turnedOn, int* returnSize) {char** ans malloc(sizeof(char*) * 12 * 60);*returnSize 0;for (int i 0; i < 1024; i) {int h i >> 6, m i & 63; // 用位运算取出高 4 位和低 6 位if (h &…

Laravel邮件发送:从配置到发邮件的指南!

Laravel邮件发送功能如何实现&#xff1f;怎么使用Laravel发信&#xff1f; Laravel作为一款流行的PHP框架&#xff0c;提供了强大且易用的邮件发送功能。AokSend将详细介绍如何从配置到实际发送邮件的全过程&#xff0c;帮助你快速掌握Laravel邮件发送的技巧。 Laravel邮件发…

NEXT.js 中间件 NextResponse.redirect 无效

原代码 // src/middleware.js import { NextResponse } from next/serverexport function middleware(request) {handleLocale(request) }// 处理国际化 const handleLocale (request) > {const locales [zh_CN, en_US, ja_JP]const { pathname } request.nextUrlconst …

[网络][知识]计算机端口详细列表

计算机端口介绍 我们常常会在各类的技术文章中见到诸如135、137、139、443之类的“端口”,可是这些端口究竟有什么用呢?它会不会给我们的计算机带来潜在的威胁呢?究竟有多少端口是有用的?想要了解的话,就跟我来吧:D 端口:0 服务:Reserved 说明:通常用于分析操作系…

【vue3】vue3.5

vue3.5是9.1发布的&#xff0c;还挺热乎的&#xff0c;赶快学习起来&#xff01;&#xff01;&#xff01; 组件属性结构解析赋值 组件属性结构解析赋值&#xff0c;高度提高开发体验&#xff0c;这个特性曾经在vue3.3提出过&#xff0c;然后3.4废弃&#xff0c;终于3.5稳定了。…

linux故障排查思路

1&#xff0c;方法论&#xff0c;带着这样的思路来思考 What&#xff1a;现象是什么样的 When&#xff1a;什么时候发生 Why&#xff1a;为什么会发生 Where&#xff1a;哪个地方发生的问题 How much&#xff1a;耗费了多少资源 How to do&#xff1a;怎么解决问题 2&#xf…

对 JavaScript 原型的理解

笔者看了一些有关 JavaScript 原型的文章有感而发&#xff0c;就将所感所悟画了下来如果有理解错误和不足的地方&#xff0c;欢迎各位大佬指出&#xff0c;笔者感激不尽

2024华韵视听大会 “发现佛山”文旅影视产业调研活动-娅米的阳光城堡

9月13日上午&#xff0c;作为“2024华韵视听大会”系列活动之一&#xff0c;“发现佛山”文旅影视产业调研活动在佛山市高明区举行。来自“长风破浪”青年音乐人唱享计划及青年影视人扶持计划&#xff08;下简称“长风破浪”计划&#xff09;的青年唱作人左其铂、陈柏川和青年歌…

输入5个数,求中值,verilog实现

1实现思路 有5个数a,b,c,d,e 将其分为3组&#xff0c;ab, cd, e e留到最后再比较&#xff0c; 先比较ab 和 cd 设得出了ab的较小值 a a < b 设得出了cd的较小值 c c < d 第一个分支 比较ac, 设a < c 那么 a < c < d &#xff0c; a < b 将b&#xff0c;e…

2024年超好用的公司加密软件分享|十款企业防泄密软件推荐

在数字化时代&#xff0c;企业数据的安全性变得尤为重要。随着网络攻击和数据泄露事件的频发&#xff0c;企业需要采取有效的措施来保护敏感信息。加密软件作为一种重要的数据保护工具&#xff0c;能够帮助企业防止数据泄露和未经授权的访问。本文将为您推荐十款2024年超好用的…

【梯度下降算法学习笔记】

梯度下降单参数求解 经过之前的学习我们来引入梯度下降的理念 α \alpha α为学习率 w 1 w 初 − α ∂ J ( w ) ∂ w w_1w_初-\alpha\frac{\partial J(w)}{\partial w} w1​w初​−α∂w∂J(w)​ w 2 w 1 − α ∂ J ( w 1 ) ∂ w 1 w_2w_1-\alpha\frac{\partial J(w_1)}…

【车载以太网】【SOME/IP】Wireshark 解析

目录 ​​​​​​​Wireshark 官方插件 相关代码: 启用协议插件 Lua插件 测试数据包 Wireshark 下载链接:Wireshark Go DeepSOMEIP插件介绍:https://www.wireshark.org/docs/dfref/s/someip.html官方插件 Wireshark从3.2版本开始支持SOME/IP,启用相应的插件即可以…

pikachu XXE(XML外部实体注入)通关

靶场&#xff1a;pikachu 环境: 系统&#xff1a;Windows10 服务器&#xff1a;PHPstudy2018 靶场&#xff1a;pikachu 关卡提示说&#xff1a;这是一个接收xml数据的api 常用的Payload 回显 <?xml version"1.0"?> <!DOCTYPE foo [ <!ENTITY …

.NET内网实战:通过命令行解密Web.config

01阅读须知 此文所节选自小报童《.NET 内网实战攻防》专栏&#xff0c;主要内容有.NET在各个内网渗透阶段与Windows系统交互的方式和技巧。 02基本介绍 03编码实现 在.NET应用系统中&#xff0c;保护数据库连接字符串的安全性至关重要。.NET 提供了一种通过 DataProtectionC…

【Git原理与使用】多人协作与开发模型(2)

目录 一、多人协作 (一)多人协作一 1、情景 2、 origin/master 3、git branch 4、远程链接 5、总结 (二)多人协作二 1、引言 2、情景 3、流程 4、解决方法 二、企业级开发模型 1、DevOps背景 2、DevOps是什么 3、DevCps与git的关系 4、系统开发环境 5、Git分支设计规范 6、企业…