【发布时间】:2019-08-26 23:29:10
【问题描述】:
我是 3d Graphics 和 wpf 的新手,需要在我当前的项目中将这两者结合起来。我将点和法线添加到MeshGeometry3D 并将MeshGeometry3D 添加到GeometryModel3D。然后将GeometryModel3D 添加到ModelVisual3D,最后将ModelVisual3D 添加到ViewPort3D。现在,如果我需要旋转,我将在 GeometryModel3D 或 ModelVisual3D 上执行所需的变换,并最终将其再次添加到 ViewPort3D。我遇到了问题:
objViewPort3D.Remove(objModelVisual3D);
objGeometryModel3D.Transform = new RotateTransform3D(new AxisAngleRotation3D(new Vector3D(0, 1, 0), angle += 15));
objModelVisual3D.Content = objGeometryModel3D;
objViewPort3D.Children.Add(objModelVisual3D);
每次将其旋转 15 度,为什么我必须使用 angle += 15 而不仅仅是 15?似乎存储的模型没有被Transform 操作转换,但只有在ViewPort3D 显示时才应用转换。我希望转换能够实际更改存储的 MeshGeometry3D 对象中的坐标,这样当我下次进行转换时,它会在先前转换的模型而不是原始模型上进行。我如何获得这种行为?
【问题讨论】: