2017-06-01 26 views
1

Three.js中的自定義幾何體是否可以發光?從Three.js中的幾何體發出光線

還有一個類似的問題從5年前here

在我的特殊情況下,我創建了一個TorusGeometry。我想這個圓環也發光。那可能嗎?

+0

前段時間我在Three.js上閱讀了一些關於這個主題的文章。它仍然處於測試階段,並且有一些矩形的樣本發出光線。 – juagicre

回答

1

要做到這一點的唯一正確方法是光線跟蹤,在這種情況下,您的圓環變成光子的「發射器」,其幾何圖形用於計算所述光子的初始方向。

否則,在技術上不存在光。只有(數學)的燈光描述存在。 (請記住,燈光不可見/除非使用LightHelper否則不會呈現。)材質着色器使用這些說明,材質着色器使用燈光描述(以及場景中的其他對象,如果是陰影)以確定當前片段應該對像素作出貢獻的顏色。考慮到這一點,如果您可以編寫着色器來處理圓環形光源,那麼您只需將該光源的信息提供給着色器即可。您可以通過擴展THREE.js燈光類來製作您自己的TorusLight以添加到場景中,然後爲場景中的對象提供自定義着色器。如果你對模擬環面光線感到滿意,並且想要一個可見的環面,你總是可以在環面位置(或環面的幾個位置)添加PointLight,你的環面有某種發光效果。

+0

謝謝@ thejim01,有沒有任何例子或一些地方我可以找到關於如何擴展THREE.js輕類來製作我自己的TorusLight的文檔? 添加一串形狀爲圓環的PointLights聽起來容易得多,但我想知道如何使用創建實際的TorusLight的方法進行操作。 –

+0

在THREE.js代碼中,查找「函數Light」和「函數PointLight」。 'PointLight'延伸'Light'。也就是說,如果您要將一堆「PointLight」組合在一起,則最好擴展Object3D或Group,以免混淆渲染器。 ('Light's帶有'isLight'標誌,在收集場景燈時用於優化。) – TheJim01