2009-02-21 8 views
32

Я пишу игровой движок, и мне интересно, какой формат 3D-модели следует использовать/загрузить/экспортировать? Obj кажется универсальным и легким, но он также кажется ненадежным в том, что большинство моделей там содержат ошибки, и он не хранит нигде почти так же, как другие форматы.Какой формат 3D-модели я должен использовать?

Существуют форматы, специально предназначенные для игр, таких как MD2/3/5, но я не уверен, я использую wings3d, если я моделирую, и я не знаю, какие другие детали, помимо чисто загрузки, что мне нужно, и поддержка от Идентификатор формата должен реализовываться, например, мне нужно будет реализовать IK? и могу ли я использовать сценарий для анимации за штуку, а не обратную кинематику и фальсификацию костей?

ответ

22

Collada это открытый формат на основе XML для 3D моделей, принадлежащих группе Khronos (OpenGL стандарты тела)

От Collada.org FAQ:

The COLLADA 1.4.х набор функций включает в себя:

  • геометрии сетки
  • Transform иерархии (вращение, перевод, сдвиг, масштаб, матрицы)
  • Эффекты
  • шейдеры (Cg, GLSL, GLES)
  • материалы
  • Текстуры
  • Фары
  • Камеры
  • Skinning
  • Animation
  • Physics (твердые тела, ограничение, тряпичные куклы, столкновение, тома)
  • Инстанцирования
  • Методы
  • Multirepresentations
  • Активов
  • Данные пользователя
+15

Я бы не использовал этот формат для графики в реальном времени. Collada предназначен как промежуточный формат для графических производственных трубопроводов. Используйте его для преобразования в более компактный двоичный формат, или он будет ждать весь день для его загрузки. –

+0

Также учтите, что не все инструменты поддерживают весь набор функций COLLADA. –

+0

В конце я пошел с библиотекой ASSIMP для загрузки геометрии, чтобы каждый мог использовать то, что им нравится, пока они поддерживают необходимые атрибуты. –

2

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

Collada может стоить того. Я не думаю, что это так хорошо, как формат, который должен читать 3D-движок. Это нормально, как общий формат обмена данными.

http://www.collada.org/mediawiki/index.php/Main_Page

5

Перед тревожиться о том, что 3D-форматы вы хотите поддержать, я думаю, вы должны действительно сосредоточиться на том, что функции, которые вы планируете реализовать в вашем двигателе. Запишите их как требования и выберите формат, который поддерживает большинство функций из списка ... поскольку вы хотите продемонстрировать свой движок (я предполагаю, что вы планируете публиковать свой движок). Возможно, вы даже захотите свернуть свой собственный формат, если ваш движок имеет определенные функции (что всегда хорошо для игрового движка).

После этого поддерживайте как можно больше популярных форматов (.X, .3DS, .OBJ, .B3D) ... чем доступнее ваш движок, тем больше людей захочет с ним работать!

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

1

хорошо поддерживает Collada, а затем поставлять хорошие конвертеры в/из другие форматы (это может быть тяжелая часть). Это даст вам максимальную гибкость. Взгляните на C4 engine

-1

Collada отлично, но он больше подходит для 3D-приложений. т.е. он лучше всего используется для передачи трехмерных данных между приложениями, а не для загрузки 3D-данных из игрового движка. Вы заглянули в Луа? Он широко используется в играх, потому что его язык сценариев, который является смехотворно быстрым (идеально подходит для игр) и очень гибким (может использоваться для представления любых данных, которые вам нужны для вашего движка).

+5

Lua - это язык программирования, а не формат модели. – Dirbaio

+0

Конечно :), но Lua может представлять матрицы, поэтому создание 3D-модели/парсера - это то, что можно сделать. – Mathew

+2

Проголосовали - некоторые люди отвечают на «Lua» на любой интересующий их вопрос. – BitTickler

2

+1 для Collada. Вы также можете использовать собственный бинарный формат для очень быстрой загрузки (обычно это просто двоичный дамп данных вершинного/индексного буфера, плюс данные материала и скелета и данные о столкновении, если это необходимо).

Одной из тенденций в индустрии игр является поддержка загрузки формата, такого как collada в сборке разработчика, но и инструментальная цепочка, которая экспортирует оптимизированную версию для выпуска. Версия разработчика может обновлять сетку динамически, так как художники сохраняют изменения, файл автоматически перезагружается, что позволяет им (почти) мгновенное представление WYSIWYG их модели, но при этом обеспечивает полностью оптимизированный формат выпуска.

+2

О собственном двоичном формате, стоит отметить, что уже существует стандартный двоичный формат XML: http://en.wikipedia.org/wiki/Binary_XML – Hibou57

+0

@ Hibou57 Ну, не совсем. Ни один из них не является отраслевым стандартом – RecursiveExceptionException