[英]Three.js get center of Scene
我想做的是在Three.js中獲取從ColladaLoader(因為加載的模型是Scene)獲得的Scene的中心,然后將其設置為Camera的目標。
只要模型的來源恰好也是它的中心,@ gaitat的解決方案就會起作用,但是我認為情況並非如此。 模型的原點可能是左下角,或者是頂面的中間,或者是與模型的“中心”無關的任何其他點。
要獲得模型的“中心”,您需要根據其幾何形狀進行計算。 幸運的是,THREE.Geometry有一些方便的方法可以幫助實現這一點。 您可以計算幾何的“邊界球”,即適合所有幾何點的最小可能球。 該邊界球的中心將是整個幾何的“中心”。
var mesh; // this should be your model's mesh
// it might be buried inside the DAE object somewhere
mesh.geometry.computeBoundingSphere(); // this isn't calculated automatically
// you need to call it
mesh.geometry.boundingSphere.center; // THREE.Vector3 which is the center of the sphere
我不確定是否需要為生成的boundingSphere.center計算世界矩陣轉換,但這只是一個開始。
請記住,幾何體的邊界球並不能說明點的分布。 幾何中的一個孤立點與其他點非常遙遠,它將離開邊界球的中心,因為它需要移動以包含該點。 盡管如此,邊界球方法是最快,最簡單的方法,並且在大多數情況下應該可行。
您可以使用camera.lookAt(scene.position);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.