• Threejs阴影问题


    遇到的问题

    导入glb模型,各种尝试,各种配置,死活不产生影子。

    先说我的解决办法

    可以先到https://threejs.org/editor/进行测试,我这里不产生因子的原因主要使阴影的设置没弄对。
    首先需要使光照的影子的这个盖子足够大,
    在这里插入图片描述
    在这里插入图片描述
    let directionalLight_1 = new THREE.DirectionalLight(0xffffff, 0.8)
    directionalLight_1.castShadow = true; // default false
    directionalLight_1.shadow.camera.near = 0.5; // default
    directionalLight_1.shadow.camera.far = 2000; // default
    directionalLight_1.shadow.camera.left = -2000
    directionalLight_1.shadow.camera.right = 2000
    directionalLight_1.shadow.camera.top = -500
    directionalLight_1.shadow.camera.bottom = 500

    可以用helper来帮助设置看看这个范围。
    let helper = new THREE.CameraHelper(directionalLight_1.shadow.camera);
    scene.add(helper)
    其次是需要对产生影子的对象设置 castShadow = true;
    接收影子的地面设置receiveShadow = true;

    let ground = scene.getObjectByName(‘mesh_2370’);
    ground.receiveShadow = true;
    let tower_1 = scene.getObjectByName(‘mesh_1574’);
    tower_1.castShadow = true;

    比如下面失败的尝试

    用这个DirectionalLight默认配置
    light.shadow.camera.near = 0.5; // default
    light.shadow.camera.far = 500; // default
    在这里插入图片描述
    这样失败,因为这个距离还没有到塔这里,影子子够不着。应该使far变大
    far改成2000。
    在这里插入图片描述
    但还是不行,

    改成
    directionalLight_1.shadow.camera.near = 0.5; // default
    directionalLight_1.shadow.camera.far = 500; // default
    directionalLight_1.shadow.camera.left = -2000
    directionalLight_1.shadow.camera.right = 2000
    在这里插入图片描述
    还是不行。因为太扁了

    改成
    directionalLight_1.shadow.camera.near = 0.5; // default
    directionalLight_1.shadow.camera.far = 500; // default
    directionalLight_1.shadow.camera.left = -2000
    directionalLight_1.shadow.camera.right = 2000
    directionalLight_1.shadow.camera.top = -500
    directionalLight_1.shadow.camera.bottom = 500
    在这里插入图片描述

    成功!
    就是把这个盖子变得足够大即可。根据模型的尺寸来。

    也可以自己去https://threejs.org/editor/先尝试下,不过一般模型的尺寸比较大,可以在这个编辑器里面缩小自己的模型进行测试。

  • 相关阅读:
    QT国际化
    【附源码】计算机毕业设计JAVA教学成果管理平台录像演示
    逆向思维 脑经急转弯
    windows安装VirtualBox6工具,安装CentOS7虚拟机,更新环境并导出
    Xylan-PEG-NHS|木聚糖-聚乙二醇-琥珀酰亚胺
    易基因|ChIP-seq等实验揭示CHD6转录激活前列腺癌通路的关键功能 | 肿瘤耐药研究
    [架构设计-1]:系统架构部门的主要角色
    Linux 启动流程及相关知识
    LeetCode(剑指 Offer)- 25. 合并两个排序的链表
    Java+SpringBoot+Vue.js全栈实践:手机销售网站开发记
  • 原文地址:https://blog.csdn.net/u010568976/article/details/126526355