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