
three.js 编辑器的天空与环境系统本文围绕three.js 编辑器一款基于 Three.js 的 AI 驱动可视化低代码编辑器展开。- 在线预览 https://z2586300277.github.io/threejs-editor/- GitHub 开源仓库 https://github.com/z2586300277/three-editor- 文档地址 https://z2586300277.github.io/three-editor/docs/dist天空与环境是 3D 场景的“气氛组”却常常因为配置繁琐而被忽略。three.js 编辑器把天空盒、环境贴图、IBL、HDR 反射、地面天空等能力整合成一套可视化环境系统让用户点几下就能改变整个场景的氛围。六面天空盒编辑器右侧面板提供了一个天空盒选择器内置“蓝天”、“晴天”、“森林”等素材套。每个素材套由六张1.png到6.png组成的立方体贴图。点击“设为天空”编辑器会调用scene.setSceneBackground把这六张图拼接成CubeTexture并设置为场景背景点击“设为环境”则会把同套贴图作为环境贴图影响场景中所有 PBR 材质的环境反射。这种设计让用户可以非常直观地切换场景氛围从科技感十足的深蓝天空切换到阳光明媚的户外再到森林环绕的自然环境整个过程不需要写任何代码。HDR 与 IBL 环境对于需要高质量反射的场景three.js 编辑器提供了基于 HDR 的环境方案。groundSky组件使用RGBELoader加载 HDR 全景图并通过GroundedSkybox生成一个接地天空盒让远景与地平线自然衔接。roomEnv组件则使用 Three.js 内置的RoomEnvironment配合PMREMGenerator生成一张 256 或 512 分辨率的 PMREM 环境贴图让金属与玻璃材质呈现出逼真的室内反射。这些组件不仅设置背景还会把生成的环境贴图赋给场景中物体的envMap从而激活 IBL 照明。用户只需拖入组件整个场景的明暗与反射质感就会同步提升。动态环境反射在某些展示场景中静态环境贴图还不够。cubeEnvMap组件使用THREE.CubeCamera每帧从模型中心拍摄周围环境并把渲染结果作为材质的envMap。当模型在场景中移动或者周围物体发生变化时反射也会实时更新。这种动态反射尤其适合汽车展示、珠宝展示等对镜面反射要求极高的场景。环境配置的持久化天空与环境的状态会被保存到场景 JSON 中。template.json中的scene.backgroundUrls、environmentEnabled等字段记录了当前使用的环境设置。切换场景或重新加载时编辑器会自动还原天空盒、环境贴图和背景模糊强度确保视觉一致性。AI 一键换天AI 助手封装了setSceneSkybox与setSceneEnvironment两个动作。用户可以说“把天空换成晴天并开启环境反射”AI 会自动匹配素材套 URL调用对应接口完成设置。对于自定义 HDR 或立方体贴图AI 也能接收 URL 参数直接应用。代码一瞥下面展示了右侧面板中切换天空盒与环境贴图的核心逻辑const setSky (v) {const set datalist.find(i i.name v); if (!set.url) return threeEditor.scene.background null; threeEditor.scene.setSceneBackground( Array.from({ length: 6 }, (_, i) ${set.url}${i 1}.png) ); };const setEnv (v) { const set datalist.find(i i.name v); if (!set.url) return threeEditor.scene.envBackground null; threeEditor.scene.setEnvBackground( Array.from({ length: 6 }, (_, i) ${set.url}${i 1}.png) ); threeEditor.scene.environmentEnabled true; };从六面天空盒到 HDR 接地天空从静态 IBL 到动态 CubeCamera 反射three.js 编辑器的天空与环境系统把 Three.js 中分散的环境配置能力打包成了可切换、可保存、可被 AI 调用的统一方案。选好一套环境整个场景的气质立刻不同。