LINUX.ORG.RU

Qt редактирование многоугольников

 ,


0

2

Доброго времени суток всем! С-но, встала передо мной небольшая задачка - знакомый попросил написать примитивный редактор уровней. Суть в том, что уровни состоят из многоугольников, которые в дальнейшем будут затекстурированы. Есно задача редактора создавать многоугольники, редактировать и сохранять их координаты в файл. Начал я копать в данном направлении. Вот задача: 1. В редакторе можно создать фигуру(по умолчанию 3,4,5-угольник) 2. Есть режим редактирования объекта и режим редактирования вершин. Выбирается мышью. 2. В режиме редактирования вершин, каждая вершина фигуры доступна для перемещения, после чего фигура изменяется(можно не в реальном времени, а после отпускания мыши) 3. В режиме редактирования объекта, его можно перемещать или вращать 4. В идеале, хотелось бы иметь возможность добавления новых вершин

А теперь вопрос, как это реализовать в теории? На каком уровне работать с объектами? Допустим, отдельную вершину можно сделать классом, наследуемым от QGraphicsItem. Переопределить метод paint(), добавить возможность передвижения мыши. Но как сделать, чтобы все вершины одного элемента соединялись линиями? И как сделать, чтобы в режиме редактирования объекта осуществлялось именно перемещение-вращение всего многоугольника? Или же может стоит сделать класс Многоугольника, у которого есть динамический список вершин? С одной стороны это плюс в том плане, что проще будет текстурировать. В общем, решил я лучше сперва спросить умных людей. Подскажите плз, как бы вы это реализовали в теории?


реализовал бы на SDL в режиме GL. могу помочь с кусками кода. мне такое тоже нужно. возможно и проспонсировал бы

rimsleur
()

Или же может стоит сделать класс Многоугольника, у которого есть динамический список вершин?

Да, только вершины тоже в виде класса, но не QGraphicsItem, а обычного.

С вращать/перемещать в QGraphicsScene проблем нет, трансформации там есть из коробки. С изменением вершин нужно поработать руками. Само перемещение и т.д. делается через drag-n-drop в т.ч. перерисовка на лету.

no-such-file ★★★★★
()

По QGraphicsScene есть куча примеров изкоробки, полностью покрывающих вопрос.

schizoid ★★★
()

Если знакомому нужен конечный результат, то почему бы не рассмотреть возможность использования Blender?

Тогда потребуется написать только скрипт экспорта данных уровня (мешей, текстур, объектов освещения, камер и т.д.) в собственный формат. А все возможности по визуальному редактированию оставить блендеру.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.