我是 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 对象中的坐标,这样当我下次进行转换时,它会在先前转换的模型而不是原始模型上进行。我如何获得这种行为?