Three.js - 将自定义几何体移动到原点

时间:2012-10-11 08:32:52

标签: rotation three.js

我有一些从STEP文件转换中获得的自定义几何图形,我使用鼠标旋转它们。它们围绕场景的原点旋转,但由于它们远离它,它们似乎在虚拟球体上旋转。如何将它们移动到原点以使它们看起来不“浮动”(我的意思是我想将虚拟球体的半径减小到零)。 This is the example I'd like to move。我已经尝试将他们的位置设置为(0,0,0):

object.position.x = 0;
object.position.y = 0;
object.position.z = 0;

但它没有用。

1 个答案:

答案 0 :(得分:29)

此问题的典型解决方案是在创建几何体后立即进行平移。您可以通过将转换矩阵应用于几何体来实现,如下所示:

geometry.applyMatrix( new THREE.Matrix4().makeTranslation( distX, distY, distZ ) );

编辑:您可以这样做,而不是:

geometry.translate( distX, distY, distZ ); // three.js r.72

函数geometry.computeBoundingBox()可能有助于您确定要翻译的金额。

但是,我看到你的情况,你有多个几何,所以它有点复杂,但可行。您需要将每个几何体转换为相同的量。

修改

提示:不是将每个对象添加到场景中,而是创建父对象,将其添加到场景中,然后将对象添加到父对象。

var parent;

parent = new THREE.Object3D();
scene.add( parent );

parent.add( object1 );
parent.add( object2 );
// and so on...

然后在渲染功能中,只旋转父对象,而不是单个对象。