我正在将各种大小不同的不同对象动态添加到场景中(每次单击一次),然后对其进行缩放和定位。现在,我希望能够围绕对象中心的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仍位于原始位置。
答案 0 :(得分:1)
您的对象没有绕其中心旋转。您的对象的几何形状可能会偏离原点。
如果要处理单个“网格”或“线”,则可以通过调用使对象的几何居中
geometry.center();
此方法将平移几何图形的顶点,以使几何图形的边界框位于原点的中心。
three.js r.97