我正在尝试让对象投射并接收阴影,
场景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
发布于 2018-02-12 21:04:33
这个在线示例不能在我的chrome上运行,所以我不知道,但在我的'Three.js Inspector‘调试选项卡中显示了层次结构:
Scene
+- SpotLight
+- Group
|- plane <-- check this Mesh object receiveShadow property
|- komodahttps://stackoverflow.com/questions/48736711
复制相似问题