Obj

Из Википедии, бесплатной энциклопедии

OBJ geometry format
Расширение .object
MIME-тип text/plain и model/obj[1]
Разработчик Wavefront Technologies[d][2]
Тип формата 3D model format

OBJ — формат файлов описания геометрии, разработанный в Wavefront Technologies для их анимационного пакета Advanced Visualizer. Формат файла является открытым и был принят другими разработчиками приложений 3D-графики. Он может быть экспортирован/импортирован в e-Frontier's Poser, Maya, XSI, Blender, MeshLab, Misfit Model 3D, 3D Studio Max и Rhinoceros 3D, Hexagon, CATIA, Newtek Lightwave, Art of Illusion, milkshape 3d, Modo, Cinema 4D, Zanoza Modeller, ПК ЛИРА, Mineways и т. д. По большей части это общепринятый формат.

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

Формат файла[править | править код]

Строки, начинающиеся с #, — это комментарии, т.е. не обрабатываются и не влияют на результат.

  # Это комментарий 

Формат OBJ предусматривает несколько типов определения:

  # Список вершин, с координатами (x,y,z[,w]), w является не обязательным и по умолчанию 1.0.   v 0.123 0.234 0.345 1.0   v ...   ...   # Текстурные координаты (u,v,[w]), w является не обязательным и по умолчанию 0.   # Текстурная координата по y может быть указана как 1 - v, и при этом по x = u   vt 0.500 -1.352 [0.234]   vt ...   ...   # Нормали (x,y,z); нормали могут быть не нормированными. .   vn 0.707 0.000 0.707   vn ...   ...   # Параметры вершин в пространстве (u [,v] [,w]); свободная форма геометрического состояния (см. ниже)   vp 0.310000 3.210000 2.100000   vp ...   ...   # Определения поверхности (сторон) (см. ниже)   f 1 2 3   f 3/1 4/2 5/3   f 6/4/1 3/5/3 7/6/5   f 6//1 3//3 7//5   f ...   ...   # Группа   g Group1   ...   # Объект   o Object1 

Геометрическая вершина[править | править код]

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

Определение сторон[править | править код]

Поверхность определяется в списке вершин, текстурных координат и нормалей. Полигоны, такие как квадрат, могут быть определены с помощью более 3 вершин/текстурных координат/нормалей.

Поверхности[править | править код]

Строка, начинающаяся с f, представляет собой индекс поверхности. Каждая поверхность может состоять из трёх или более вершин.

  f v1 v2 v3 v4 ... 

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

Вершины / Текстурные координаты[править | править код]

Наряду с вершинами могут сохраняться соответствующие индексы текстурных координат.

  f v1/vt1 v2/vt2 v3/vt3 v4/vt4 ... 

Вершины / Текстурные координаты / Нормали[править | править код]

Также допустимо сохранение соответствующих индексов нормалей.

  f v1/vt1/vn1 v2/vt2/vn2 v3/vt3/vn3 v4/vt4/vn4 ... 

Вершины / / Нормали[править | править код]

При отсутствии данных о текстурных координатах допустима запись с пропуском индексов текстур.

  f v1//vn1 v2//vn2 v3//vn3 v4//vn4 ... 

Библиотека материалов[править | править код]

MTL material format
Расширение .mtl
MIME-тип text/plain и model/obj[1]
Разработчик Wavefront Technologies
Тип формата 3D texture format

Краткий обзор[править | править код]

OBJ является одним из самых популярных форматов передачи трёхмерной компьютерной геометрии. Информация о внешнем виде объектов(материалы) передается в файлах-спутниках в формате MTL (Material Library). OBJ при необходимости ссылается на такой файл с помощью директивы:

  mtllib [имя внешнего MTL-файла] 

Введение[править | править код]

MTL является стандартом, установленным компанией Wavefront Technologies. Вся информация представлена символами ASCII (читабельна для человека). Стандарт MTL также очень популярен и поддерживается большинством пакетов для работы с 3D-графикой.

Информация о простых материалах в файле выглядит следующим образом:

  newmtl название_материала1   # Объявление очередного материала   # Цвета   Ka 1.000 1.000 0.000         # Цвет окружающего освещения (жёлтый)   Kd 1.000 1.000 1.000         # Диффузный цвет (белый)   # Параметры отражения   Ks 0.000 0.000 0.000         # Цвет зеркального отражения (0;0;0 - выключен)   Ns 10.000                    # Коэффициент зеркального отражения (от 0 до 1000)   # Параметры прозрачности   d 0.9                        # Прозрачность указывается с помощью директивы d   Tr 0.9                       #   или в других реализациях формата с помощью Tr   # Следующий материал   newmtl название_материала2   ... 

Наличие всех параметров необязательно. При отсутствии какого-либо параметра программа автоматически устанавливает его по умолчанию.

Примечания[править | править код]

  1. 1 2 Controlled Vocabulary for Dublin Core format
  2. http://guides.archaeologydataservice.ac.uk/g2gp/3d_2-3

Ссылки[править | править код]