three.js 包圍盒簡單應用
阿新 • • 發佈:2018-11-07
一、包圍盒
二、包圍盒簡單應用:
(一)移動模型到合適的位置
計算多個模型組合的group的包圍盒
var bbox = new THREE.Box3().setFromObject(group)
將匯入的外部模型移動到世界座標中心。(比較粗糙的,實際上是包圍盒的中心移動到世界座標中心,而非實際模型)
注意點:從程式碼中看,group.position.set(-x1,-y1,-z1); 應該是長方體的左下里那個頂點為基準來移動位置的。但又感覺應該不是才對。應該就是幾何體的中心才合理於方便。
var bbox = new THREE.Box3().setFromObject(group) var mdlen=bbox.max.x-bbox.min.x; var mdwid=bbox.max.z-bbox.min.z; var mdhei=bbox.max.y-bbox.min.y; var centerpoint=new THREE.Vector3(); var x1=bbox.min.x+mdlen/2; var y1=bbox.min.y+mdhei/2; var z1=bbox.min.z+mdwid/2; group.position.set(-x1,-y1,-z1); //從程式碼來看,應該是長方體的左下里那個頂點為基準來移動位置的。但又感覺應該不是才對。應該就是幾何體的中心才合理於方便。 其實還有兩種方式,一種是通過var BaxH = new THREE.BoundingBoxHelper(Load_Model,hex); 還有Geometry的方式computeboundingBox(),然後取Geometry.center()此時, 幾何體就會來到場景的中心位置,但是,這樣做對於組是不行的,哪怕對組裡面每個幾何體都取center, 那麼模型也亂了,也沒達到效果。
(二)、