我是新的3D图形,也是WPF,需要结合这两个在我目前的项目。我给MeshGeometry3D
添加积分和法线,并将MeshGeometry3D
加到GeometryModel3D
。然后加GeometryModel3D
至ModelVisual3D
,最后加ModelVisual3D
至ViewPort3D
。现在,如果我需要旋转,我在GeometryModel3D或ModelVisual3D上执行所需的变换,并最终再次将其添加到ViewPort3D。我运行到一个问题:在Windows上的3D图形在WPF的C#
objViewPort3D.Remove(objModelVisual3D);
objGeometryModel3D.Transform = new RotateTransform3D(new AxisAngleRotation3D(new Vector3D(0, 1, 0), angle += 15));
objModelVisual3D.Content = objGeometryModel3D;
objViewPort3D.Children.Add(objModelVisual3D);
为什么我必须做angle += 15
并不仅仅是15
每次15度旋转呢?看起来存储的模型未被Transform
操作转换,但转换仅在通过ViewPort3D
显示时应用。我想要转换实际上改变存储的MeshGeometry3D对象中的坐标,以便当我在下一次执行转换时对先前转换的模型执行转换,而不是原始模型。我如何获得这种行为?
感谢。但是我的要求是,一旦呈现,用户可以选择网格模型中的一个或多个顶点并拖动鼠标。在这种情况下,我需要相应地变形渲染模型并再次渲染。你会建议什么? – user1790875
那么你可以做相反的事情。采取用户点击的点,并进行逆变换以映射回对象空间。 –