我尝试使用HelixToolkit.Wpf.SharpDX在WPF中渲染3d模型。
我的模型是静态的,由顶点缓冲区和一组三角形组成。每个三角形都有一个指定的材质,每个三角形点都有一个UV坐标和法线。
如何设置模型以实现:
- 不为每组具有相同材质的三角形复制索引缓冲区
- 用鼠标点击使整个模型可选
- 使用Helix Toolkit的PhongMaterial
- 使设置与MVVM兼容
- 良好的渲染性能
我浏览了Helix Tookit的存储库中的所有示例,但我真的对所有的MeshGeometry3D, MeshGeometryModel3D, Model3DCollection, Model3DGroup, Visual3D和UIElement3D类感到困惑,其中一些似乎只存在于WPF或Helix中,但其中一些存在于两个命名空间中,但行为不同。
我尝试为每个模型创建一个带有Model3DGroup的UIElement3D,然后为Model3DGroup添加一个具有PhongMaterial的GeometryModel3D和一个带有所有三角形的MeshGeometry3D。
我特别不确定如何处理我必须为每个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页面和示例。