Three.js:网格不接收阴影,并且不会被相交对象检测到

Three.js:网格不接收阴影,并且不会被相交对象检测到,three.js,shadow,mesh,spotlight,Three.js,Shadow,Mesh,Spotlight,我在Three.JS中有一个WebGL几何图形,它是通过挤出计量法制作的。 我的问题是为什么它不接收阴影(由THREE.SpotLight提供电源),或者为什么Raycaster.intersectObject没有检测到它 我的形状如下: var geometry = new THREE.ExtrudeGeometry(shape, extrudeSettings); var mesh = THREE.SceneUtils.createMultiMaterialObject(geometry,

我在Three.JS中有一个WebGL几何图形,它是通过挤出计量法制作的。
我的问题是为什么它不接收阴影(由THREE.SpotLight提供电源),或者为什么Raycaster.intersectObject没有检测到它
我的形状如下:

var geometry = new THREE.ExtrudeGeometry(shape, extrudeSettings);
var mesh = THREE.SceneUtils.createMultiMaterialObject(geometry, [new THREE.MeshBasicMaterial({ color: color }), new THREE.MeshBasicMaterial({ color: color2, wireframe: true, transparent: false, wireframeLinewidth: 5 })]);
mesh.position.set(x, y, z);
mesh.rotation.set(rx, ry, rz);
mesh.scale.set(s, s, s);
mesh.castShadow = true;
mesh.receiveShadow = true;
scene.add(mesh);

这是自然挤出计量法,还是什么

这与几何体无关

THREE.SceneUtils.createMultiMaterialObject()
通过创建一个父对象和两个子网格(每个网格具有相同的几何体)来实现其效果

您需要在子级而不是父级上设置
receiveShadow

mesh.children[ 0 ].receiveShadow = true;
mesh.children[ 1 ].receiveShadow = true;
要获得
Raycaster.intersectObjects()
来处理分层对象,需要像这样传入
recursive
标志

raycaster.intersectObjects( objects, true );
3.js r.59