如何在three.js中绕对象中心旋转?

时间:2018-09-28 21:30:52

标签: three.js

我正在将各种大小不同的不同对象动态添加到场景中(每次单击一次),然后对其进行缩放和定位。现在,我希望能够围绕对象中心的Y轴旋转对象。我添加了boundingBox和axesHelper,但后者显示在对象的底角。读取this answer,与我的类似,似乎是因为偏移。我可以这样找到对象的中心:

var box3 = new THREE.Box3();
var boundingBox = new THREE.BoxHelper( mesh, 0xffff00 );
scene.add( boundingBox );
box3.setFromObject( boundingBox );
center = box3.getCenter( boundingBox.position );
console.log( "center: ", center );

但是当我尝试将answer的中心重置到该位置时,我的物体向太空射击。

box3.center(mesh.position);
mesh.position.multiplyScalar( -1 );

而且,即使在阅读了文档之后,我也不十分清楚“ multiplyScalar”的作用/含义。通过播放该数字,我可以使对象更接近所需位置,但是对象仍然不会围绕其中心旋转,并且AxesHelper仍位于原始位置。

1 个答案:

答案 0 :(得分:1)

您的对象没有绕其中心旋转。您的对象的几何形状可能会偏离原点。

如果要处理单个“网格”或“线”,则可以通过调用使对象的几何居中

geometry.center();

此方法将平移几何图形的顶点,以使几何图形的边界框位于原点的中心。

three.js r.97