Перейти к содержанию

Obj

Эта статья находится на начальном уровне проработки, в одной из её версий выборочно используется текст из источника, распространяемого под свободной лицензией
Материал из энциклопедии Руниверсалис
OBJ geometry format
Тип формата 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
Разработчик 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
  ...

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

Примечания

Ссылки