我有一些从STEP文件转换获得的自定义几何,我用鼠标旋转它们.它们围绕场景的原点旋转,但由于它们远离它,它们似乎在虚拟球体上旋转.如何将它们移动到原点以使它们看起来不"浮动"(我的意思是我想将虚拟球体的半径减小到零).这是我想要移动的例子.我已经尝试将他们的位置设置为(0,0,0):
object.position.x = 0;
object.position.y = 0;
object.position.z = 0;
Run Code Online (Sandbox Code Playgroud)
但它没有用.
在 Three.js 中似乎有相当多的旋转方式,我个人觉得不是很直观。请参阅示例
http://cloud.engineering-bear.com/apps/robot/robot.html 
当我对多个对象应用旋转时,我得到了非常奇怪的意想不到的效果。例如,当我旋转已相互添加的对象并开始旋转父对象时,各个对象将突然彼此以不同的方式放置,而不是它们原来的位置。我现在正在尝试分组,并希望避免同样的效果。
请参阅http://pi-q-robot.bitplan.com/example/robot?robot=/models/thing3088064.json了解当前的情况,并查看https://github.com/BITPlan/PI-Q-Robot了解更多信息源代码。
因此,我根据不同的 API 选项搜索了正确的示例:
回转
function renderScene() {
stats.update();
//side1.rotation.z += 0.02;
pivot.rotation.z += 0.02;
Run Code Online (Sandbox Code Playgroud)
轴旋转
绕世界轴旋转
object.rotateAroundWorldAxis(p, ax, r * Math.PI * 2 / frames);
Run Code Online (Sandbox Code Playgroud)
在世界轴上旋转
object.rotateOnWorldAxis( axis, angle );
Run Code Online (Sandbox Code Playgroud)
旋转关于点
设置从轴角度旋转
setEulerFrom四元数
quaternion = new THREE.Quaternion().setFromAxisAngle( axisOfRotation, angleOfRotation );
object.rotation.setEulerFromQuaternion( …Run Code Online (Sandbox Code Playgroud) 我使用Three.js(r86)渲染一组球体.我这样做是通过createSphereGroup从外部库调用一个函数:
// External library code.
function createSphereGroup(sphereCount) [
var group = new THREE.Group();
for (var i = 0; i < sphereCount; i++) {
var geometry = new THREE.SphereGeometry(50);
var material = new THREE.MeshPhongMaterial({ color: 0xFF0000 });
var sphere = new THREE.Mesh(geometry, material);
sphere.position.x = i * 150;
group.add(sphere);
}
return group;
}
Run Code Online (Sandbox Code Playgroud)
(假设外部库是不透明的,我无法修改其中的任何代码.)
// My code.
var group = createSphereGroup(5);
scene.add(group);
Run Code Online (Sandbox Code Playgroud)
......看起来像这样:

如你所见,这组球体偏离中心.我希望该组居中,第三个球体位于两条线相交的点(x=0).
那么我可以通过某种方式使这个群体居中吗?也许通过计算组的宽度然后将其定位在x=-width/2?我知道你可以调用computeBoundingBox几何来确定它的宽度,但是THREE.Group没有几何形状,所以我不知道怎么做...
当我使用Blender建模对象时,我能够明确定义其中心位置,从中心位置发生平移和旋转.使用Three.js对象时,我似乎找不到等价物.
Three.js对象是否具有定义其"中心"位置的属性?如果没有,物体的中心如何确定?