CubeTexture:环境贴图与反射的基础
立方纹理(CubeTexture)由 6 张图片组成,分别代表立方体的 6 个方向。常见用途:
- 天空盒(Skybox)
- 环境贴图(Environment Map):让金属/高光材质出现真实反射
加载立方纹理(天空盒)
ts
import * as THREE from "three";
const loader = new THREE.CubeTextureLoader();
const cubeTexture = loader.load([
"/textures/sky/px.jpg",
"/textures/sky/nx.jpg",
"/textures/sky/py.jpg",
"/textures/sky/ny.jpg",
"/textures/sky/pz.jpg",
"/textures/sky/nz.jpg",
]);
scene.background = cubeTexture;作为环境贴图(PBR 反射)
对 MeshStandardMaterial / MeshPhysicalMaterial,推荐把环境贴图赋给:
ts
scene.environment = cubeTexture;这比逐个材质设置 envMap 更省心,也更符合全局环境光照的组织方式。
进阶提示:HDRI 与 PMREM
真实项目里更常用 HDRI(.hdr)作为环境贴图,并通过 PMREM 预过滤,得到更自然的反射与高光。Three.js 提供了 RGBELoader 与 PMREMGenerator 来完成这件事。
练习
- 做一个天空盒:让场景背景变成环境图
- 放一个金属球(
metalness=1、roughness可调),观察环境反射如何变化
