Three.js移动并旋转几何体的中心

时间:2013-05-30 17:21:31

标签: three.js

我有一个用OBJLoader加载的复杂模型。我想移动并旋转其中心,让用户(我的应用程序的用户)将中心点放在他/她想要的位置。 我知道这一点:old question,但对我来说不起作用。 这是一个小提琴测试:fiddle example

按下示例中的按钮,我希望移动中心。 按钮中的代码是:

objMesh.geometry.applyMatrix(new THREE.Matrix4().makeTranslation(new THREE.Vector3(1, 0.1, 0.1)));

2 个答案:

答案 0 :(得分:3)

我根据经验找到了解决方案,但我不明白为什么会有效。 我发布代码以帮助,也许有人可以解释我发现的内容。

下面的代码将x中心移动0.1个单位。

var x = 0.1;
var y = 0;
var z = 0;

for (var i = 0; i < object.children.length; i++)
{
    var geometry = object.children[i].geometry;

    object.children[i].centroid.divideScalar(geometry.vertices.length); // Why this line ?

    var offset = object.children[i].centroid.clone(); 
    object.children[i].geometry.applyMatrix(new THREE.Matrix4().makeTranslation(-offset.x+x, -offset.y+y, -offset.z+z));
    object.children[i].position.x -= x;
    object.children[i].position.y -= y;
    object.children[i].position.z -= z;
    object.children[i].geometry.verticesNeedUpdate = true;
}

答案 1 :(得分:2)

使用

mesh.geometry.translate( x, y, z );

mesh.geometry.center();

另外,请考虑调用mesh.position.set(),而不是移动几何体的每个顶点。

three.js r.95