Как настроить 3d модель с помощью HelixToolkit.Wpf.SharpDX?

Я пытаюсь визуализировать 3d-модели в WPF с помощью HelixToolkit.Wpf.SharpDX.

Мои модели статичны и состоят из буфера вершин и набора треугольников. Каждому треугольнику назначен материал, и каждая точка треугольника имеет координату UV и нормаль.

Как настроить модель для достижения:

  • не дублировать индексный буфер для каждой группы треугольников с одинаковым материалом
  • возможность выбора всей модели одним щелчком мыши
  • с помощью PhongMaterial из Helix Toolkit
  • сделать установку совместимой с MVVM
  • хорошая производительность рендеринга

Я просмотрел все примеры в репозитории Helix Tookit, но меня действительно путают все классы MeshGeometry3D, MeshGeometryModel3D, Model3DCollection, Model3DGroup, Visual3D и UIElement3D, некоторые из которых, похоже, существуют только в WPF или Helix, но некоторые из них они существуют в обоих пространствах имен, но ведут себя по-разному.

Я попытался создать UIElement3D с Model3DGroup для каждой модели, затем добавить GeometryModel3D с PhongMaterial и MeshGeometry3D со всеми треугольниками для каждого материала в Model3DGroup.

Я особенно не уверен, что делать с буфером вершин, который я должен определять для каждого MeshGeometry3D. Значит ли это, что при рендеринге он будет продублирован? Нужно ли мне разделять все вершины на буферы вершин для каждой группы треугольников с одним и тем же материалом, или я могу просто назначить один и тот же буфер вершин каждой группе треугольников?

Я знаком с OpenGL и DirectX, но новичок в WPF и Helix Toolkit.


person MrSparkle    schedule 17.01.2021    source источник


Ответы (1)


Инструментарий Helix не использует буфер вершин напрямую. Вам необходимо преобразовать данные индекса вершин и треугольников в набор инструментов спирали MeshGeometry3D и передать материал и MeshGeometry3D в MeshGeometryModel3D.

Также вас, кажется, смущают HelixToolkit.wpf и HelixToolkit.wpf.sharpdx. Это две отдельные библиотеки.

Model3DCollection, Model3DGroup, Visual3D и UIElement3D доступны только в Helixtoolk.wpf, но не в Helixtoolkit.wpf.sharpdx.

Дополнительную информацию см. На странице wiki и примерах.

person Lance H    schedule 18.01.2021