如何将MeshElement3D显示为线框?

时间:2015-02-18 23:42:02

标签: wpf helix-3d-toolkit

我想在helix-toolkit中将任何MeshElement3D(例如BoxVisual3d)显示为线框。如何实现这一目标?

修改

感谢Erno de Weerd的回答,我能够编写以下代码

  1. 扩展BoxVisual3D的类

    public class GeometryBoxVisual3D : BoxVisual3D
    {
    
      public MeshGeometry3D Geometry()
      {
        return Tessellate();
      }
    }
    
  2. 将框的实例添加到视口:

        GeometryBoxVisual3D box = new GeometryBoxVisual3D();
        box.Fill = new SolidColorBrush(Colors.Red);
        Viewport3D.Children.Add(box);
        MeshGeometry3D geometry3 = box.Geometry();
        LinesVisual3D lines = new LinesVisual3D();
        lines.Thickness = 3;
        lines.Points = geometry3.Positions;
        lines.Transform = new TranslateTransform3D(3,1,1);
        Viewport3D.Children.Add(lines);
    
  3. 这导致以下显示:

    enter image description here

    如果我隐藏原始框并将LinesVisual3D放在框的顶部,我可以将wirefrime显示为原始对象,但它仍然缺少边的边缘。

1 个答案:

答案 0 :(得分:5)

通过调用MeshElement3D.Tesselate(),您可以获得MeshGeometry3D(网格)。

接下来创建一个LinesVisual3D对象。

将网格点复制到LinesVisual3D的点。

这将创建内部网格(参见来源:LinesVisual3D.cs in helix toolkit

最后,确保设置LinesVisual3D的厚度并将其添加到场景中。