Three.js 地球扫描教程
📅 2026/7/7 18:10:20
👁️ 次浏览
地球扫描 ·Earth Scan· ▶ 在线运行案例案例合集三维可视化功能案例threehub.cn开源仓库github地址https://github.com/z2586300277/three-cesium-examples400个案例代码:网盘链接你将学到什么ShaderMaterial 自定义着色器实现核心视觉效果OrbitControls 相机轨道交互requestAnimationFrame渲染循环与resize自适应效果说明本案例演示地球扫描效果基于 WebGL 实现「地球扫描」可视化效果附完整可运行源码核心用到 ShaderMaterial、OrbitControls。建议先打开文首在线案例查看动态画面再对照下方源码逐步理解。核心概念Scene / Camera / WebGLRenderer构成最小渲染闭环大场景可开logarithmicDepthBuffer缓解 Z-fighting。ShaderMaterial通过uniforms 自定义 GLSL 控制逐像素/逐点效果透明粒子常配合depthTest: false。OrbitControls提供轨道旋转/缩放开启enableDamping后需在 animate 中controls.update()。实现步骤搭建 Scene、PerspectiveCamera、WebGLRenderer挂载 canvas 并处理resize定义 uniforms / onBeforeCompile 或 ShaderMaterial编写 GLSL 与材质参数创建 OrbitControls及 Raycaster 等交互控件若源码包含在requestAnimationFrame循环中更新状态并 renderCesium 为viewer.render或自动渲染代码要点import * as THREE from threeimport { OrbitControls } from three/examples/jsm/controls/OrbitControls.js import { GUI } from three/examples/jsm/libs/lil-gui.module.min.jsconst box document.getElementById(box)const scene new THREE.Scene()const camera new THREE.PerspectiveCamera(50, box.clientWidth / box.clientHeight, 0.1, 1000)camera.position.set(0, 8, 8)const renderer new THREE.WebGLRenderer({ antialias: true, alpha: true, logarithmicDepthBuffer: true })renderer.setSize(box.clientWidth, box.clientHeight)box.appendChild(renderer.domElement)const controls new OrbitControls(camera, renderer.domElement)controls.enableDamping truewindow.onresize () {renderer.setSize(box.clientWidth, box.clientHeight)camera.aspect box.clientWidth / box.clientHeightcamera.updateProjectionMatrix()}const earthGeometry new THREE.SphereGeometry(2.5, 32, 16)const earthMaterial new THREE.MeshBasicMaterial({ map: new THREE.TextureLoader().load(FILE_HOST threeExamples/shader/earth1.jpg) })const earth new THREE.Mesh(earthGeometry, earthMaterial)scene.add(earth)const geometry new THREE.SphereGeometry(3, 32, 16)const material new THREE.ShaderMaterial({uniforms: {iTime: { value: 0.0 },pointNum: { value: new THREE.Vector2(64, 32) },uColor: { value: new THREE.Color(#bbd9ec) }},transparent: true,vertexShader:varying vec2 vUv; void main(){ vUvuv; gl_Position projectionMatrixmodelViewMatrixvec4(position, 1.0); },fragmentShader:float PI acos(-1.0); uniform vec3 uColor; uniform vec2 pointNum; uniform float iTime; varying vec2 vUv; void main(){ vec2 uv vUv vec2(0.0, iTime); float current abs(sin(uv.y * PI) ); if(current 0.99) { currentcurrent*0.5; } float d distance(fract(uv * pointNum), vec2(0.5, 0.5)); if(d current*0.2 ) { discard; } else { gl_FragColor vec4(uColor,current); } }})const folder new GUI()folder.addColor(material.uniforms.uColor, value)folder.add(material.uniforms.pointNum.value, x, 1, 128).name(pointNumX)folder.add(material.uniforms.pointNum.value, y, 1, 128).name(pointNumY)const sphere new THREE.Mesh(geometry, material)scene.add(sphere)animate()function animate() {earth.rotation.y 0.002material.uniforms.iTime.value 0.002requestAnimationFrame(animate)controls.update()renderer.render(scene, camera)}完整源码GitHub小结本文提供地球扫描完整 Three.js 源码与在线 Demo建议先运行案例再改 uniform/参数做二次实验更多 Three.js 实战案例见 three-cesium-examples 合集 与 GitHub 开源仓库
改一行,崩一片:接手「屎山」代码的人,都懂
入职头一周,最让人腿软的,往往不是写新功能。
是你的 leader 拍拍你肩膀,指着一个跑了好几年、没人愿意碰的老项目说:「这块以后归你了,先…
📅 2026/7/7 18:10:20
这是我的第471篇原创文章。一、核心原理——用“公司团队”比喻秒懂让我们把整个计算机系统比作一个高科技研发公司。CPU(中央处理器):公司的CEO兼首席架构师。他思维缜密,擅长处理复杂的逻辑判断、任务调度和串行决策(…
📅 2026/7/7 18:08:20
博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…
📅 2026/7/7 18:08:20
深度解析PROPKA 3:蛋白质pKa预测的实战指南与算法实现 【免费下载链接】propka PROPKA predicts the pKa values of ionizable groups in proteins and protein-ligand complexes based in the 3D structure. 项目地址: https://gitcode.com/gh_mirrors/pr/propka…
📅 2026/7/7 19:06:26
为什么选择kbox?openEuler崩溃消息收集的5大核心优势 【免费下载链接】kbox the crash message collector for openEuler 项目地址: https://gitcode.com/openeuler/kbox
前往项目官网免费下载:https://ar.openeuler.org/ar/
kbox作为openEuler系…
📅 2026/7/7 19:06:26
开启星露谷物语的无限可能:SMAPI模组框架入门指南 【免费下载链接】SMAPI The modding API for Stardew Valley. 项目地址: https://gitcode.com/gh_mirrors/smap/SMAPI
如果你已经体验过星露谷物语的田园生活,想要为游戏注入新的活力,…
📅 2026/7/7 19:06:26
如何用.NET多线程工具让加密压缩包密码恢复速度提升20倍? 【免费下载链接】ArchivePasswordTestTool 利用7zip测试压缩包的功能 对加密压缩包进行自动化测试密码 项目地址: https://gitcode.com/gh_mirrors/ar/ArchivePasswordTestTool
如果你曾经面对过忘记…
📅 2026/7/7 19:06:26
donau-slurm-wrappers安装与配置:从零开始的10步快速部署指南 【免费下载链接】donau-slurm-wrappers donau-slurm-wrappers provide some scripts for Slurm Users to submit and manage jobs in Donau cluster environment 项目地址: https://gitcode.com/opene…
📅 2026/7/7 19:06:26
揭秘GAIA-DataSet:6500指标的开源AIOps数据集如何加速智能运维研究 【免费下载链接】GAIA-DataSet GAIA, with the full name Generic AIOps Atlas, is an overall dataset for analyzing operation problems such as anomaly detection, log analysis, fault local…
📅 2026/7/7 19:04:26
CentOS SSH连接故障排查:从基础检查到深度修复的完整指南引言当你尝试通过Xshell或其他SSH客户端连接CentOS服务器时,突然遭遇"Connection refused"或"Connection timed out"的错误提示,这种经历对任何运维人员或开发者来…
📅 2026/7/7 0:00:45
B站评论删除API逆向工程实战:关键参数解析与自动化操作指南1. 理解B站评论删除机制的核心逻辑在视频平台内容管理中,评论删除功能涉及复杂的权限验证和数据交互流程。B站的评论删除API采用了一套基于Web安全标准的防护机制,主要依赖三个关键参…
📅 2026/7/7 0:00:45
1. 项目概述:为什么Java安全是红蓝对抗的焦点在当前的网络安全攻防演练,也就是我们常说的红蓝对抗中,Java应用一直是双方交锋的核心战场。这不仅仅是因为Java在企业级应用、金融系统和大型互联网后台中无处不在,更因为其技术栈的复…
📅 2026/7/7 0:00:45
1. 项目背景与核心需求 在嵌入式系统开发中,快速精确的数据检索是一个常见但极具挑战性的需求。特别是在工业控制、医疗设备和物联网终端等场景下,系统往往需要在毫秒级时间内完成关键参数的读取和写入操作。传统基于Flash存储的方案存在擦写次数有限、操…
📅 2026/7/7 12:08:23
1. 工业电流环信号传输的基础认知在工业自动化领域,4-20mA电流环传输技术已经持续服役超过半个世纪。这种看似简单的信号传输方式之所以能经久不衰,核心在于其独特的抗干扰能力——电流信号在长距离传输时几乎不受线路电阻和电压波动的影响。我曾在化工厂…
📅 2026/7/7 9:08:28
最近在项目里尝试用 YOLO 做目标检测,从环境搭建到模型训练,再到推理部署,整个过程踩了不少坑。网上的资料虽然多,但要么版本老旧,要么步骤零散不成体系,对于刚入门的新手来说,很容易卡在某个环…
📅 2026/7/7 6:33:36
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/7 9:08:31
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/7 9:08:30
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/7 4:32:18