2013-11-22 68 views
3

我使用Three.js可視化圖形,並且爲圖形的每個節點添加一個使用TextGeometry的標籤。這是一個非常小的圖,但是當我添加文本時,我的應用程序變得非常慢。我應該怎麼做呢?在three.js中添加文本

+0

能爲您提供的jsfiddle,所以我們可以看看嗎? –

回答

8

TextGeometry更適合您真正有興趣以3D渲染文本的情況。它會創建複雜的幾何圖形,當存在大量文本或使用CanvasRenderer時,它肯定會減慢您的應用程序的運行速度。

對於標籤,通常最好使用2D標籤,它的渲染速度更快。有很多不同的方法。這些可以在Three.js渲染畫布的頂部,在單獨的畫布上,甚至是使用CSS屬性定位的普通HTML節點上。或者,您可以動態創建標籤文本的小畫布,並將它們用作始終面向相機的精靈紋理 - 這可能是最簡單的方法,因爲標籤將與其他對象一樣成爲3D場景的一部分。對於單獨的圖層方法,您需要使用unprojectVector或其他來計算出屏幕XY座標以匹配您的3D場景位置。

例如見這些所謂的帖子: - Dynamically create 2D text in three.js - Canvas and SpriteMaterial - How do I add a tag/label to appear on top of several objects so that the tag always faces the camera when the user clicks the object?

+0

哪些情況下的性能最好?可能是單獨的圖層,那麼HTML節點和canvas之間的哪一個呢? – croraf