我找到了解决方案经验,但我不明白为什么它的工作原理。 我发布的代码来帮助,也许有人可以解释我发现了什么。
下面的代码将x中心移动0.1个单位。
var x = 0.1;
var y = 0;
var z = 0;
for (var i = 0; i < object.children.length; i++)
{
var geometry = object.children[i].geometry;
object.children[i].centroid.divideScalar(geometry.vertices.length); // Why this line ?
var offset = object.children[i].centroid.clone();
object.children[i].geometry.applyMatrix(new THREE.Matrix4().makeTranslation(-offset.x+x, -offset.y+y, -offset.z+z));
object.children[i].position.x -= x;
object.children[i].position.y -= y;
object.children[i].position.z -= z;
object.children[i].geometry.verticesNeedUpdate = true;
}
谢谢你的回答。我不想移动或调整形状,只能移动或旋转中心。 例如,我想将中心置于角落中的一个角落。或者例如旋转中心,使其不与世界坐标系统对齐。 – user2194221
1.“旋转中心”是什么意思? 2.几何不具有“中心”属性。 – WestLangley
我的意思是:如果您尝试旋转模型,它会围绕其中心旋转。我想移动这个中心。 问题是我从CAD系统导入模型,并且轴的方向与用边界框计算的中心不匹配。所以如果我试图旋转或拉伸(改变比例)一个导入的形状,结果是不正确的。 例如,如果我导入一个不与x,y,z轴对齐的立方体,rotare/resize的结果是完全错误的。我希望自己明确了 – user2194221