【发布时间】:2018-02-12 22:30:53
【问题描述】:
我正在尝试使对象投射并接收阴影,
场景THREE.SpotLight中有一个光源
这是我的 MTLLoader() 和 OBJLoader() 代码
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
【问题讨论】:
-
@WestLangley 试过了,不行。
-
你能创造一个小提琴来尝试吗?
-
@gaitat 我已经设置了小提琴,材料没有加载到小提琴上。
-
您需要将
spotLight.shadow.camera.near更改为较小的值,例如 10。
标签: javascript three.js