Лица некорректно отображаются в виджете QVTK - PullRequest
0 голосов
/ 19 июня 2020

Я пишу программу на C ++ с использованием Qt и VTK, которая использует виджет QVTK для отображения несколько простой структуры. Происходит вот что:

Body with bad culling

На мой взгляд, это выглядит так, как будто нормали вычисляются не так, как должны, в результате некоторые поверхности не отображаются должным образом. . Хотя затем я задаюсь вопросом, почему они вообще отображаются, учитывая, что я предполагаю, что библиотека выполняет отбраковку обратной стороны.
Обратите внимание, что я даю фигуре полную непрозрачность, и поэтому вы не сможете увидеть линии краев в

Дело в том, что я компилирую проект на двух разных машинах с разными версиями Qt и VTK, и на одной машине он работает нормально (Qt 4.8.5, VTK 5.6.1), в то время как на другой машине (Qt 3.3.8b, VTK 6.3) возникает ошибка, указанная выше.
Теперь я не совсем уверен, что проблемы совместимости этих библиотек являются причиной ошибки, и прежде чем я запрошу новое программное обеспечение для машины (для что мне пришлось бы заказать системному администратору) Я бы предпочел попробовать разные вещи.

Пока что я нашел вопрос SO QVTKWidget не отображает стены объектов , к которым, однако, обратился спрашивающий использовать другой язык программирования, чего я не могу.
Другой связанный вопрос: Визуализация VTK внутри не работает должным образом PyQt , хотя это для Python. Тем не менее, в принятом ответе рекомендуется использовать QGLWidget вместо QWidget для виджета, содержащего рисунок, что также можно сделать на C ++. К сожалению, у меня это не сработало.

Я также пробовал изменить порядок вершин в определении ячейки, перевернул порядок по одной оси (предполагая, что нормали по какой-то причине ориентированы в обратном направлении), сработало нет ни того, ни другого.

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

...