Skip to content

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 提供了 RGBELoaderPMREMGenerator 来完成这件事。

练习

  • 做一个天空盒:让场景背景变成环境图
  • 放一个金属球(metalness=1roughness 可调),观察环境反射如何变化