[英]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.