2011-02-04 57 views
0

我正在努力改变WPF中3D对象(Model3DGroup)中心点的最佳方式。如何更改3D WPF对象的中心

我从SketchUp中导出了一个模型,一切都很好,但是中心位置偏离了位置,导致旋转对象时出现问题。 现在我需要做一些围绕每个对象自己的中心旋转,并不知道如何去做...

任何意见,将不胜感激。

感谢

使用杰克逊教皇的建议,我用下面的代码获取对象的中心点:

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); 

同时,我会尽力找到一个更好的解决方案,试图将所有的指向所需的偏移量...

回答

2

要围绕它的中心旋转对象,您需要首先对其进行翻译,以使其中心位于原点。然后旋转它(然后可能将其翻译回原始位置)。

找到对象的最小和最大范围,计算它的center = min +(max-min)/ 2。通过(-centreX,-centreY,-centreZ)翻译,旋转,然后通过(centreX,centreY,centreZ)翻译。

+0

那么它似乎是一个可能的解决方案。但是我的模型有数百个点。我如何获得最大/最小延伸? – 2011-02-04 15:56:36