Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Three.js:在对象的中心旋转_Three.js - Fatal编程技术网

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

Three.js:在对象的中心旋转,three.js,Three.js,我修改了这个单旋转立方体,使其在Object3D中包含3个立方体 在上面的示例中,它使用第一个立方体。我需要它在一个轴上,在物体的精确中心旋转 object3D代码 geometry = new THREE.CubeGeometry(50, 50, 50); material = new THREE.MeshNormalMaterial(); mesh = new THREE.Object3D(); mesh1 = new THREE.Mesh(geometry,

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

在上面的示例中,它使用第一个立方体。我需要它在一个轴上,在物体的精确中心旋转

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;

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

真正简单的方法是将多维数据集的位置稍有不同,而不是设置

mesh1.position.x = 50;
mesh2.position.x = 100;
将mesh3设为默认值,x为0,可以如下设置:

mesh1.position.x = -50;
mesh3.position.x = 50;
这将使中心框也位于场景的中心


显示它工作。

您可以定义中心的坐标

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

我希望有一个递归的解决方案,JSFIDLE中的旋转立方体只是一个例子…我代码中的对象包含大量的立方体、平面等-我想答案可能在于获取对象的中心xyz,然后以某种方式将其应用于旋转…然后我会看一看接受的答案。这可能正是你所需要的。一年多后,谷歌搜索了同样的问题,发现我自己的问题是最重要的结果+1这个答案!