微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

我的模型是静态的,由一个顶点缓冲区和一组三角形组成。每个三角形都有一个指定的材质,每个三角形点都有一个 UV 坐标和一个法线。

我如何设置模型来实现:

  • 不要为每组相同材质的三角形复制索引缓冲区
  • 点击鼠标即可选择整个模型
  • 使用 Helix Toolkit 的 phongMaterial
  • 使设置与 MVVM 兼容
  • 良好的渲染性能

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

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

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

我熟悉 OpenGL 和 DirectX,但我不熟悉 WPF 和 Helix Toolkit。

解决方法

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

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

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

有关详细信息,请参阅 wiki page 和示例。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。