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-13
    目录

    9. dat.gui调节平行光照射角度

    # dat.gui调节平行光照射角度

    当你用平行光模拟太阳光的时候,可以设置光源绕y轴旋转,设置不同角度,也可以控制光源与地面的夹角。

    # gui改变光源x、z坐标

    控制光源位置x和z坐标绕着y轴旋转画圆,可以借助三角函数计算x和z坐标。

    光线与绕y轴旋转,与x轴夹角。

    gui.add({angle:45},'angle',0,360).onChange(function(v){
        const rad = THREE.MathUtils.degToRad(v);//角度转弧度
        directionalLight.position.x = R*Math.cos(rad);
        directionalLight.position.z = R*Math.sin(rad);
    }).name('旋转角度')
    

    光线与地面角度调节

    gui.add({angle:45},'angle',0,89).onChange(function(v){
        const rad = THREE.MathUtils.degToRad(v);
        directionalLight.position.y = R*Math.tan(rad);
    }).name('照射角度')
    

    # gui界面分组

    把平行光相关的三个控制属性分成一组方便预览。

    const dirFolder = gui.addFolder('平行光');//平行光子菜单
    
    dirFolder.add(directionalLight,'intensity',0,10);
    const R = 100;//假设旋转半径
    dirFolder.add({angle:45},'angle',0,360).onChange(function(v){
        const rad = THREE.MathUtils.degToRad(v);//角度转弧度
        directionalLight.position.x = R*Math.cos(rad);
        directionalLight.position.z = R*Math.sin(rad);
    }).name('旋转角度')
    dirFolder.add({angle:45},'angle',0,89).onChange(function(v){
        const rad = THREE.MathUtils.degToRad(v);
        directionalLight.position.y = R*Math.tan(rad);
    }).name('照射角度')
    
    dirFolder.close();//关闭子菜单
    
    8. dat.gui辅助调试光照参数
    1. Stats查看渲染帧率

    ← 8. dat.gui辅助调试光照参数 1. Stats查看渲染帧率→

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