我正在努力改变在WPF中更改3D对象(Model3DGroup)中心点的最佳方法。
我已经从SketchUp导出了一个模型,一切都很好,但是中心离开了位置,导致我在旋转对象时遇到麻烦。 现在我需要围绕每个对象自己的中心进行一些旋转,并且不知道如何做到这一点......
任何建议都将不胜感激。
由于
使用Jackson Pope的建议,我使用下面的代码来获取对象的中心点:
var bounds = this.My3DObject.Bounds;
var x = bounds.X + (bounds.SizeX / 2);
var y = bounds.Y + (bounds.SizeY / 2);
var z = bounds.Z + (bounds.SizeZ / 2);
var centerPoint = new Point3D(x, y, z);
与此同时,我会尝试找到一个更好的解决方案,尝试将所有点移动到所需的偏移量......
答案 0 :(得分:2)
要围绕它的中心旋转对象,您需要先将其翻译,使其中心位于原点。然后旋转它(然后可能将其转换回原始位置)。
找到对象的最小和最大范围,计算其center = min +(max-min)/ 2。翻译(-centreX,-centreY,-centreZ),旋转然后翻译(centreX,centreY,centreZ)。