Формат файла для статических и анимированных 3D моделей


22

В настоящее время я пишу 3D-игру на C ++ с OpenGL и перехожу к той части, где нужно загружать 3D-модели. Поэтому я ищу популярные форматы файлов и методы для

  • отображать статические сетки и
  • рендеринг анимированных сеток.

Я уже нашел довольно большое количество возможных форматов и техник, таких как анимация ключевых кадров, скелетная анимация, от MD2 до MD5, 3DS, X, Collada и т. Д.

Для простоты я хотел бы использовать формат (и технику), который допускает как статические, так и анимированные сетки. Поэтому мой вопрос: подходит ли один формат для этой задачи и какой вы бы предложили? И чтобы уточнить: мне не нужны супер-плавные анимации или новые функции.

Sidenote: Поскольку я фанат блендера (но не эксперт ;-)), было бы полезно, если бы его можно было использовать с этим - но, конечно, это не должно быть ограничителем шоу, здесь.

Ответы:


16

Позвольте мне предложить вам использовать Collada .

Он широко поддерживается инструментами DCC и хорошо стандартизирован. Он поддерживает скелетную анимацию и ... ну, он делает почти все, включая шейдеры и физику - они не будут актуальны для вас.

Анимации на основе вершин, такие как в форматах MDL или MD2, являются более или менее пережитком прошлого. Сегодня большинство анимаций представляют собой скелетные анимации (т. Е. Подумайте, гладко ли сфальсифицированы персонажи), и инструменты создания контента для них оптимизированы.

У Blender есть работающий экспортер Collada, но, как всегда, экспорт вещей из Blender может раздражать. Возможно, вам придется попробовать альтернативные экспортеры или форматы файлов или взломать сценарии вручную, если у вас возникнут проблемы.

Чтобы загрузить Collada, используйте библиотеки, такие как FCollada или ColladaDOM (не пытайтесь разобрать его самостоятельно, Collada - действительно толстый монстр XML ...). Также есть Open Asset Import Library , которая загружает ~ 25 форматов файлов, включая Collada (и все другие форматы, которые вы упомянули). Это был бы отличный выбор, поскольку он нацелен на разработчиков игр и обеспечивает вывод в формате, подходящем для рендеринга в реальном времени. Но, если честно: я один из его соавторов, поэтому я, вероятно, немного предвзят.

И последнее, но не менее важное : формат файла, который вы используете для импорта ваших активов, не должен определять возможности вашего движка и техник, которые он использует, - скорее, он должен быть наоборот. Является ли ваша анимация сверхгладкой, вопрос не в формате импорта, а в том, какую технику вы используете для анимации сеток и насколько хорошо они моделируются в первую очередь. Формат импорта должен просто помочь вам перенести данные из Blender в вашу игру.


Большое спасибо за ваш подробный ответ. Сегодня я впервые услышал о Collada (по рекомендации друга) и не был уверен, действительно ли он готов к использованию в производственной среде. Я сейчас попробую, спасибо. :-)
— stschindler

2
Хороший совет, особенно ссылка на AssImp. Однако я бы не предложил COLLADA, так как никто не может последовательно и правильно поддерживать все это, и он достаточно велик для реальных целей контента. Я бы предложил использовать что-то вроде MD5, которое дает вам скелет и довольно широко реализовано правильно (я думаю). Я бы тоже так легко не отмахнулся от MD2; Есть много примеров моделей для этого, и вы можете тривиально анимировать это дешево (хотя это бесполезно для тряпичных кукол или чего-то еще).
— ChrisE

Я просто поиграюсь с разными форматами файлов. Благодаря AssImp это будет легко сделать. MD2 действительно была моей первой идеей, однако, я думаю, ее создание довольно дорого, вместо того, чтобы просто экспортировать нужные кости. Ragdolls в моем случае не нужны, мне просто нужны анимированные модели, без физики.
— stschindler

Есть действительно очень плохие экспортеры Collada, но по крайней мере этот формат хорошо документирован, поэтому вы всегда знаете, кого винить :-). MD5 тоже хороший кандидат, но я не знаю, насколько хороши экспортеры Blender. MD2 имеет очень ограниченное представление вершин и страдает от ограничения размера и точности. Я бы на самом деле не использовал его, для этого нет никаких оснований.
— Александр Гесслер

wazim.com/Collada_Tutorial_1.htm - довольно хорошее углубленное руководство по загрузке collada, но я все равно рекомендую использовать библиотеку.
— Exilyth
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.