2D-векторное моделирование для разработки игр

Создание клонирования астероидов (в C) Я скорее влюбился в векторные объекты, но я просто закодировал их как массивы x, y-point. Это было прекрасно для чего-то вроде астероидов, но что мне делать, если я хочу сделать более сложные 2D-модели?

Я отмечаю, что существует огромное количество программного обеспечения для 3D-моделирования, а также обширные учебные пособия и помощь по импорту трехмерных моделей в один C/С++ для использования с Open GL.

Однако меня больше интересует создание 2D векторных моделей, чем 3D, так как я с удовольствием продолжаю пытаться играть в 2D игры еще некоторое время. Существует ли такая концепция, как 2D-моделирование? Существуют ли инструменты для создания и экспорта 2D-моделей и библиотек для импорта 2D-моделей, или же просто создавать плоские модели в 3D-программном обеспечении, а затем импортировать эти файлы (например,.3ds,.ms3d) и размещать их на оси z?

Моя единственная мысль до сих пор, возможно, использовала что-то вроде Inkscape для моделирования, генерации SVG файлов, а затем использовать Cairo для импорта и рендеринга. Будет ли это работать хорошо или у вас есть другие рекомендации?

Примечание. Я немного новичок в моделировании любого типа, поэтому я могу задавать глупый вопрос...

Ответ 1

Что касается программирования двумерных векторных игр, то обычно это домен Flash и Flex.

Еще SVG и загрузка его через Каир представляется жизнеспособным решением. Хотя я позабочусь о том, чтобы у вас было ускорение аппаратного обеспечения (предпочтительно бэкэнд OpenGL).

Что касается 2D-форматов, вы не получите такой же поддержки, как для SVG для любого формата, поэтому я буду придерживаться его. Технически такие вещи, как Collada или X3D, поддерживают 2D-графику, но практически у них много бесполезных (для 2D-программистов) наворотов.

Ответ 2

Не нужно повышать свой собственный ответ, но я немного поработал над использованием SVG. Поскольку я использую OpenGL, кажется, что OpenVG может быть хорошим совпадением.

  • AmanithVG - коммерческая реализация OpenVG, построенная на OpenGL, с программным и аппаратным рендерингом. Загрузка доступна только для оценки, и она прекрасно работает, хотя я не знаю, сколько она стоит.
  • ShivaVG - автор был недоволен тем, что AmanithVG был коммерческим, поэтому сделал свою собственную реализацию с открытым исходным кодом в чистом ANSI C. Не было обновлено какое-то время. На SourceForge.
  • Anti-Grain Geometry - не уверен в этом. Я думаю, что есть поддержка SVG, но я думаю, что только программный рендеринг.
  • librsvg - использует Cairo в качестве основного бэкэнда для рендеринга SVG. Выглядит хорошо.

Кажется, что все, кроме librsvg, перестают фактически загружать файлы SVG, поэтому, вероятно, должен быть еще один шаг, на котором SVGs разбираются в соответствующие структуры OpenVG (которые в основном представляют собой большие массивы с плавающей точкой, поэтому не слишком жесткий). Кажется, что это похоже на взаимное сопоставление элементов из SVG в OpenVG, что является многообещающим. Насколько я могу судить, OpenVG был в значительной степени предназначен для SVG.

Я, вероятно, буду использовать ShivaVG. Может быть, это не идеально, но он привлекает тигра, и мне нравится чистая реализация C/OpenGL, и я серьезно сомневаюсь, что пока буду делать все, что сложнее.

Ответ 3

SVG - это путь для 2D:)

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