当前位置: 首页 > web >正文

17.Three.js 光照系统之《LightProbe》详解指南(含 Vue 3示例)

一、展示图效果示意 🎨

下图展示了一个典型的 LightProbe 使用场景:
球体在环境贴图和 LightProbe 配合下实现了逼真的环境光反射和柔和阴影:


二、LightProbe 是什么?🤔

LightProbe 是一种 基于环境贴图采样的间接光照。相比于直接光源(如 PointLight、DirectionalLight),它更侧重于提供 环境光(Ambient)和间接光照效果,常与 HDR 环境图或 PMREMGenerator 联合使用。

✨ 核心特性:

  • 📷 使用环境贴图采样 来计算光照影响

  • 🧠 对物体不产生直接阴影

  • 🌎 常用于室内环境、全局光照等高级光效


三、应用场景 📌

场景类型使用 LightProbe 的优势 🪄
逼真室内渲染模拟真实世界中墙壁、物体反射的间接光照
HDR 场景环境利用 PMREMGenerator + LightProbe 落地真实环境光
节省性能无需计算阴影,适合低性能设备的间接光模拟

四、与 AmbientLight 的区别对比 🔍

特性AmbientLightLightProbe
光照方向性❌ 无方向性✅ 有方向性(基于环境图)
强度控制✅ 有✅ 有
对场景影响简单均匀光照更真实的光照分布
推荐用途低配环境补光高级环境光,配合 HDR 使用

五、如何创建 LightProbe 📦

 
import { LightProbe } from 'three';const lightProbe = new LightProbe();
scene.add(lightProbe);

不过 LightProbe 本身不会起作用,除非你使用了 PMREMGenerator 生成的环境贴图:

import { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader.js';
import { PMREMGenerator } from 'three';const loader = new RGBELoader();
loader.load('environment.hdr', (hdrEquirect) => {const pmremGenerator = new PMREMGenerator(renderer);const envMap = pmremGenerator.fromEquirectangular(hdrEquirect).texture;const lightProbe = LightProbeGenerator.fromCubeTexture(envMap);scene.add(lightProbe);scene.environment = envMap;
});

六、常用 API 🌐

属性 / 方法说明
.intensity控制光照强度(默认值 1)💡
.sh.coefficientsSH 光照系数(高级用法)📈
LightProbeGenerator用于从环境贴图生成 LightProbe 的工具 🧪

七、使用 LightProbeGenerator 示例 🧪

import { LightProbeGenerator } from 'three/examples/jsm/lights/LightProbeGenerator.js';const probe = LightProbeGenerator.fromCubeTexture(envMap);
scene.add(probe);

八、Vue 3 Composition API 实战 🎮

<script setup lang="ts">
import { onMounted } from 'vue'
import * as THREE from 'three'
import { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader'
import { PMREMGenerator } from 'three'
import { LightProbeGenerator } from 'three/examples/jsm/lights/LightProbeGenerator'let scene: THREE.Scene
let camera: THREE.PerspectiveCamera
let renderer: THREE.WebGLRendereronMounted(() => {init()
})function init() {scene = new THREE.Scene()camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000)camera.position.set(0, 1, 3)renderer = new THREE.WebGLRenderer({ antialias: true })renderer.setSize(window.innerWidth, window.innerHeight)document.body.appendChild(renderer.domElement)const loader = new RGBELoader()const pmremGen = new PMREMGenerator(renderer)loader.load('/assets/env.hdr', (hdrEquirect) => {const envMap = pmremGen.fromEquirectangular(hdrEquirect).textureconst probe = LightProbeGenerator.fromCubeTexture(envMap)scene.add(probe)scene.environment = envMapconst geo = new THREE.SphereGeometry(1, 64, 64)const mat = new THREE.MeshStandardMaterial({ metalness: 1, roughness: 0.2, envMap })const mesh = new THREE.Mesh(geo, mat)scene.add(mesh)animate()})
}function animate() {requestAnimationFrame(animate)renderer.render(scene, camera)
}
</script><template><div class="w-full h-screen overflow-hidden"></div>
</template>

九、常见问题 FAQ 🧠

❓ 为什么我添加了 LightProbe 却没效果?

LightProbe 依赖 HDR 或 CubeTexture 环境贴图,需要配合 PMREMGeneratorLightProbeGenerator 使用。

❓ LightProbe 和环境贴图有什么关系?

LightProbe 会从环境贴图采样生成球谐光照系数,提供模拟真实反射的间接光。


🔚 十、推荐阅读 & 资源 📚

名称链接说明
LightProbe 官方文档🌐 官方 API 说明
LightProbe 示例🔬 官方场景演示
LightProbeGenerator 源码🔧 光照采样生成器源码
three.js Journey(英文)🎓 权威 Three.js 教程

📝 结语

LightProbe 是构建真实感场景的重要一环,尤其在使用 HDR 贴图时更是锦上添花!🎉掌握它,就掌握了间接光照与环境映射的核心力量。希望本文能帮你快速上手并深入理解!🔥

http://www.xdnf.cn/news/4499.html

相关文章:

  • 准确--Notepad++ 实用的插件介绍
  • 【论文阅读】HunyuanVideo: A Systematic Framework For Large Video Generative Models
  • Linux系统安装指南
  • vue2中的组件注册
  • Landsat WRS介绍 及 Polygon定位WRS算法
  • WPF MVVM入门系列教程(六、ViewModel案例演示)
  • [Windows] 蓝山看图王 1.0.3.21021
  • JGL021垃圾渗滤液小试实验装置
  • 三、大模型原理:图文解析MoE原理
  • NGINX `ngx_http_charset_module` 字符集声明与编码转换
  • 【CSS】Grid 的 auto-fill 和 auto-fit 内容自适应
  • goland无法debug
  • 做PPT的感想
  • 在IPv6头部中,Next Header字段
  • 基于 ISO 22301 与国产化实践的 BCM 系统菜单设计指南
  • 计算机网络中相比于RIP,路由器动态路由协议OSPF有什么优势?
  • 服务器数据恢复—硬盘坏道导致EqualLogic存储不可用的数据恢复
  • 2023年华为杯研究生数学建模竞赛B题DFT类矩阵的整数分解逼近
  • ActiveMQ 源码剖析:消息存储与通信协议实现(二)
  • 英伟达发布Llama-Nemotron系列新模型,性能超越DeepSeek-R1
  • 初学Python爬虫
  • Spring AI 之 AI核心概念
  • 第十一节:图像处理基础-图像阈值处理
  • ES6入门---第三单元 模块七: Proxy的使用+Reflect的使用
  • 【备考高项】模拟预测题(二)综合知识及答案详解
  • PostgreSQL 常用SQL操作命令
  • 南京市出台工作方案深化“智改数转网联”,物联网集成商从“困局”到“蓝海”!
  • Linux 安全加固
  • Python与C++类型对照及常用操作
  • 以太联-Intellinet 561648 户外防破坏千兆PoE延长器-- 稳定可靠,全天候守护网络连接