首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >THREE.OBJLoader投下了阴影?

THREE.OBJLoader投下了阴影?
EN

Stack Overflow用户
提问于 2018-02-12 05:34:56
回答 1查看 515关注 0票数 0

我正在尝试让对象投射并接收阴影,

场景THREE.SpotLight中有一个光源

下面是我的MTLLoader()和OBJLoader()代码

代码语言:javascript
复制
        var mtlLoader = new THREE.MTLLoader();
        mtlLoader.setBaseUrl('assets/');
        mtlLoader.setPath('assets/');
        mtlLoader.load('komoda.mtl', function (materials) {
            materials.preload();
             materials.materials.lambert2SG.map.magFilter = THREE.NearestFilter;
             materials.materials.lambert2SG.map.minFilter = THREE.LinearFilter;

             materials.materials.lambert3SG.map.magFilter = THREE.NearestFilter;
             materials.materials.lambert3SG.map.minFilter = THREE.LinearFilter;

            var objLoader = new THREE.OBJLoader();
            objLoader.setMaterials(materials);
            objLoader.setPath('assets/');
            objLoader.load('komoda.obj', function (object) {
                object.castShadow = true;
                object.receiveShadow = true;
                scene.add(object);
            });
        });

完整的js代码:https://a3d.joladev2.com/webgl2/webgl-attempt.js

这是一个在线的例子:https://a3d.joladev2.com/webgl2/index.html

谢谢

编辑:我已经添加了jsfiddle,但无法在jsfiddle上加载材料

https://jsfiddle.net/fcb9qoco/23/

谢谢

编辑2:已解决-其中有2个问题,其中一个是spotLight.shadow.camera.near = 500;

正确值为10,因此spotLight.shadow.camera.near = 10;

谢谢你@gaitat

第二个是平面对象没有receiveShadow = true;

现在它做到了,谢谢你@Jim Tang

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-12 21:04:33

这个在线示例不能在我的chrome上运行,所以我不知道,但在我的'Three.js Inspector‘调试选项卡中显示了层次结构:

代码语言:javascript
复制
Scene
 +- SpotLight
 +- Group
  |- plane  <-- check this Mesh object receiveShadow property
  |- komoda
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48736711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档