THREE.OBJLoader投下了阴影?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了THREE.OBJLoader投下了阴影?相关的知识,希望对你有一定的参考价值。
我正在尝试制作对象并接收阴影,
场景中有一个光源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
答案
在线示例不能在我的chrome上运行,所以我无法分辨,但在我的'Three.js Inspector'调试选项卡中显示了层次结构:
Scene
+- SpotLight
+- Group
|- plane <-- check this Mesh object receiveShadow property
|- komoda
以上是关于THREE.OBJLoader投下了阴影?的主要内容,如果未能解决你的问题,请参考以下文章