我遇到的問題是當我有一個網格,其中只有網格的一些面應該是半透明的,而對象的其餘部分應該是不透明的。任何人都知道我應該如何解決這個問題?如何渲染部分半透明的網格?
下面是對這個問題的更多描述:清晰度:在我們的瀏覽器中,如果它們具有相同的材質屬性,我們會合並多個網格物體。
然後,如果用戶點擊合併對象,我們會發現被點擊的表面和該面部對象的原始ID。然後,我們只用我們自己的自定義着色器突出顯示該對象的面部。
現在的問題是,如果我們使材料透明的(因此所選擇的部分是半透明的),則整個合併的網格是透明的,該模型的不透明部分被呈現透明。
你可以看到一些視覺問題,在這樣的畫面:
我對我們如何能夠解決這個問題,但他們都將增加存儲多思路消耗和複雜度:
丟棄應該是透明的碎片,然後用選定的面和透明材質創建一個新的網格。
創建一個透明的整個合併網格的副本,然後只渲染透明對象中的選定對象面並丟棄原始非透明網格中的片段。
任何人都有更好的主意嗎?
使用三個r84。
你對所有的盒子都有'.transparent = true'嗎? – prisoner849
所有的盒子都是這個例子中的一個網格,所以通過設置材質爲透明的,所以我可以顯示一些透明的面孔,這樣所有的盒子都是透明的。 – Krigsdal
使用深度剝離你可以實現你想要的,但我認爲three.js本身並不實現它。我認爲你的最佳策略是將你的「分組網格」分成幾個網格,並獨立處理每個「盒子」。透明度在3D渲染中從來不是一個微不足道的問題。 – 2017-10-19 09:39:29