Как показать края фигур в WPF 3D HelixToolkit
Добрый день. Как показать края фигуры в WPF? Я реализую фигуру в WPF, но мне нужно получить каркас фигуры. Я пытался найти какое-либо руководство HelixToolkit, но это не удалось. Можете ли вы дать мне руководство HelixToolkit?
Мой код:
<h:HelixViewport3D ClipToBounds="true">
<h:DefaultLights/>
<h:LinesVisual3D Thickness="10">
<ModelVisual3D>
<ModelVisual3D.Content>
<GeometryModel3D>
<GeometryModel3D.Geometry>
<MeshGeometry3D
Positions=" 0,3,3 -3,3,3
-3,0,3 3,0,3
-3,0,-3 -3,3,0"
TriangleIndices=" 0,1,2 2,3,0 5,0,3
3,4,5 5,4,2 1,5,2
0,5,1 3,2,4"/>
</GeometryModel3D.Geometry>
<GeometryModel3D.Material>
<MaterialGroup>
<DiffuseMaterial Brush="GreenYellow" />
<SpecularMaterial Brush="WhiteSmoke" SpecularPower="30"></SpecularMaterial>
</MaterialGroup>
</GeometryModel3D.Material>
</GeometryModel3D>
</ModelVisual3D.Content>
<ModelVisual3D.Transform>
<Transform3DGroup>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D x:Name="RotateHorizontal" Axis="0 1 0" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D x:Name="RotateVertical" Axis="1 0 0" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Transform3DGroup>
</ModelVisual3D.Transform>
</ModelVisual3D>
</h:LinesVisual3D>
</h:HelixViewport3D>
0 ответов
Для достижения этой цели нет встроенных функций. Задачу можно разделить на несколько:
- Как получить четкую грань вашей модели,
- Как рисовать линии с помощью WPF (или Helix).
(1) Чтобы получить их, вам может потребоваться построить топологию вашей сетки -> зная связность треугольников. Я рекомендую структуру данных HalfEdge (если вам интересно, есть и другие, использующие WingEdge).
(2) WPF ничего не предоставляет с этой стороны, Helix предприняла попытку, но я не рекомендую ее... Лучше всего построить небольшой прямоугольник (используя 2 треугольника).
Вот пример того, что он может делать (я использую OpenGL и наложение голубого цвета, не беспокойтесь).
Без острых краев:
С острыми краями темно-синего цвета: