1. 程式人生 > >three.js 包圍盒簡單應用

three.js 包圍盒簡單應用

一、包圍盒

二、包圍盒簡單應用:

(一)移動模型到合適的位置

計算多個模型組合的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,
那麼模型也亂了,也沒達到效果。

 (二)、