stringtranslate.com

Файл волнового фронта .obj

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

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

Формат файла

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

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

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

# Список геометрических вершин с координатами (x, y, z, [w]), w необязательно и по умолчанию равно 1,0.в 0,123 0,234 0,345 1,0в ......# Список координат текстуры в координатах (u, [v, w]), они будут варьироваться от 0 до 1. v, w являются необязательными и по умолчанию равны 0.вт 0.500 1 [0]вт ......# Список нормалей вершин в форме (x,y,z); нормали могут не быть единичными векторами .вн 0,707 0,000 0,707вн ......# Вершины пространства параметров в форме (u, [v, w]); свободная форма геометрического утверждения (см. ниже)вп 0,310000 3,210000 2,100000вице-президент ......# Многоугольный элемент лица (см. ниже)ж 1 2 3ф 3/1 4/2 5/3ж 6/4/1 3/5/3 7/6/5ф 7//1 8//2 9//3ф ......# Элемент строки (см. ниже)л 5 8 1 2 4 9

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

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

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

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

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

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

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

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

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

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

ф в1 в2 в3 ....

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

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

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

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

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

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

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

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

ф 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 [имя материала]...

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

о [имя объекта] ... г [имя группы] ...

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

с 1 ... # Плавное затенение также можно отключить. выключен ...

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

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

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

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

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

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

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

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

# определить материал с именем «Цветной»newmtl Цветной

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

# белыйКа 1.000 1.000 1.000

Аналогично, диффузный цвет объявляется с помощью Kd.

# белыйКд 1.000 1.000 1.000

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

# черный (выкл.)Кс 0.000 0.000 0.000# диапазон от 0 до 100010.000 н.с.

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

# некоторые реализации используют 'd'д 0,9# другие используют 'Tr' (инвертированный: Tr = 1 - d)Тр 0.1

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

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

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

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

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

Доступно несколько моделей освещения для каждого материала. Обратите внимание, что не требуется устанавливать прозрачную модель освещения для достижения прозрачности с помощью "d" или "Tr", и в современном использовании модели освещения часто не указываются, даже для прозрачных материалов. Модели освещения перечислены следующим образом:

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

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

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

newmtl Текстурированный Ка 1.000 1.000 1.000 Кд 1.000 1.000 1.000 Кс 0.000 0.000 0.000 д 1.0 иллюминация 2 # карта текстур окружающего пространства map_Ka lemur.tga  # диффузная карта текстуры (в большинстве случаев она будет такой же, как и # карта фоновой текстуры) map_Kd лемур.tga  # зеркальная цветовая текстура карты map_Ks лемур.tga  # компонент зеркального выделения карта_Ns лемур_spec.tga  # альфа-текстурная карта карта_d лемур_альфа.tga  # некоторые реализации используют 'map_bump' вместо 'bump' ниже карта_бумп лемур_бумп.tga  # карта рельефа (которая по умолчанию использует канал яркости изображения) удар лемур_bump.tga  # карта смещения дисп лемур_дисп.tga  # текстура трафаретной наклейки (по умолчанию «матовый» канал изображения) декаль lemur_stencil.tga

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

 # происхождение текстуры (1,1,1) map_Ka -o 1 1 1 окружающая среда.tga  # сферическая карта отражения refl -тип сферические облака.tga

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

-blendu on | off # установить горизонтальное смешивание текстур (по умолчанию включено)-blendv on | off # установить вертикальное смешивание текстур (по умолчанию включено)-boost float_value # повысить резкость mip-карты-mm base_value gain_value # изменить значения текстурной карты (по умолчанию 0 1) # базовое_значение = яркость, усиление_значение = контрастность-ou [v [w]] # Смещение начала координат (по умолчанию 0 0 0)-su [v [w]] # Масштаб (по умолчанию 1 1 1)-tu [v [w]] # Турбулентность (по умолчанию 0 0 0)-texres resolution # разрешение текстуры для создания-clamp on | off # рендерить только текселы в фиксированном диапазоне 0-1 (по умолчанию выключено) # При отсутствии зажима текстуры повторяются по всей поверхности, # при зажатии только текселы, которые попадают в диапазон 0-1 # диапазон визуализируется.-bm mult_value # множитель рельефа (только для карт рельефа)-imfchan r | g | b | m | l | z # указывает, какой канал файла используется для # создать скалярную или рельефную текстуру. r:red, g:green, # b:синий, m:матовый, l:яркость, z:глубина z.. # (по умолчанию для выпуклости - «l», а для наклейки - «m»)

Например,

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

Для карт отражений ...

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

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

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

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

# множитель удара 0,2удар texbump.tga -bm 0.2

Физически обоснованный рендеринг

Создатели онлайн-инструмента для 3D-редактирования и моделирования Clara.io предложили расширить формат MTL, чтобы включить указание карт и параметров физически обоснованного рендеринга (PBR). Это расширение впоследствии было принято Blender и TinyObjLoader. Карты и параметры PBR расширения: [8]

Pr/map_Pr # шероховатостьPm/map_Pm # металликPs/map_Ps # блескТолщина прозрачного лака № шт.Pcr # шероховатость прозрачного покрытияKe/map_Ke # эмиссионныйанизо # анизотропияанизотропия # вращение анизотропиинорма # карта нормали (компоненты RGB представляют компоненты XYZ нормали поверхности)

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

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

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

Ссылки

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

Внешние ссылки