Three.js中文网 Three.js中文网
首页
免费视频
系统课 (opens new window)
  • Three.js基础课程
  • Vue3+Threejs 3D可视化
  • Threejs进阶课程
  • 展厅3D预览漫游
  • Threejs Shader
  • Blender建模基础
  • Three.js基础课程(旧版本) (opens new window)
  • 文章
WebGPU教程
  • WebGL教程
  • WebGL教程(旧版本) (opens new window)
3D案例
  • 本站部署(打开快) (opens new window)
  • 原英文官网文档 (opens new window)
首页
免费视频
系统课 (opens new window)
  • Three.js基础课程
  • Vue3+Threejs 3D可视化
  • Threejs进阶课程
  • 展厅3D预览漫游
  • Threejs Shader
  • Blender建模基础
  • Three.js基础课程(旧版本) (opens new window)
  • 文章
WebGPU教程
  • WebGL教程
  • WebGL教程(旧版本) (opens new window)
3D案例
  • 本站部署(打开快) (opens new window)
  • 原英文官网文档 (opens new window)
Web3D系统课程视频
  • 展厅场景搭建

    • 1. 学前说明、展厅效果
    • 2. Blender查看展厅模型
    • 3. vue3+Vite +threejs
    • 4. 加载展厅gltf模型
    • 5. 发光属性emissive
    • 6. Blender设置发光属性
    • 7. 发光贴图.emissiveMap
    • 8. Blender自发光贴图
    • 9. Blender烘焙光照到贴图
    • 10. Blender烘焙全景图
    • 11. Blender设置环境贴图、涂层
    • 12. gui调试环境贴图
      • 13 .gui调节材质涂层
      • 14. threejs渲染曝光功能
      • 15. 展厅背景音乐
      • 16. 练习题-按钮开关背景音乐
      • 视频作为纹理贴图
      • 18. 色差问题—视频纹理颜色空间
      • 19. 展厅屏幕播放宣传视频
    • 展厅漫游

    • Vue+Threejs展厅
    • 展厅场景搭建
    郭隆邦
    2025-03-24
    目录

    12. gui调试环境贴图

    # gui调试环境贴图

    上课是通过Blender,给展厅设置的.hdr格式环境贴图。

    下面给大家演示,在threejs代码中,设置展厅环境贴图。

    # 设置.hdr格式环境贴图

    前面课程介绍过前面课程 (opens new window)介绍过hdr格式环境贴图加载,这里快速给大家演示一下。

    import { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader.js';
    

    把前面Blender生成的hdr贴图放到public文件夹,按照下面方式引入即可。

    const rgbeLoader = new RGBELoader();
    rgbeLoader.load('./envMap.hdr', (envMap) => {
        this.scene.environment = envMap;
        envMap.mapping = THREE.EquirectangularReflectionMapping;
    })
    

    异步写法

    const rgbeLoader = new RGBELoader();
    const envMap = await rgbeLoader.loadAsync('./envMap.hdr');
    // 映射模式
    envMap.mapping = THREE.EquirectangularReflectionMappi;
    // 环境贴图作用于全部模型
    this.scene.environment = envMap;
    

    # 回顾:环境贴图反射率.envMapIntensity

    基础课程 (opens new window)介绍过材质的换贴图反射率属性.envMapIntensity,通过.envMapIntensity可以改变环境贴图对场景的影响程度。

    new THREE.MeshStandardMaterial({
        envMap: textureCube,
        envMapIntensity: 0.5,//环境贴图反射率
    })
    

    递归遍历设置所有模型的环境贴图反射率.envMapIntensity

    twin.loader.load('./展厅.glb',function(gltf){
        gltf.scene.traverse(function (obj) {
            if (obj.isMesh) {
                obj.material.envMapIntensity = 0.5
            }
        })
    })
    
    

    # gui可视化调节.envMapIntensity

    下面通过dat.gui.js库,可视化改变环境贴图对模型影响程度,如果你对gui不太熟悉,可以看下基础课程 (opens new window)。

    // 引入dat.gui.js的一个类GUI
    import { GUI } from 'three/examples/jsm/libs/lil-gui.module.min.js';
    // 实例化一个gui对象
    const gui = new GUI()
    // 可视化改变环境贴图对模型影响程度
    gui.add({ envMapIntensity: 1.0 }, 'envMapIntensity', 0, 5)
    .onChange( (v) => {
        gltf.scene.traverse(function (obj) {
            if (obj.isMesh) {
                obj.material.envMapIntensity = v
            }
        })
    })
    
    11. Blender设置环境贴图、涂层
    13 .gui调节材质涂层

    ← 11. Blender设置环境贴图、涂层 13 .gui调节材质涂层→

    Theme by Vdoing | Copyright © 2016-2025 豫ICP备16004767号-2
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式