2013-10-20 55 views
1

這裏是我的問題:three.js所陰影投射在臉上通暢,低分辨率引導

the issue

文本上的陰影不應該存在,儘管我更改了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; 

任何援助表示歡迎。

回答

1

我相信你所看到的是由於這樣一個事實,即單位空間中的物體非常小,陰影映射技術正在努力將這些小浮點轉換爲可用紋理。再加上非常「薄」的幾何圖形,有時甚至最小的shadowCameraNear值仍然足夠大,以便「透過網格」看到。

我可以看到兩個解決方案。

1)停止接受主網(ES)

textMesh_Flying.receiveShadow = false; 

OR 2)增加你的信的整個場景/厚度的大小的陰影,給陰影算法的一些「肉」一起玩。

注意:您可以嘗試shadowCameraNear = 0.001;,看看是否也有幫助。

希望有幫助,