【问题标题】:How to set up a 3d model using HelixToolkit.Wpf.SharpDX?如何使用 HelixToolkit.Wpf.SharpDX 设置 3d 模型?
【发布时间】:2021-01-17 22:01:33
【问题描述】:

我尝试使用 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 的新手。

【问题讨论】:

    标签: c# wpf helix-3d-toolkit


    【解决方案1】:

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

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

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

    有关更多信息,请参阅wiki page 和示例。

    【讨论】:

      猜你喜欢
      • 2017-12-21
      • 1970-01-01
      • 2023-01-12
      • 2013-08-25
      • 2014-02-12
      • 1970-01-01
      • 1970-01-01
      • 2020-08-25
      • 1970-01-01
      相关资源
      最近更新 更多