Файл Wavefront .obj - Wavefront .obj file

Формат геометрии OBJ
Расширение имени файла
.obj
Тип интернет-СМИ
текст / простой
РазработанТехнологии волнового фронта
Тип форматаФормат 3D модели

OBJ (или .OBJ) - это формат файла определения геометрии, впервые разработанный Технологии волнового фронта для своего Расширенный визуализатор пакет анимации. Формат файла открыт и был принят другими поставщиками приложений для 3D-графики.

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

Формат файла

Все, что следует за символом решетки (#), является комментарием.

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

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

# Список геометрических вершин с координатами (x, y, z [, w]), w является необязательным и по умолчанию имеет значение 1.0.v 0.123 0.234 0.345 1.0v ...... # Список координат текстуры в (u, [, v, w]), они будут варьироваться от 0 до 1. v, w являются необязательными и по умолчанию равны 0. vt 0.500 1 [0] vt ...... # Список нормалей вершин в (x, y , z) форма; нормалей может не быть единичные векторы.vn 0.707 0.000 0.707vn ...... # Вершины пространства параметров в форме (u [, v] [, w]); формулировка произвольной геометрии (см. ниже) vp 0.310000 3.210000 2.100000vp ...... # Многоугольный лицевой элемент (см. ниже) f 1 2 3f 3/1 4/2 5 / 3f 6/4/1 3/5/3 7/6 / 5f 7 // 1 8 // 2 9 // 3f ...... # Линейный элемент (см. Ниже) l 5 8 1 2 4 9

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

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

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

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

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

Грани определяются с использованием списков индексов вершин, текстуры и нормалей в формате vertex_index / texture_index / normal_index, для которого каждый индекс начинается с 1 и увеличивается в соответствии с порядком, в котором был определен элемент, на который указывает ссылка. Многоугольники, например четырехугольники, можно определить с помощью более трех индексов.

Файлы OBJ также поддерживают геометрию произвольной формы, которая использует кривые и поверхности для определения объектов, таких как NURBS поверхности.

Индексы вершин

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

Каждая грань может содержать три и более вершины.

f v1 v2 v3 ....

Индексы координат текстуры вершин

Дополнительно, индексы координат текстуры могут использоваться для указания координат текстуры при определении грани. Чтобы добавить индекс координат текстуры к индексу вершины при определении грани, необходимо поставить косую черту сразу после индекса вершины, а затем поставить индекс координаты текстуры. Пробелы до или после косой черты не допускаются. Допустимый индекс координат текстуры начинается с 1 и соответствует соответствующему элементу в ранее определенном списке координат текстуры. Каждая грань может содержать три или более элементов.

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

Нормальные индексы вершин

По желанию, нормальные индексы могут использоваться для указания векторов нормалей для вершин при определении грани. Чтобы добавить нормальный индекс к индексу вершины при определении грани, нужно поставить вторую косую черту после индекса координаты текстуры, а затем поставить нормальный индекс. действительный нормальный индекс начинается с 1 и соответствует соответствующему элементу в ранее определенном списке нормалей. Каждая грань может содержать три или более элементов.

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

Индексы нормалей вершин без индексов координат текстуры

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

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

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

Записи, начинающиеся с буквы «l», определяют порядок вершин, образующих ломаную линию.

l v1 v2 v3 v4 v5 v6 ...

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

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

Ссылки на материалы

Материалы которые описывают визуальные аспекты полигонов, хранятся в внешних файлах .mtl. Из файла OBJ можно ссылаться на несколько внешних файлов материалов MTL. Файл .mtl может содержать одно или несколько определений именованных материалов.

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

Этот тег определяет название материала для элемента, следующего за ним. Название материала соответствует названному определению материала во внешнем файле .mtl.

usemtl [название материала] ...

Именованные объекты и группы полигонов указываются с помощью следующих тегов.

o [название объекта] ... g [название группы] ...

Плавное затенение по полигонам включается с помощью групп сглаживания.

s 1 ... # Также можно отключить плавное затенение. выкл ...

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

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

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

Формат материала MTL
Расширение имени файла
.mtl
РазработанТехнологии волнового фронта
Тип форматаФормат 3D текстуры

В Библиотека шаблонов материалов формат (MTL) или .MTL File Format - это формат файла-компаньона для .OBJ, также определяемый Технологии волнового фронта, который описывает свойства затенения поверхности (материала) объектов в одном или нескольких файлах .OBJ. Файл .OBJ ссылается на один или несколько файлов .MTL (называемых «библиотеками материалов»), а оттуда ссылается на одно или несколько описаний материалов по имени. .MTL файлы ASCII текст, определяющий светоотражающие свойства поверхности для целей компьютерный рендеринг, и согласно Модель отражения Фонга. Стандарт получил широкую поддержку среди различных компьютерных программных пакетов, что делает его полезным форматом для обмена материалами.

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

Формат MTL определяет ряд форматов.[2][3]

Основные материалы

Один .mtl файл может определять несколько материалов. Материалы определяются в файле один за другим, каждый из которых начинается с newmtl команда:

# определяем материал с именем 'Colored' newmtl Colored

В окружающий цвет материала заявлен с использованием Ка. Определения цвета даны в RGB, где значение каждого канала находится в диапазоне от 0 до 1.

# whiteKa 1.000 1.000 1.000

Точно так же размытый цвет объявлен с использованием Kd.

# whiteKd 1.000 1.000 1.000

В зеркальный цвет объявлен с использованием Ks, и взвешены с использованием показатель зеркальности Ns.

# черный (выкл.) Ks 0,000 0,000 0,000 # диапазон от 0 до 1000Ns 10.000

Материалы могут быть прозрачный. Это называется растворенный. В отличие от настоящей прозрачности, результат не зависит от толщины объекта. Значение 1,0 для «d» является значением по умолчанию и означает полную непрозрачность, как и значение 0,0 для «Tr». Dissolve работает на всех моделях освещения.

# в некоторых реализациях используется 'd'd 0.9 # в других используется' Tr '(инвертировано: Tr = 1 - d) Tr 0.1

Прозрачные материалы могут дополнительно иметь цвет фильтра передачи, заданный с помощью «Tf».

# Цвет фильтра передачи (с использованием RGB) Tf 1.0 0,5 0,5 # Цвет фильтра передачи (с использованием CIEXYZ) - значения y и z являются необязательными и предполагаются равными x, если они опущены Tf xyz 1,0 0,5 0,5 # Цвет фильтра передачи из файла спектральной кривой (не обычно используется) Tf Spectral <имя файла> .rfl <дополнительный коэффициент>

Материал также может иметь оптическую плотность для своей поверхности. Это также известно как показатель преломления.

# оптическая плотность Ni 1.45000

Значения могут варьироваться от 0,001 до 10. Значение 1,0 означает, что свет не изгибается при прохождении через объект. Увеличение оптической плотности увеличивает величину изгиба. Стекло имеет показатель преломления около 1,5. Значения меньше 1,0 дают странные результаты и не рекомендуются.[4]

Несколько модели освещения доступны в зависимости от материала. Обратите внимание, что не требуется устанавливать прозрачную модель освещения для достижения прозрачности с помощью «d» или «Tr», а в современном использовании модели освещения часто не указываются, даже с прозрачными материалами. Модели освещения пронумерованы следующим образом:

0. Цвет включен и окружающий выключен 1. Color on и Ambient on 2. Выделите 3. Отражение и след лучей 4. Прозрачность: на стекле, Отражение: на трассировке лучей 5. Отражение: Френель на и след лучей на 6. Прозрачность: преломление включено, отражение: выключено по Френелю и трассировка лучей включена 7. Прозрачность: преломление включено, отражение: включено Френеля и трассировка лучей включена 8. Отражение включено и трассировка лучей выключена 9. Прозрачность: Стекло включено, Отражение: Трассировка лучей выключена 10. Отбрасывает тени на невидимые поверхности
иллюминатор 2

Карты текстур

Текстурированные материалы используют те же свойства, что и выше, и дополнительно определяют карты текстур. Ниже приведен пример обычного файла с материалами. См. Полный справочник по формату файла волнового фронта для получения более подробной информации.

newmtl Textured Ka 1.000 1.000 1.000 Kd 1.000 1.000 1.000 Ks 0.000 0.000 0.000 d 1.0 illum 2 # карта текстуры окружающей среды map_Ka lemur.tga # карта текстуры диффузии (в большинстве случаев она будет такой же, как карта текстуры фона #) map_Kd lemur.tga # specular color texture map map_Ks lemur.tga # specular highlight component map_Ns lemur_spec.tga # альфа-карта текстуры map_d lemur_alpha.tga # некоторые реализации используют 'map_bump' вместо 'bump' ниже map_bump lemur_bump.tga # bump map (который по умолчанию использует канал яркости изображения) bump lemur_bump.tga # displacement map disp lemur_disp.tga # stencil decal texture (по умолчанию "матовый" канал изображения) decal lemur_stencil.tga

Операторы карты текстуры могут также иметь параметры опций (см. полная спецификация ).

   # текстура origin (1,1,1) map_Ka -o 1 1 1 ambient.tga # сферическая карта отражения refl -type Sphere clouds.tga

Варианты текстуры

-бленду на | off # установить горизонтальное смешивание текстур (по умолчанию включено) -blendv on | off # установить вертикальное смешивание текстур (по умолчанию включено) -boost float_value # увеличить резкость MIP-карты-мм base_value gain_value # изменить значения карты текстуры (по умолчанию 0 1) # base_value = яркость, gain_value = контраст-o u [v [w]] # Смещение исходной точки (по умолчанию 0 0 0) -su [v [w]] # Масштаб (по умолчанию 1 1 1) -tu [v [w]] # Турбулентность (по умолчанию 0 0 0) -texres разрешение # разрешение текстуры для создания- зажим на | off # визуализируются только тексели в ограниченном диапазоне 0-1 (по умолчанию выключено) # Когда не зажат, текстуры повторяются по поверхности, # когда зажат, визуализируются только тексели, попадающие в диапазон 0-1 #. -bm mult_value # bump множитель (только для карт рельефа) -imfchan r | г | б | м | л | z # указывает, какой канал файла используется для # создания скалярной текстуры или текстуры рельефа. r: красный, g: зеленый, # b: синий, m: матовый, l: яркость, z: глубина z .. # (значение по умолчанию для рельефа - l, а для надписи - m)

Например,

# говорит использовать красный канал bumpmap.tga как bumpmapbump -imfchan r bumpmap.tga

За карты отражений...

-type сфера # определяет сферу для карты отражения "refl" -типа cube_top | cube_bottom | # при использовании кубической карты файл текстуры для каждого cube_front | cube_back | # сторона куба указывается отдельно cube_left | cube_right

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

Из-за простоты синтаксического анализа файлов и неофициального распространения формата файла файлы могут содержать изменения, специфичные для поставщика.

Согласно спецификации, опции должны предшествовать имени файла текстуры. Однако по крайней мере один поставщик создает файлы с параметрами в конце.

# bump множитель 0,2bump texbump.tga -bm 0,2

Физическая визуализация

Создатели онлайн-инструмента для 3D-редактирования и моделирования, Clara.io, предложила расширить формат MTL, включив в него следующие параметры для представления физический рендеринг параметры:[5]

Pr / map_Pr # RoughnessPm / map_Pm # metallicPs / map_Ps # sheenPc # Clearcoat ThicknessPcr # Clearcoat RoughnessKe / map_Ke # emissiveaniso # anisotropyanisor # anisotropy Rotationnorm # normal map, тот же формат, что и параметр "bump"

Дальнейшие предлагаемые расширения взяты из набора инструментов DirectXMesh для Microsoft с DirectX движок, позволяющий определять предварительно скомпилированный материал RMA модели.[6]

map_RMA # Материал RMA (шероховатость, металличность, окружающая окклюзия) map_ORM # альтернативное определение map_RMA

Смотрите также

Рекомендации

  1. ^ «Как я могу включить информацию о цвете вершин в файлы .OBJ?». Обмен стеками разработки игр. Получено 2014-10-08.
  2. ^ «Файлы MTL - Определения материалов для файлов OBJ». People.sc.fsu.edu. 2004-06-14. Получено 2010-11-26.
  3. ^ "Информация о формате файла Wavefront .mtl - GRIPES и GRUMBLES - Wings - Wings3D - Официальный форум разработчиков - Доска объявлений". Nendowingsmirai.yuku.com. Получено 2010-11-26.
  4. ^ Рэйми, Дайан (1995). «Формат материала MTL (Lightwave, OBJ)». Псевдоним-Wavefront, Inc. Получено 17 мая, 2020.
  5. ^ «Exocortex | Расширение Wavefront MTL для физического рендеринга». exocortex.com.
  6. ^ "Возможность определять текстуру RMA в MTL OBJ. Автор MattFiler · Запрос на извлечение № 39 · microsoft / DirectXMesh". GitHub.

внешняя ссылка