如何在WPF 3D HelixToolkit中显示图形边缘

时间:2016-04-17 16:50:48

标签: c# wpf xaml 3d wireframe

美好的一天。如何在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>

1 个答案:

答案 0 :(得分:0)

没有内置功能可以实现此目标。您的问题可以分为不同的问题:

  1. 如何获得模型的优势,
  2. 如何使用WPF(或Helix)绘制线条。

(1)要获得这些,可能需要构建网格的拓扑->了解三角形的连通性。我建议使用HalfEdge数据结构(如果您有好奇,还可以使用WingEdge。)

(2)WPF并没有提供任何支持,Helix进行了尝试,但我不建议这样做……您最好的选择是建立一个小矩形(使用2个三角形)。

这是它可以做什么的一个示例(我使用OpenGL和浅蓝色的覆盖层,不要打扰)。

没有锋利的边缘:

without sharp edges

深蓝色的锐利边缘:

with sharp edges in dark blue