Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 如何将MeshElement3D显示为线框?_Wpf_Helix 3d Toolkit - Fatal编程技术网

Wpf 如何将MeshElement3D显示为线框?

Wpf 如何将MeshElement3D显示为线框?,wpf,helix-3d-toolkit,Wpf,Helix 3d Toolkit,我想在helix toolkit中将任何(例如BoxVisual3d)显示为线框。如何做到这一点 编辑: 感谢Erno de Weerd的回答,我能够编写以下代码 类,该类扩展了BoxVisual3D public class GeometryBoxVisual3D : BoxVisual3D { public MeshGeometry3D Geometry() { return Tessellate(); } } 将长方体实例添加到视口中: GeometryB

我想在helix toolkit中将任何(例如BoxVisual3d)显示为线框。如何做到这一点

编辑:

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

  • 类,该类扩展了BoxVisual3D

    public class GeometryBoxVisual3D : BoxVisual3D
    {
    
      public MeshGeometry3D Geometry()
      {
        return Tessellate();
      }
    }
    
  • 将长方体实例添加到视口中:

        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);
    
  • 这将导致以下显示:


    如果隐藏原始长方体并将LinesVisual3D放置在长方体顶部,则可以将wirefrime显示为原始对象,但仍缺少侧面的边

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

    接下来创建一个
    LinesVisual3D
    对象

    将网格点复制到
    线visual3d
    的点

    这将创建内部网格(请参见源:)


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

    谢谢。几个问题:1。Tesselate方法在MeshElement中受保护,这是否意味着我必须扩展BoxVisual3d?2.当我扩展BoxVisual3d并在其上使用Tesselate来获取LinesVisual3D的位置并显示它时,我只会看到显示的顶部方块,而不会看到整个线框。如何创建完整的线框,包括侧面的线?1。是的,这似乎是获得网格的唯一方法。2.细分代码中可能存在错误,或者算法导致背面剔除。只需打印出点并手动检查。@Dan-之所以只看到一部分面,是因为“位置”集合通常只包含每个点一次。“索引”集合包含这些点之间的关系以创建三角形。因此,您需要循环索引(前3个是第一个三角形的点的索引),并将所有三角形的所有边添加到点集合中。如果你需要帮助,请告诉我