我有一些从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;
但它没有用。
答案 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...
然后在渲染功能中,只旋转父对象,而不是单个对象。