我想在helix-toolkit中将任何MeshElement3D(例如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显示为原始对象,但它仍然缺少边的边缘。
答案 0 :(得分:5)
通过调用MeshElement3D.Tesselate()
,您可以获得MeshGeometry3D
(网格)。
接下来创建一个LinesVisual3D
对象。
将网格点复制到LinesVisual3D
的点。
这将创建内部网格(参见来源:LinesVisual3D.cs in helix toolkit)
最后,确保设置LinesVisual3D
的厚度并将其添加到场景中。