2013-02-26 136 views
7

我試圖在three.js中創建特定類型的3D對象。 我想要例如一個線框模式的立方體(所以只顯示邊緣)。 但我想要後面的邊緣被打破。 插圖:illustrationthree.js線框只有隱形邊緣的形狀爲虛線

我不知道如果這是可行的three.js所,如果我要與WebGL的直接嘗試。 我應該在線框中使用THREE.Mesh,還是使用THREE.LineLineDashedMaterial,或者兩者可能互相重疊?

回答

4

我設法做到了。 您需要創建三個對象。

第一對象:固體3D對象(我指的是面不是邊緣)

第二對象:所有邊緣但虛線

第三對象:所有邊緣但在正常(未虛線)

對於第一個對象,使用color: false, side: THREE.DoubleSide, depthTest: true設置材質。

第二個對象材質:color: (whatever you like), depthTest: false

第三個對象材質:color: (whatever you like), depthTest: true

我還使用polygonOffset: true, polygonOffsetFactor: 1, polygonOffsetUnits: 1來設置所有材料以擺脫z戰鬥。

4

這是一個非常酷的想法。我已經實現了你的答案在上面所描述的:

萬一

http://stemkoski.github.com/Three.js/Dashed-3D.html

任何人希望看到它在行動。

+0

這似乎不工作了。如果我理解正確,則應該只顯示「可見」邊(以實線顯示),如果顯示立方體的材料,則應該顯示的邊應顯示爲虛線。那是對的嗎?在你的例子中,我看到一個堅實的立方體,既有虛線也有實線。但是,我只能看到前臉,因爲臉部很堅固。 three.js有什麼改變嗎?或者這是否按預期呈現?鑑於OP的問題,我認爲這個例子不起作用(了)。 – dylnmc 2017-05-30 19:35:06

+0

另外,在查看一些演示之後,我還注意到細分曲面修飾符的例子是...奇怪的。從截圖中,我認爲這些工作在同一時間。這可能與three.js發生衝突? – dylnmc 2017-05-30 19:43:38