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系统课程视频
  • 0.学前说明

  • 1.Vue+Three.js基础

  • 2.场景搭建Three+Blender

  • 3.渲染效果提升(材质光照)

    • 1. 光照、环境贴图
    • 2. 环境贴图hdr格式
    • 3. 天空盒全景图作为背景
      • 4. threejs深度冲突
      • 5. 标准网格材质(金属)
      • 6. 物理网格材质(玻璃)
      • 7. dat.gui辅助调试物理材质
      • 8. dat.gui辅助调试光照参数
      • 9. dat.gui调节平行光照射角度
    • 4.渲染性能、模型压缩

    • 5.封装、进度条、切视角

    • js 3D可视化
    • 3.渲染效果提升(材质光照)
    郭隆邦
    2024-03-12
    目录

    3. 天空盒全景图作为背景

    # 天空盒全景图作为背景

    为了让整个三维场景渲染效果更好,一般可以让美术提供一个天空盒全景图。

    本小节课件中提供一个.jpg的天空盒全景图,作为整个三维场景的背景使用,查看3.3小节课件即可。

    # 创建球体网格模型

    首先创建一个球体网格,半径范围足够大,至少要把收费站窗口附近模型包括在球里面,这样有一种天空盖在地面上的感觉

    // 设置一个天空盒背景图
    const geometry = new THREE.SphereGeometry(300, 50, 50);
    const material = new THREE.MeshBasicMaterial({});
    const mesh = new THREE.Mesh(geometry, material);
    scene.add(mesh);
    

    材质设置背面课件,默认球体外面可见,相机在球体里面,需要设置背面可见。

    // 设置一个天空盒背景图
    const geometry = new THREE.SphereGeometry(300, 50, 50);
    const material = new THREE.MeshBasicMaterial({
        side: THREE.BackSide, //默认正面可见,设置为背面可见即可
    });
    const mesh = new THREE.Mesh(geometry, material);
    scene.add(mesh);
    

    # TextureLoader加载天空盒贴图

    // 设置一个天空盒背景图
    const geometry = new THREE.SphereGeometry(300, 50, 50);
    const texture = new THREE.TextureLoader().load("./天空盒全景图.jpg");
    const material = new THREE.MeshBasicMaterial({
        map: texture,
        side: THREE.BackSide, //默认前面可见,设置为背面可见即可
    });
    const mesh = new THREE.Mesh(geometry, material);
    scene.add(mesh);
    

    查看文档webgl渲染器输出的颜色空间.outputColorSpace属性值是THREE.SRGBColorSpace。 为了避免自己加载的颜色贴图产生色差,也要设置为THREE.SRGBColorSpace

    texture.colorSpace = THREE.SRGBColorSpace;//设置为SRGB颜色空间,与webgl渲染器一致
    

    # Blender建模软件创建天空背景

    还有一种更简单方法,不用代码设置,直接美术在Blender中创建一个球体,然后设置一个天空的背景图作为球体颜色贴图。

    2. 环境贴图hdr格式
    4. threejs深度冲突

    ← 2. 环境贴图hdr格式 4. threejs深度冲突→

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