Отображение сетки в памяти в сцене QML - PullRequest
0 голосов
/ 18 февраля 2019

В моем приложении я создаю трехмерную сетку из набора медицинских данных.Теперь я хотел бы показать это в приложении Qt в QML.Я уже нашел, как показать сетку из файлов, но это требует, чтобы я сохранял сетку каждый раз, когда она изменялась (например, путем изменения параметров сегментации)

Mesh {
    id: mesh
    source: "mesh.obj"
}

Я хотел бы показать сетку вТрехмерный просмотрщик без необходимости сначала сохранять сетку в файл.

Как я могу сделать это в QML?

1 Ответ

0 голосов
/ 19 февраля 2019

Qt3D в основном обертывает OpenGL, что означает, что вы можете приступить к загрузке данных меша в графическую карту известным способом, используя объекты массива вершин / индексов - но, конечно, через классы Qt3D, а не собственные классы OpenGL.

Посмотрите на этот код примера Qt3D, где они создают треугольник только в памяти.Вы можете довольно легко перевести все инструкции C ++ в дерево QML.Что вам нужно сделать, это перенести данные вершин, которые у вас уже есть, в ваши атрибуты.Затем Qt3D должен нарисовать ваш меш, если вы оставили политику рендеринга на вашем RenderSettings в Always.

Если у вас нет данных меша, присутствующих в C ++, альтернативой является написание собственного класса C ++, который отображаетваши данные в формате, как в примере, а затем сделать его доступным для QML.

Редактировать

Похоже, что существует проблема при попытке передачи данных вершин напрямуюв Qt3D в QML, потому что он не может быть преобразован в QByteArray.Но вот пример , как решить эту проблему с помощью пользовательского класса C ++.

...