【问题标题】:Three.js: mesh does not receive shadow and is not detected by intersectObjects三.js:mesh没有收到阴影,没有被intersectObjects检测到
【发布时间】:2013-08-04 09:20:14
【问题描述】:

我在 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 自然的,还是什么!?

【问题讨论】:

    标签: three.js shadow mesh spotlight


    【解决方案1】:

    这与几何无关。

    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

    【讨论】:

      猜你喜欢
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多