2016-03-07 82 views
2

我剛剛開始使用three.js最近,我終於有我的模型正確加載。然而,看着例子,我注意到,在大多數的例子定心與編碼這樣Three.js對象居中

object.position.y = - 95; 

,對於在這個例子的目的,工作正常,這樣做,但我加載不同尺寸的多個對象和我不不想爲每一個模型硬編碼一個值。所以我的問題是,你如何動態地中心對象?

我看到geometry.center是一個方式來實現這一點,但我找不到任何的例子,我不知道如何添加到這個例子

http://threejs.org/examples/#webgl_loader_obj_mtl

任何建議,教程提示或例子會很棒。謝謝!

回答

2

如果你的模型的支點是在模型的垂直中心,您可以使用此一般方法:

//object.geometry.center(); 
var box = new THREE.Box3().setFromObject(object) 
var boundingBoxSize = box.max.sub(box.min); 
var height = boundingBoxSize.y; 
object.position.y = - height/2; 

如果幾何已經轉移,你可以重新中心它採用geometry.center()

+0

謝謝您的回覆,該代碼正在對最後一行進行小改動: object.position.y =(height/2)* -1; 但現在的問題是像這樣設置變焦 camera.position.z = 250; 和 camera.position.z = 300; 我該怎麼做基本上與相機的縮放相同的東西,所以它適合屏幕上的對象? – Tony

+0

你是對的我會糾正代碼。你的第二個問題在這裏得到解答:http://stackoverflow.com/a/23361117/4977165 –

+0

在那篇文章高度等於對象高度?我怎麼得到這個? – Tony