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

Формат OBJ

OBJ — это открытый текстовый формат файлов для хранения трёхмерных геометрических данных, разработанный компанией Wavefront Technologies в 1980-х годах. Формат предназначен для описания каркасных моделей (wireframe), полигональных сеток (polygon mesh), поверхностей, представленных сплайнами (NURBS), а также свободных форм (free-form geometry). OBJ является одним из наиболее распространённых и универсальных форматов для обмена трёхмерными данными между различными программами компьютерной графики, такими как Autodesk Maya, Blender, 3ds Max, Cinema 4D и другими.

История

Формат OBJ был создан компанией Wavefront Technologies для собственного программного обеспечения Advanced Visualizer, которое использовалось для создания компьютерной анимации и визуализации. В 1980-х годах Wavefront была одним из пионеров в области трёхмерной графики, и её формат быстро стал стандартом де-факто для обмена данными между различными системами. Простота и открытость спецификации способствовали его широкому распространению. В 1990-х годах, с ростом популярности персональных компьютеров и появлением доступных программ для 3D-моделирования, OBJ стал поддерживаться практически всеми серьёзными пакетами. В настоящее время формат остаётся актуальным благодаря своей читаемости, отсутствию лицензионных ограничений и поддержке сложных геометрических структур.

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

Файл OBJ представляет собой обычный текстовый файл (ASCII), который можно открыть и редактировать в любом текстовом редакторе. Каждая строка файла содержит команду (ключевое слово), за которой следуют параметры. Строки, начинающиеся с символа решётки (#), являются комментариями и игнорируются программами. Основные типы данных в файле OBJ:

Геометрические вершины (v)

Строки, начинающиеся с v, определяют координаты вершин в трёхмерном пространстве. Обычно указываются три числа (X, Y, Z), но может быть указана и четвёртая координата W (вес) для однородных координат. Пример: v 0.0 1.0 0.0.

Текстурные координаты (vt)

Строки, начинающиеся с vt, задают координаты текстуры (UV-координаты). Обычно указываются два числа (U, V), реже — три (U, V, W). Пример: vt 0.5 0.5.

Нормали (vn)

Строки, начинающиеся с vn, определяют векторы нормалей для вершин. Нормали используются для расчёта освещения и затенения. Указываются три числа (NX, NY, NZ), представляющие единичный вектор. Пример: vn 0.0 1.0 0.0.

Параметрические вершины (vp)

Строки, начинающиеся с vp, используются для описания свободных форм и сплайнов. Указывают параметрические координаты (U, V, W).

Грани (f)

Строки, начинающиеся с f, определяют полигональные грани модели. Грань описывается списком индексов вершин, разделённых пробелами. Индексы могут быть абсолютными (начинаются с 1) или относительными (отрицательные числа, отсчитываемые от конца списка). Для указания текстурных координат и нормалей используется формат v/vt/vn (индекс вершины / индекс текстурной координаты / индекс нормали). Примеры:

Группы и объекты (g, o)

Команда g позволяет объединять вершины и грани в именованные группы. Команда o определяет начало нового объекта. Это удобно для организации сложных сцен, состоящих из нескольких независимых моделей.

Материалы (usemtl, mtllib)

Команда usemtl указывает, какой материал (из файла MTL) следует применять к последующим граням. Команда mtllib загружает внешний файл библиотеки материалов (формат MTL). Файл MTL содержит описания цвета, текстуры, отражения, прозрачности и других свойств поверхности.

Классификация и особенности

Типы данных

Формат OBJ поддерживает несколько типов геометрических примитивов:

Преимущества

Недостатки

Применение

Формат OBJ широко используется в следующих областях:

Связанные форматы

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →