Рекомендуемые форматы файлов и графические библиотеки для импорта 3D-модели в проект OpenGL / C ++?

Если вы хотите:

  • моделировать объект в 3D-редакторе, например Блендер, майя и др
  • экспортировать модель в формат данных / файлов
  • импортировать модель в проект, используя OpenGL и C / C ++

Затем:

  • В какой формат файла вы бы порекомендовали экспортировать, т. Е. С точки зрения простоты, переносимости и совместимости (то есть общего / популярного)?
  • Какие графические библиотеки вы бы порекомендовали использовать для импорта модели в ваш проект OpenGL C / C ++ (т.е. желательно с открытым исходным кодом)?
  • Кроме того, существуют форматы данных / файлов, которые также фиксируют анимацию, то есть формат «анимированной модели», так что анимация может моделироваться в 3D-редакторе и каким-либо образом вызываться внутри кода (например, доступ к кадрам в последовательности анимации или некоторый другой парадигма для сохранения / загрузки деталей, связанных с изменениями во времени)?

Вообще говоря, я ищу простоту как приоритет, то есть помогаю начать с объединения моих знаний как в искусстве, так и в информатике. Я — специалист по информатике в UMass, и в то же время, как псевдо-двойник по искусству, изучая факультеты графического дизайна в моем университете, а также посещая занятия в Художественном институте Бостона во время летних / зимних занятий. Другими словами, я не новичок в полной мере, но в то же время я не хочу, чтобы опции были настолько перегружены сумасшедшими продвинутыми конфигурациями, которые слишком усложняли бы начало работы с базовым демонстрационным проектом; то есть как первый шаг к пониманию того, как преодолеть разрыв между этими двумя мирами, например, создание программы с 3D персонажем, с которым пользователь может взаимодействовать.

27

Решение

COLLADA (Я говорю это с «ах» в конце), и Assimp (вот так)

И так, почему КОЛЛАДА? Просто:

  • COLLADA — это открытый стандарт, разработанный Khronos (в частности, Sony). Прелесть формата открытого стандарта в том, что он, ну, стандарт! Вы можете быть уверены, что любой вывод продукта, соответствующего стандарту, также будет правильно прочитан другим продуктом, соответствующим стандарту. К сожалению, некоторые продукты трехмерного моделирования не настолько специфичны в своих критериях соответствия стандартам COLLADA. Но все же будьте уверены: Blender, Maya, 3ds Max и все другие громкие имена в 3d моделировании имеют хорошую поддержку этого формата.
  • COLLADA использует XML. Это значительно упрощает вашу задачу, если вы планируете создать своего собственного читателя или писателя.
  • ДОПОЛНИТЕЛЬНО: Я думаю, COLLADA — единственный формат, который не привязан к конкретной компании. Вы знаете, это очень хорошо для нас.
  • ДОПОЛНИТЕЛЬНО 2: Известно, что COLLADA медленно анализируется. Это правда. Но подумайте об этом: все другие недвоичные форматы (например, fbx) имеют те же проблемы. Для ваших нужд достаточно COLLADA.
  • ДОПОЛНИТЕЛЬНО 3: COLLADA поддерживает анимацию!

Для библиотеки импортера я настоятельно рекомендую Assimp. Зачем?

  • Assimp поддерживает любые популярные форматы, которые вы можете себе представить. Он имеет унифицированный интерфейс для всех форматов, поэтому переключение на другой формат не вызывает никаких трудностей.
  • Ассимп расширяемый. Таким образом, вы можете импортировать свой собственный формат и при этом не изменять свой код.
  • ДОПОЛНИТЕЛЬНО 4: Ассимп это Открытый исходный код! Давайте поддерживать программное обеспечение с открытым исходным кодом!
13

Другие решения

Первый , Вот Вы можете прочитать о предлагаемой модели загрузки lbs.Lib Assimp Это действительно хорошо и поддерживает много форматов. Для предпочтительных форматов. Коллада-я бы не рекомендовал, потому что это форматы на основе XML (текст), которые медленно анализируются. Формат obj также широко распространен, но страдает от тех же проблем, что и Collada. Он по-прежнему хорош, если вы хотите написать собственный синтаксический анализатор, поскольку его структура очень проста. Но вместо этого я бы предложил 3D-файлы, которые являются двоичными. Хотя анимация не поддерживается . Самым популярным форматом сегодня, который поддерживает статическую сетку и анимацию, является FBX. скачать бесплатно FBX SDK от Autodesk и подключите его к вашему движку. Причина, по которой я бы выбрал FBX, заключается в том, что и SDK, и формат действительно надежны. Например, в FBX можно встраивать не только геометрию и анимацию, но и объекты сцены, такие как источники света, камеры и т. Д. Документы Autodesk тоже очень хорошие.
Надеюсь, поможет.

5

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

Затем я написал бы отдельную программу, использующую assimp, которая принимает практически любой формат и записывает файл в произвольном формате. Затем вы можете использовать Collada или еще что-нибудь для хранения ваших реальных моделей, но не иметь гибкости и медленной загрузки этого формата во время выполнения.

3