Введение
Формат файла определения геометрии OBJ (или OBJ) — это формат файла определения геометрии, впервые разработанный компанией Wavefront Technologies для своего пакета анимации Advanced Visualizer. Формат файла является открытым и был принят другими производителями 3D-графических приложений. Формат файла OBJ представляет собой простой формат данных, описывающий только 3D-геометрию, а именно: положение каждой вершины, UV-координаты каждой вершины текстуры, нормали вершин и грани, составляющие каждый многоугольник, определяемые как список вершин и вершин текстур. Вершины по умолчанию хранятся в порядке против часовой стрелки, что исключает необходимость явного указания нормалей граней. Координаты OBJ не имеют единиц измерения, но файлы OBJ могут содержать информацию о масштабе в виде комментария, читаемого человеком.
OBJ (or OBJ) is a geometry definition file format first developed by Wavefront Technologies for its Advanced Visualizer animation package. The file format is open and has been adopted by other 3D graphics application vendors. The OBJ file format is a simple data format that represents 3D geometry alone — namely, the position of each vertex, the UV position of each texture coordinate vertex, vertex normals, and the faces that make each polygon defined as a list of vertices, and texture vertices. Vertices are stored in a counter clockwise order by default, making explicit declaration of face normals unnecessary. OBJ coordinates have no units, but OBJ files can contain scale information in a human readable comment line.
Геометрическая вершина
Вершина задается строкой, начинающейся с буквы "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
bump texbump. tga bm 0.2