如何使用 HelixToolkit.Wpf.SharpDX 设置 3d 模型?

How to set up a 3d model using HelixToolkit.Wpf.SharpDX?

我尝试使用 HelixToolkit.Wpf.SharpDX 在 WPF 中渲染 3d 模型。

我的模型是静态的,由一个顶点缓冲区和一组三角形组成。每个三角形都分配了一个 material,每个三角形点都有一个 UV 坐标和一个法线。

如何设置模型实现:

我浏览了 Helix Tookit 存储库中的所有示例,但我真的对所有 MeshGeometry3D、MeshGeometryModel3D、Model3DCollection、Model3DGroup、Visual3D 和 UIElement3D 类感到困惑,其中一些似乎只存在于 WPF 或 Helix 中,但其中一些存在于两个命名空间中但行为不同。

我尝试为每个模型创建一个带有 Model3DGroup 的 UIElement3D,然后将具有 PhongMaterial 的 GeometryModel3D 和 MeshGeometry3D 添加到每个 material 的所有三角形到 Model3DGroup。

我特别不确定如何处理我必须为每个 MeshGeometry3D 定义的顶点缓冲区。这是否意味着它会在渲染时被复制?对于具有相同 material 的每组三角形,我是否需要将所有顶点分离到顶点缓冲区中,或者我是否可以为每个三角形组分配相同的顶点缓冲区?

我熟悉 OpenGL 和 DirectX,但我是 WPF 和 Helix Toolkit 的新手。

Helix 工具包不直接获取顶点缓冲区。您需要将顶点和三角形索引数据转换为螺旋工具包 MeshGeometry3D,并将 material 和 MeshGeometry3D 传递给 MeshGeometryModel3D。

此外,您似乎对 HelixToolkit.wpf 和 HelixToolkit.wpf.sharpdx 感到困惑。这是两个独立的库。

Model3DCollection、Model3DGroup、Visual3D 和 UIElement3D 仅在 Helixtoolk.wpf 中可用,在 Helixtoolkit.wpf.sharpdx 中不可用。

请参阅 wiki page 和示例了解更多信息。