Простой каркасный формат? - PullRequest
5 голосов
/ 11 октября 2008

Я ищу простой формат файла для каркасных моделей. Я знаю о VRML, u3D и т. Д., Но они кажутся тяжелыми для моих нужд. Мои критерии:

  • Должен иметь четкую спецификацию. Либо открытый, либо очень хорошо установленный / задокументированный.
  • Мне нужны только простые модели - вершины и ребра. Я не хочу обращаться с лицами или объектами. Если формат поддерживает больше, это нормально, если я могу их игнорировать.
  • Инструменты для конечных пользователей не обязательны, но были бы хорошими. Если нет, он должен быть читаемым человеком (и редактируемым для простых моделей).
  • Было бы неплохо (но не обязательно) иметь возможность комментировать или, по крайней мере, помечать узлы.
  • Не важно, какой язык я использую, но возможны следующие варианты: Java / C ++ и OpenGL

Или мне просто лучше записать вершины / списки ребер в текстовый файл и покончить с этим?

Ответы [ 5 ]

7 голосов
/ 11 октября 2008

Wavefront OBJ - это очень простой формат текстового файла для хранения 3d-моделей, который поддерживается всеми приложениями для 3d-моделирования (например, maya, 3dsmax, lightwave), поэтому вы можете очень легко экспортировать и импортировать свои модели.

Вы можете прочитать больше и спецификации здесь:

http://www.fileformat.info/format/wavefrontobj/

Я бы не рекомендовал создавать свой собственный формат файла. Wavefront OBJ настолько прост, насколько это возможно, и хорошо определен.

Вот пример плоскости 2х2. v для координат вершин, f для описания граней (какие вершины соединены):

v -0.500000 -0.000000 0.500000
v 0.000000 -0.000000 0.500000
v 0.500000 -0.000000 0.500000
v -0.500000 0.000000 0.000000
v 0.000000 0.000000 0.000000
v 0.500000 0.000000 0.000000
v -0.500000 0.000000 -0.500000
v 0.000000 0.000000 -0.500000
v 0.500000 0.000000 -0.500000
v -0.500000 -0.000000 0.500000
v 0.000000 -0.000000 0.500000
v 0.500000 -0.000000 0.500000
v -0.500000 0.000000 0.000000
v 0.000000 0.000000 0.000000
v 0.500000 0.000000 0.000000
v -0.500000 0.000000 -0.500000
v 0.000000 0.000000 -0.500000
v 0.500000 0.000000 -0.500000
f 1/1 2/2 5/5 4/4
f 2/2 3/3 6/6 5/5
f 4/4 5/5 8/8 7/7
f 5/5 6/6 9/9 8/8
f 10/10 11/11 14/14 13/13
f 11/11 12/12 15/15 14/14
f 13/13 14/14 17/17 16/16
f 14/14 15/15 18/18 17/17
3 голосов
/ 11 октября 2008

Я не знаю каких-либо форматов, которые активно нацелены на каркасные представления. (Только край / вершина) Вам почти всегда придется иметь дело с гранями как минимум. К счастью, здесь есть то, что если у вас нет особой нужды ни в чем, кроме рендеринга каркасного списка ребер, можно сделать практически любым API из списка граней.

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

Если ни один из них не отвечает вашим потребностям, возможно, посмотрите на COLLADA . Вероятно, это не сработает для вас само по себе, но вы можете написать быстрый экспортер в свой собственный формат, который содержит только информацию о ребрах / вершинах, и в этот момент у вас по существу есть поддержка для каждого пакета моделирования на планете:)

1 голос
/ 11 октября 2008

Формат POV-Ray RAW треугольника - это то, что я считаю самым простым. Вы действительно не можете быть проще по моему мнению. Я реализовал загрузку для этого за считанные минуты - это действительно очень простой формат .

1 голос
/ 11 октября 2008

Может быть проще сделать эти списки в текстовом файле. Это первое, что пришло мне в голову!

0 голосов
/ 18 ноября 2008

OBJ является наиболее распространенным и простым, но он ломается, если вам нужно больше, чем положение вершины, нормаль и одна координата текстуры. Это не расширяемо вообще. Он также основан на тексте, поэтому у него проблемы с большими сетками.

GTO становится новым форматом обмена. Это просто, быстро и расширяемо, и есть проверенный на практике открытый исходный код для чтения и записи:

Формат файла Gto

Это использовалось в производстве в нескольких VFX и игровых студиях, и все же работа над написанием загрузчика в виде файла OBJ примерно такая же (и один из примеров - конвертер OBJ в GTO).

Проверьте это и помогите остановить распространение вируса раздувания Collada.

...