在ThreeJS对象组中未接收到面上的阴影

Shadows not received on faces in ThreeJS Object Group

本文关键字:阴影 对象 ThreeJS      更新时间:2023-09-26

我有一个问题,在Object3D组的脸上没有收到阴影。

物体投射的阴影被地面接收,但本该接收的阴影却没有被对方接收。

我已经搜索过了,但我似乎找不到类似的问题,这让我相信我设置的东西不正确。

有人能看一下吗?我在下面的jsp中放置了一个工作示例。我想这可能是我设置面部的方式有问题。

https://jsfiddle.net/shanemccster/848k1qxh/

var makeobject = function(width, height, depth){
    logger('makeobject fired');
    var geometry = new THREE.BoxGeometry( width, height, depth );
    var materials = [
        new THREE.MeshLambertMaterial({ color: 0xffffff }),
        new THREE.MeshLambertMaterial({ color: 0xffcc00 }),
        new THREE.MeshLambertMaterial({ color: 0xffffff }),
        new THREE.MeshLambertMaterial({ color: 0xffcc00 }),
        new THREE.MeshLambertMaterial({ color: 0xffffff }),
        new THREE.MeshLambertMaterial({ color: 0xffcc00 })
    ];
    var texture = new THREE.MeshFaceMaterial( materials );
    texture.minFilter = THREE.LinearFilter;
    var theObject = new THREE.Mesh(geometry,texture);
    theObject.recieveShadow = true;
    theObject.castShadow = true;
    return theObject;
}

您需要在网格上设置receiveShadow标志。查看Object3D的文档,它是Mesh的父对象。

https://jsfiddle.net/woa7kzz1/