簡體   English   中英

Threejs:計算旋轉文本的邊界框

[英]Threejs: computing the bounding box of rotated text

在我的場景中,我有一個文字。 創建它后,我將其旋轉以適合正確的區域。 但是,邊界框完全忽略了旋轉。

我在這里做了一個小提琴: http//jsfiddle.net/paulocoelho/qMqH7/5/

如果你檢查輸出你得到:

// before rotation
THREE.Vector3 {x: 28.365000000000006, y: 6.2806, z: 0.5, constructor: function, set: function…}
THREE.Vector3 {x: 0.2542, y: 0, z: 0, constructor: function, set: function…}
// after rotation
THREE.Vector3 {x: 28.365000000000006, y: 6.2806, z: 0.5, constructor: function, set: function…}
THREE.Vector3 {x: 0.2542, y: 0, z: 0, constructor: function, set: function…}

因為我在Z上旋轉90度,我希望看到“旋轉后邊界”為:

{x: 2.2806, y: 28.365000000000006, z: 0.5}

有沒有辦法輕松實現這一目標?

geometry對旋轉一無所知。 你有兩個選擇。

第一個選項是通過將旋轉矩陣應用於幾何體來旋轉幾何體,而不是旋轉網格。 例如,

geometry.rotateZ( Math.PI / 2 );

現在你可以調用geometry.computeBoundingBox() ,你應該看到你期望的。

第二個選項是使用Box3.setFromObject( object )來計算網格的邊界框:

var box = new THREE.Box3().setFromObject( object );

此函數計算對象(包括其子對象)的世界軸對齊邊界框,同時考慮對象和子對象的世界變換。

編輯:更新到three.js r.95

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM