Открыть сервисСервис

Формат OBJ — текстовый формат 3D-моделей

OBJ — текстовый формат хранения трёхмерных моделей, описывающий геометрию объекта в виде списков координат вершин, текстурных координат, нормалей и полигонов (обычно треугольников или четырёхугольников). Файл с расширением .obj легко читается человеком, не использует сжатие и может сопровождаться отдельным материалом в формате .mtl (Material Template Library), в котором описываются цвета, текстуры и оптические свойства поверхностей.

История и назначение

Формат разработан компанией Wavefront Technologies для своего пакета анимации Wavefront Advanced Visualizer и впоследствии стал одним из наиболее распространённых обменных форматов 3D-графики. Спецификация формата открыта и документирована, поэтому поддержка OBJ реализована практически во всех 3D-редакторах и движках: Blender, 3ds Max, Maya, Cinema 4D, ZBrush, а также в игровых движках и научном ПО для визуализации.

Основное назначение OBJ — перенос геометрии между программами. Формат не поддерживает анимацию, скелетную деформацию, сцену как таковую (положение объектов, иерархию), скрипты и сложные шейдеры — только статичную геометрию и базовые материалы.

Структура файла

OBJ — обычный текстовый файл, каждая строка которого содержит команду (ключевое слово) и её параметры. Основные команды:

КомандаНазначение
v x y zКоординаты вершины (опционально w)
vt u vТекстурная координата (UV)
vn x y zНормаль вершины
f v/vt/vn ...Полигон (грань), составленный из вершин
mtllib file.mtlСсылка на файл материалов
usemtl nameПрименение материала к последующим граням
o nameИмя объекта
g nameИмя группы
s flagУправление сглаживанием (smoothing group)

Простой пример содержимого OBJ-файла, описывающего треугольник:

`` mtllib triangle.mtl v 0.0 0.0 0.0 v 1.0 0.0 0.0 v 0.0 1.0 0.0 vt 0.0 0.0 vt 1.0 0.0 vt 0.0 1.0 vn 0.0 0.0 1.0 usemtl Material1 f 1/1/1 2/2/1 3/3/1 ``

Строка f ссылается на вершину, текстурную координату и нормаль по их порядковым номерам, начиная с единицы. Отрицательные индексы допускаются и отсчитываются от конца списка. Полигон может состоять из произвольного числа вершин (n-угольник), но многие движки и редакторы при импорте разбивают его на треугольники.

Формат материалов MTL

Файл .mtl задаёт свойства поверхностей: диффузный цвет (Kd), зеркальный (Ks), эмиссию (Ke), прозрачность (d), коэффициент освещённости (Ka), а также карты текстур — диффузную (map_Kd), нормальную (map_Bump), отражений (map_Ks) и другие. MTL подключается командой mtllib, а применение конкретного материала к граням задаётся командой usemtl.

Достоинства и ограничения

Достоинства:

  • Простота и прозрачность: файл легко читать и генерировать программно без сторонних библиотек.
  • Широкая поддержка: практически универсальный формат обмена между 3D-пакетами, движками, CAD-системами и научным ПО.
  • Открытая спецификация, не привязанная к конкретному вендору.
  • Возможность ручного редактирования и отладки.

Ограничения:

  • Отсутствие анимации, костей, сцены и сложных материалов.
  • Текстовый формат даёт файлы большего объёма по сравнению с бинарными альтернативами (STL, glTF, FBX).
  • Нет единого стандарта кодировки и разделителей, что иногда вызывает проблемы при импорте файлов от разных авторов.
  • Поддержка полигонов с произвольным числом сторон реализована не везде одинаково.

Расширения и альтернативы

Существует ряд расширений формата OBJ, добавляющих то, чего нет в базовой спецификации. Формат OBJ+ (или «OBJ с расширениями») поддерживается рядом движков и добавляет морфинг-таргеты и упрощённые кости. Формат glTF (GL Transmission Format), разработанный консорциумом Khronos Group, позиционируется как «JPEG для 3D» и поддерживает анимацию, PBR-материалы и компактную бинарную кодировку (.glb). Тем не менее OBJ продолжает использоваться как базовый обменный формат, особенно там, где важна простота и совместимость: 3D-печать, научная визуализация, импорт геометрии в CAD, обучение и прототипирование.

Применение

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

Источники:

  • Спецификация Wavefront OBJ/MTL (Polygon Data File Format)
  • Документация Blender Foundation по форматам импорта/экспорта
  • Khronos Group — glTF Specification
  • Файл справки 3ds Max по форматам обмена
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru