2016-04-17 62 views
0

previous question之後,我正在處理BufferGeometry中的構建模型,並意識到transparent標誌會影響渲染順序:具有透明材質的對象將在非透明材質之後渲染。在Thee.js中渲染BufferGeometry的順序

此外,我從thread讀取,做了JSFiddle的實驗,並且實現了BufferGeometry中面的渲染順序與它們在緩衝區中指定的順序相同,但距離相機不遠。 (在上面的實驗中,我首先在緩衝區中指定了一個更接近的三角形,並在其後面指定了一個更接近的三角形。)

所以我的問題是:是否可以在BufferGeometry中手動設置渲染順序? 就我而言,我可能需要動態改變建築元素的透明度。 (我讀過thread表示我們可以設置Object3D的renderOrder。)

謝謝。

回答

0

表面按它們在BufferGeometry中出現的順序呈現。

如果您必須動態更改場景元素的透明度,我建議您維護單獨的幾何圖形,每個圖形都與自己的材質配對。

渲染器將首先渲染具有transparent = false的對象。然後它將渲染具有transparent = true的對象。

你可能會發現你有較少的文物,如果您使用以下設置爲您的透明材料:

material.transparent = true; 
material.opacity = 0.5; // or as desired 
material.depthTest = true; // the default 
material.depthWrite = false; // use for transparent materials only 

此外,自透明度是特別棘手。一個例子是半透明的立方體(或建築物)。在這種情況下減少僞影的一種方法是將對象渲染兩次:首先使用material.side = THREE.BackSide,然後再使用material.side = THREE.FrontSide。您可以使用object.renderOrder強制對象之間的特定渲染順序。

three.js r.75