Я пытаюсь визуализировать 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.