Three.js:在对象的中心旋转

时间:2013-07-31 21:45:08

标签: three.js

我修改了这个旋转立方体,使其在Object3D中包含3个立方体

http://jsfiddle.net/VsWb9/1243/

在上面的例子中,它使用第一个立方体。我需要它在对象的正中心的单个轴上旋转。

object3D代码

  geometry = new THREE.CubeGeometry(50, 50, 50);
    material = new THREE.MeshNormalMaterial();
    mesh = new THREE.Object3D();
    mesh1 = new THREE.Mesh(geometry, material);
    mesh1.position.x = 50;
    mesh2 = new THREE.Mesh(geometry, material);
    mesh2.position.x = 100;
    mesh3 = new THREE.Mesh(geometry, material);

    mesh.add(mesh1);
    mesh.add(mesh2);
    mesh.add(mesh3);

    scene.add(mesh);

这是轮换

  mesh.rotation.x += 0.01;
  mesh.rotation.y += 0.02;

编辑:只是说这是一个演示问题的示例,我的实际代码对象包含许多不同大小的形状。

2 个答案:

答案 0 :(得分:14)

您可以定义中心的坐标。

mesh.position.set( center.x, center.y, center.z );
mesh.geometry.applyMatrix(new THREE.Matrix4().makeTranslation( -center.x, -center.y, -center.z ) );

答案 1 :(得分:1)

真正简单的方法是稍微改变立方体的位置,而不是设置

mesh1.position.x = 50;
mesh2.position.x = 100;

并将mesh3默认为x为0,您可以这样设置:

mesh1.position.x = -50;
mesh3.position.x = 50;

这将使中心框也位于场景的中心。

jsFiddle显示它有效。