Введение

Формат файла определения геометрии OBJ (или OBJ) — это формат файла определения геометрии, впервые разработанный компанией Wavefront Technologies для своего пакета анимации Advanced Visualizer. Формат файла является открытым и был принят другими производителями 3D-графических приложений. Формат файла OBJ представляет собой простой формат данных, описывающий только 3D-геометрию, а именно: положение каждой вершины, UV-координаты каждой вершины текстуры, нормали вершин и грани, составляющие каждый многоугольник, определяемые как список вершин и вершин текстур. Вершины по умолчанию хранятся в порядке против часовой стрелки, что исключает необходимость явного указания нормалей граней. Координаты OBJ не имеют единиц измерения, но файлы OBJ могут содержать информацию о масштабе в виде комментария, читаемого человеком.

Геометрическая вершина

Вершина задается строкой, начинающейся с буквы "v". Далее следуют координаты (x, y, z[, w]). Параметр w является необязательным и по умолчанию равен 1.0. Для указания расположения координат используется правосторонняя система координат. Некоторые приложения поддерживают цвета вершин, указывая значения красного, зеленого и синего после x, y и z (это не позволяет указывать w). Значения цвета находятся в диапазоне от 0 до 1.

Вершины параметрового пространства

Задание геометрии произвольной формы может быть указано в строке, начинающейся с "vp". Определите точки в параметрическом пространстве кривой или поверхности. Для точек кривой требуется только u, для точек поверхности и контрольных точек нерациональных кривых обрезки – u и v, а для контрольных точек рациональных кривых обрезки – u, v и w (вес).

Элементы поверхности

Лица определяются с использованием списков индексов вершин, текстур и нормалей в формате индекс вершины/индекс текстуры/индекс нормали, где каждый индекс начинается с 1 и увеличивается в соответствии с порядком определения соответствующего элемента. Многоугольники, такие как четырехугольники, могут быть определены использованием более трех индексов. Файлы OBJ также поддерживают геометрию произвольной формы, которая использует кривые и поверхности для определения объектов, например, поверхности NURBS.

Вертикальные индексы

Действительный индекс вершины соответствует соответствующим элементам вершины в ранее определенном списке вершин. Если индекс положителен, он указывает на смещение в этом списке вершин, начиная с 1. Если индекс отрицателен, он указывает на позицию относительно конца списка вершин, где 1 соответствует последнему элементу. Каждая грань может содержать три или более вершин. f v1 v2 v3

Элементы линии

Записи, начинающиеся с буквы "l" (строчной l), задают порядок вершин, формирующих полилинию. l v1 v2 v3 v4 v5 v6

Другие геометрические форматы

Файлы Obj поддерживают поверхности высшего порядка, используя различные методы интерполяции, такие как интерполяция Тейлора и B-сплайнами, однако поддержка этих функций в сторонних программах для чтения файлов далеко не повсеместна. Файлы Obj также не поддерживают иерархии сеток или какие-либо виды анимации или деформации, например, привязку вершин к скелету или изменение формы сетки.

Относительные и абсолютные индексы

Файлы OBJ, благодаря своей списочной структуре, могут ссылаться на вершины, нормали и т.д. либо по их абсолютному номеру (1 обозначает первую определенную вершину, N – N-ю определенную вершину), либо по их относительному номеру (1 обозначает последнюю определенную вершину). Однако не все программы поддерживают второй подход, и наоборот, некоторые программы изначально записывают только относительные номера (из-за удобства добавления элементов без необходимости пересчета смещений вершин и т.п.), что иногда приводит к несовместимости.

Библиотека шаблонов материалов

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

Изменения, специфичные для поставщика

Из-за простоты разбора файлов и неформального распространения формата, файлы могут содержать изменения, специфичные для конкретного производителя. Согласно спецификации, параметры должны располагаться перед именем файла текстуры. Однако, по крайней мере один производитель генерирует файлы с параметрами в конце. # множитель рельефа 0.2 рельеф texbump.tga bm 0.2