Three.js获得场景中心

时间:2016-03-02 15:58:51

标签: javascript three.js

我想要做的是在Three.js中获取从ColladaLoader获得的场景的中心(因为加载的模型是场景),然后设置为Camera的目标。

2 个答案:

答案 0 :(得分:2)

只要模特的起源恰好也是它的中心,@ 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计算世界矩阵变换,但它是一个开始。

请记住,几何体的边界球体并不能解释点的分布。几何中距离其他几个非常远的单个孤立点会抛出边界球体的中心,因为它需要移动以包含该点。尽管如此,边界球法是最快捷,最简单的方法,在大多数情况下都可以使用。

答案 1 :(得分:0)

您可以使用camera.lookAt(scene.position);