这是我的问题:
文本上的阴影不应该存在,尽管我对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;
欢迎任何帮助。
答案 0 :(得分:1)
我相信你所看到的是因为物体在单位空间中非常小,而阴影贴图技术正在努力将这些小浮点数转化为可用的纹理。此外,即使是最小的shadowCameraNear值也非常“瘦”几何形状,但仍然足以“透视”网格。
我可以看到两种解决方案。
1)停止接受主要网格上的阴影
textMesh_Flying.receiveShadow = false;
或者2)增加整个场景的大小/字母的粗细,使阴影算法有些“肉”可以玩。
注意:您可以尝试shadowCameraNear = 0.001;
并查看是否也有帮助。
希望有所帮助,