Какой формат 3D-модели мне следует использовать?
Я пишу игровой движок, и мне интересно, какой формат 3D-модели мне использовать / загрузить / экспортировать? Obj кажется универсальным и простым, но он также кажется ненадежным в том смысле, что большинство моделей содержат ошибки, и он не хранит ничего, кроме других форматов.
Похоже, существуют форматы специально для игр, такие как MD2/3/5, но я не уверен, что я использую wing3d, если я моделирую, и я не знаю, какие еще детали, кроме простой загрузки того, что мне нужно, и поддержки из формата Id должны реализовать, например, мне нужно было бы реализовать IK? и можно ли использовать скриптовую анимацию за штуку, а не инверсную кинематику и такелаж кости?
6 ответов
Collada - это открытый формат XML для 3d-моделей, принадлежащий группе Khronos (орган по стандартизации OpenGL)
Из часто задаваемых вопросов Collada.org:
Набор функций COLLADA 1.4.x включает в себя:
- Геометрия сетки
- Преобразование иерархии (вращение, перемещение, сдвиг, масштаб, матрица)
- Последствия
- Шейдеры (Cg, GLSL, GLES)
- материалы
- текстуры
- огни
- камеры
- зачистка
- Анимация
- Физика (твердые тела, ограничения, тряпичные куклы, столкновения, объемы)
- Конкретизация
- методы
- Multirepresentations
- активы
- Данные пользователя
Прежде чем беспокоиться о том, какие 3D-форматы вы хотите поддерживать, я думаю, вам стоит сосредоточиться на том, какие функции вы планируете реализовать в своем движке. Запишите их как требования и выберите формат, который поддерживает большинство функций, из списка... так как вы захотите продемонстрировать свой движок (я предполагаю, что вы планируете сделать свой движок общедоступным). Возможно, вы даже захотите свернуть свой собственный формат, если у вашего движка есть специфические особенности (что всегда полезно иметь для игрового движка).
После этого поддерживайте как можно больше популярных форматов (.X, .3DS, .OBJ, .B3D)... чем доступнее ваш движок, тем больше людей захотят с ним работать!
Collada - это хороший и универсальный формат, но, как упоминает Нильс, он не является идеальным форматом для окончательного развертывания.
+1 за коллада. Вам также может потребоваться собственный собственный двоичный формат для действительно быстрой загрузки (обычно это просто двоичный дамп данных буфера вершин / индексов, а также данные материала и скелета, а также данные о столкновениях, если необходимо).
Одной из тенденций в игровой индустрии является поддержка загрузки формата, подобного collada, в сборке движка для разработчиков, но также имеется набор инструментов, который экспортирует оптимизированную версию для выпуска. Версия разработчика может динамически обновлять сетку, поэтому, когда художники сохраняют изменения, файл автоматически перезагружается, предоставляя им (почти) мгновенный WYSIWYG-просмотр их модели, но при этом обеспечивая полностью оптимизированный формат выпуска.
Я использую свой собственный двоичный формат. Я пытался использовать существующие форматы, но всегда сталкивался с ограничениями. Некоторых можно обойти, другие где покажут.
Коллада может стоить посмотреть. Я не думаю, что это так хорошо, как формат для чтения 3D движком. Это хорошо, как общий формат обмена данными, хотя.
Хорошо поддерживать Collada, а затем поставлять хорошие конвертеры в / из других форматов (это может быть трудной частью). Это даст вам максимальную гибкость. Посмотрите на двигатель C4
Collada великолепна, но она больше живет в 3D-приложениях. то есть лучше всего использовать для передачи 3D-данных между приложениями, а не для загрузки 3D-данных из игрового движка. Вы смотрели на Луа? Он широко используется в играх, потому что это язык сценариев, который смехотворно быстр (идеально подходит для игр) и очень гибок (может использоваться для представления любых данных, необходимых для вашего движка).