Как отобразить MeshElement3D в виде каркаса?

Я хотел бы отобразить любой MeshElement3D (например, BoxVisual3d) в helix-toolkit в виде каркаса. Как это можно сделать?

РЕДАКТИРОВАТЬ:

Благодаря ответу Эрно де Вирда я смог написать следующий код

  1. Класс, расширяющий BoxVisual3D

    public class GeometryBoxVisual3D : BoxVisual3D
    {
    
      public MeshGeometry3D Geometry()
      {
        return Tessellate();
      }
    }
    
  2. Добавьте экземпляр box в область просмотра:

        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 поверх коробки, я могу отобразить каркас, как если бы он был оригинальным объектом, но у него все еще отсутствуют края по бокам.

1 ответ

По телефону MeshElement3D.Tesselate() вы можете получить MeshGeometry3D (Сетка).

Далее создайте LinesVisual3D объект.

Скопируйте Точки сетки в Точки LinesVisual3D,

Это создаст внутреннюю сетку (см. Источники: LinesVisual3D.cs в наборе инструментов helix)

Наконец, убедитесь, что вы установили толщину LinesVisual3D и добавить его на сцену.

Другие вопросы по тегам