Three.js 灯罩教程
灯罩 ·Lampshade· ▶ 在线运行案例案例合集三维可视化功能案例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()。实现步骤创建 OrbitControls 并处理 resize定义 uniforms在 rAF 中更新并 render搭建灯光与环境如有requestAnimationFrame 循环 update render代码要点import {Color, CylinderGeometry, Group, Mesh, MeshBasicMaterial, MeshStandardMaterial, PerspectiveCamera, PlaneGeometry, PointLight, Scene, ShaderMaterial, SphereGeometry, WebGLRenderer } from three import { OrbitControls } from three/examples/jsm/controls/OrbitControls.jsconst size { width: window.innerWidth, height: window.innerHeight } const scene new Scene() scene.background new Color(#070630)const camera new PerspectiveCamera(45, size.width / size.height, 0.1, 1000) camera.position.set(30, 30, 30)const renderer new WebGLRenderer({ antialias: true }) renderer.setSize(size.width, size.height) renderer.setPixelRatio(window.devicePixelRatio) document.body.appendChild(renderer.domElement)const controls new OrbitControls(camera, renderer.domElement)class DeskLamp extends Group { constructor() { super() this.#createWick() this.#createLampshade() }/*灯芯/ #createWick() { const geometry new SphereGeometry(1, 32, 16, 0, Math.PI * 2, 0, Math.PI / 2) const material new MeshBasicMaterial({ color: 0xffffff }) const sphere new Mesh(geometry, material) sphere.position.set(0, 3, 0) this.#createLight(sphere) this.add(sphere) }/*灯罩/ #createLampshade() { const cylinderGeometry new CylinderGeometry(1, 5, 3, 32) const cylinderMaterial new ShaderMaterial({ transparent: true, uniforms: { color: { value: new Color(#CB00E3) } }, vertexShader:varying vec2 vUv; void main() { vUv uv; gl_Position projectionMatrixmodelViewMatrixvec4(position, 1.0); }, fragmentShader:uniform vec3 color; varying vec2 vUv; void main() { gl_FragColor vec4(color, vUv.y); }}) const cylinder new Mesh(cylinderGeometry, cylinderMaterial) cylinder.position.set(0, 1.7, 0) this.add(cylinder) }/*点光源/ #createLight(mesh) { const pointLight new PointLight(0xffffff, 1, 100) pointLight.power 1000 mesh.add(pointLight) } }const light1 new DeskLamp() light1.position.set(0, 10, 0) scene.add(light1)const light2 new DeskLamp() light2.position.set(10, 10, 0) scene.add(light2)const light3 new DeskLamp() light3.position.set(0, 10, 10) scene.add(light3)/**创建地面/ const planeGeometry new PlaneGeometry(100, 100) const planeMaterial new MeshStandardMaterial({ color: 0x999999, side: 2 }) const plane new Mesh(planeGeometry, planeMaterial) plane.rotation.x -Math.PI / 2 scene.add(plane)animate() function animate() {renderer.render(scene, camera) requestAnimationFrame(animate) }完整源码GitHub小结本文提供灯罩完整 Three.js 源码与在线 Demo建议先运行案例再改 uniform/参数做二次实验更多 Three.js 实战案例见 three-cesium-examples 合集 与 GitHub 开源仓库

相关新闻

如何5步完成中兴光猫配置解密:终极免费工具使用指南

如何5步完成中兴光猫配置解密:终极免费工具使用指南

如何5步完成中兴光猫配置解密:终极免费工具使用指南 【免费下载链接】ZET-Optical-Network-Terminal-Decoder 项目地址: https://gitcode.com/gh_mirrors/ze/ZET-Optical-Network-Terminal-Decoder 中兴光猫配置解密工具是一款专为网络技术爱好者和初级网络…

2026/7/27 5:10:39 阅读更多 →
2026无水印短视频怎么下载,无水印短视频下载方法与工具教程

2026无水印短视频怎么下载,无水印短视频下载方法与工具教程

在日常个人素材整理、内容学习、自有作品备份的场景中,很多用户都需要获取无水印短视频素材。平台自带的保存功能大多会自动叠加水印,影响素材的存档和二次整理使用,因此靠谱的无水印短视频下载方法、适配多场景的无水印短视频下载工具&#…

2026/8/2 16:37:19 阅读更多 →
前端 ttf / woff2 字体资源完整优化方案

前端 ttf / woff2 字体资源完整优化方案

前端 ttf / woff2 字体资源完整优化方案一、核心基础认知 字体格式优先级 woff2 > woff > ttf > otf • woff2:压缩率最高(比ttf小40%~70%),现代浏览器全支持,生产首选 • ttf:无压缩,…

2026/7/28 22:40:12 阅读更多 →

最新新闻

BP-8913 USB声卡的端到端语音延迟构成拆解

BP-8913 USB声卡的端到端语音延迟构成拆解

一、为什么要专门讨论 USB 声卡的延迟BP-8913 是 USB AUDIO 声卡模块:USB 免驱即插即用,支持 Windows/macOS/Linux,内置 Codec,支持 USB UAC 协议,模拟音频输入输出对外接麦克风和喇叭,工作温度 -20℃~70℃…

2026/8/2 21:19:57 阅读更多 →
C++实现密立根油滴实验数据处理:从物理公式到代码实践

C++实现密立根油滴实验数据处理:从物理公式到代码实践

1. 项目缘起:从物理实验到代码实现做物理实验,尤其是像密立根油滴实验这种经典的电学实验,最头疼的往往不是操作仪器,而是后续那一大堆繁琐的数据处理。我记得当年在实验室里,几个人围着一台示波器(哦不&am…

2026/8/2 21:19:57 阅读更多 →
AR-1106角度分辨率的非线性:时延差到角度的映射

AR-1106角度分辨率的非线性:时延差到角度的映射

一、0-180 输出背后的问题AR-1106 是声源定位模组:0-180 半平面定位,5 米最远触发距离,9600bps 串口输出角度参数(16 进制,例如 90 输出 0x5A),内置 SG90 舵机驱动,带 AI 降噪。从系…

2026/8/2 21:19:57 阅读更多 →
Excalidraw终极指南:如何在5分钟内搭建免费协作白板

Excalidraw终极指南:如何在5分钟内搭建免费协作白板

Excalidraw终极指南:如何在5分钟内搭建免费协作白板 【免费下载链接】excalidraw Virtual whiteboard for sketching hand-drawn like diagrams 项目地址: https://gitcode.com/GitHub_Trending/ex/excalidraw 你是否厌倦了复杂的图表工具,需要一…

2026/8/2 21:19:57 阅读更多 →
VS2022中std::numeric_limits::max编译错误:宏污染根源与NOMINMAX解决方案

VS2022中std::numeric_limits::max编译错误:宏污染根源与NOMINMAX解决方案

1. 问题现象与根源剖析如果你最近在Visual Studio 2022里写C代码&#xff0c;特别是涉及到数值边界处理时&#xff0c;突然遇到了std::numeric_limits<T>::max()或min()编译报错&#xff0c;别慌&#xff0c;你不是一个人。这个看似简单的标准库函数调用&#xff0c;在VS…

2026/8/2 21:19:57 阅读更多 →
题解:洛谷 P1458 [USACO2.1] 顺序的分数 Ordered Fractions

题解:洛谷 P1458 [USACO2.1] 顺序的分数 Ordered Fractions

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来&#xff0c;并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构&#xff0c;旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大…

2026/8/2 21:18:56 阅读更多 →

日新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流&#xff1a;一个核心问题的诞生想象一下&#xff0c;你是一个城市供水系统的总工程师。你的城市有多个水源&#xff08;水库&#xff09;&#xff0c;需要通过一个复杂的地下管道网络&#xff0c;将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/2 0:00:38 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/2 0:00:38 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起&#xff1a;为什么我们需要互相关几年前&#xff0c;我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号&#xff0c;理论上它们接收到的声音波形应该非常相似&#xff0c;只是由于麦克风位置不同&#xff…

2026/8/2 0:00:38 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流&#xff1a;一个核心问题的诞生想象一下&#xff0c;你是一个城市供水系统的总工程师。你的城市有多个水源&#xff08;水库&#xff09;&#xff0c;需要通过一个复杂的地下管道网络&#xff0c;将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/2 0:00:38 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/2 0:00:38 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起&#xff1a;为什么我们需要互相关几年前&#xff0c;我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号&#xff0c;理论上它们接收到的声音波形应该非常相似&#xff0c;只是由于麦克风位置不同&#xff…

2026/8/2 0:00:38 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速&#xff1a;macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/2 6:34:16 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南&#xff1a;3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗&#xff1f;ncmdump解密工具帮你轻松解决这个困…

2026/8/2 2:47:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片&#xff1a;为英语学习 App 打造桌面级学习助手适用平台&#xff1a;HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0&#xff08;API 26 Beta&#xff09;新增了 AgentCard 智能体卡片能力&#xff0c;这是继 HMAF&#xff08;鸿蒙智能体框架&#x…

2026/8/2 0:23:22 阅读更多 →