当前位置:  开发笔记 > 编程语言 > 正文

Three.js:网格没有接收阴影,并且没有被intersectObjects检测到

如何解决《Three.js:网格没有接收阴影,并且没有被intersectObjects检测到》经验,为你挑选了1个好方法。

我在Three.JS中有一个由ExtrudeGeometry制作的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);

这是ExtrudeGeometry的自然,还是什么!?



1> WestLangley..:

这与几何无关.

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

您需要设置receiveShadow子项而不是父项.

mesh.children[ 0 ].receiveShadow = true;
mesh.children[ 1 ].receiveShadow = true;

要开始Raycaster.intersectObjects()处理分层对象,您需要传递recursive这样的标志.

raycaster.intersectObjects( objects, true );

three.js r.59

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有