2015-10-03 98 views
1

所以我試圖在我製作的一些pixelart上使用景深效果。Threejs - 使用MeshDepthMaterial繪製透明紋理

爲此,我需要一個具有深度信息的紋理。所以我使用MeshDepthMaterial在一個平面上渲染我的紋理,但是我得到的只是一個灰色的矩形,它完全忽略了紋理中的alpha數據(僅爲1或0,沒有任何中間數據)。

當然,我使用

depthMaterial.transparent = true; 
depthMaterial.alphaTest = 0.5; 
depthMaterial.needsUpdate = true; //just to be sure 

只要您有興趣,這是我的pixelart以及它是如何呈現:http://imgur.com/a/TLQOe

回答

2

MeshDepthMaterial不讀的表面紋理的。

相反,您需要覆蓋'depth' ShaderChunk的值以包含UV和alpha測試紋理,或者添加額外的ShaderMaterial以自行完成工作。根據您的應用程序的整體需求,一種方法會比另一種更好。如果沒有非紋理對象需要投影,前者將是最簡單的維護。如果沒有,你需要做更多的工作來管理哪些rendertarget得到什麼和如何。