2015-09-13 105 views
1

當我在雙面飛機上投射光線時,看到一個失真的僞影。有誰知道爲什麼它在那裏,我應該怎麼做才能避免這個問題?提前致謝!雙面飛機上的陰影僞影

我檢查是否可以在其他地方找到這個問題,但令人驚訝的是我不能。

Glitchy artifact

/** Plane that causes glitch. */ 
function addPlane(x, y, z, size) { 
    var geometry = new THREE.PlaneGeometry(size, size, 1, 1); 
    var material = new THREE.MeshPhongMaterial({color: 0x0077aa, side: THREE.DoubleSide}); 
    var plane = new THREE.Mesh(geometry, material); 
    plane.castShadow = true; 
    plane.receiveShadow = true; 
    plane.position.set(x, z, y); 
    plane.rotateX(Math.PI * 1.5); 
    scene.add(plane); 
} 

這裏是我的代碼:http://jsfiddle.net/scjcvx3k/2/。我試圖只輸入與此問題相關的代碼。

回答

6

您正在從自我陰影中獲得工件。你有兩個選擇。一種是設置

plane.receiveShadow = false; 

另一種是設置light.shadowBias

light.shadowBias = -0.001; 

不幸的是,設置shadowBias可能會導致另一個工件:「Peter Panning」。

谷歌這些話題,如果你想知道更多的問題。

更新小提琴:http://jsfiddle.net/scjcvx3k/7/

three.js所71

+0

謝謝!這有幫助。另外,我發現'陰影痤瘡'是一個很好的關鍵詞搜索。這意味着錯誤的自我陰影。 – Yatoom