1

这是我的问题:

问题 .

文本上的阴影不应该存在,尽管我更改了 shadowMap 分辨率,但没有任何变化。这是用于生成网格的代码:

var materialArray_Flying = [
        new THREE.MeshPhongMaterial( { color: 0xff00ff, ambient: 0xff00ff } ), //face
        new THREE.MeshPhongMaterial( { color: 0x008888, ambient: 0x008888 } )]; //sides

var textGeom_Flying = new THREE.TextGeometry( "{Flying}",
        {
        size: 4, height: .25, curveSegments: 3,
        font: "helvetiker", weight: "bold", style: "normal",
        bevelThickness: 0.025, bevelSize: 0.05, bevelEnabled: true,
        material: 0, extrudeMaterial: 1
        });
var textMesh_Flying = new THREE.Mesh(textGeom_Flying, new THREE.MeshFaceMaterial(materialArray_Flying));
scene.add(textMesh_Flying);
textMesh_Flying.castShadow = true;
textMesh_Flying.receiveShadow = true;

我的渲染器是这样设置的:

var renderer = new THREE.WebGLRenderer({antialias: true});
renderer.shadowMapEnabled = true;
renderer.shadowMapSoft = true;
renderer.shadowMapType = THREE.PCFSoftShadowMap;
renderer.shadowCameraNear = 3;
renderer.shadowCameraFar = camera.far;
renderer.shadowCameraFov = 50;
renderer.setClearColor(0x000000, 1);
renderer.shadowMapWidth = 4096;
renderer.shadowMapHeight = 4096;

欢迎任何帮助。

4

1 回答 1

1

我相信您所看到的是由于对象在单位空间中非常小,并且阴影映射技术正在努力将如此小的浮动转换为可用的纹理。再加上非常“薄”的几何形状,有时即使是最小的 shadowCameraNear 值仍然足够大,可以直接“看到”网格。

我可以看到两种解决方案。

1) 停止接受主网格上的阴影

textMesh_Flying.receiveShadow = false;

或者 2)增加整个场景的大小/字母的厚度,给阴影算法一些“肉”来玩。

注意:您可以尝试 ashadowCameraNear = 0.001;看看是否也有帮助。

希望有帮助,

于 2013-10-21T13:56:33.547 回答