Файл Wavefront .obj
Расширение имени файла |
.obj |
---|---|
Тип интернет-СМИ |
модель/объект [1] |
Разработан | Волновые Технологии |
Тип формата | 3D model format |
OBJ (или .OBJ) — это формат файла определения геометрии, впервые разработанный компанией Wavefront Technologies для пакета анимации Advanced Visualizer . Формат файла является открытым и принят другими поставщиками приложений для 3D-графики.
Формат файла OBJ — это простой формат данных, который представляет только трехмерную геометрию, а именно: положение каждой вершины , UV-позицию каждой вершины координат текстуры, нормали вершин и грани, которые определяют каждый многоугольник как список вершин. и вершины текстуры. По умолчанию вершины сохраняются в порядке против часовой стрелки, что делает ненужным явное объявление нормалей граней. Координаты OBJ не имеют единиц измерения, но файлы OBJ могут содержать информацию о масштабе в удобочитаемой строке комментариев.
Формат файла [ править ]
Все, что следует за символом решетки (#), является комментарием.
# это комментарий
Файл OBJ может содержать данные вершин, атрибуты кривой/поверхности произвольной формы, элементы, операторы тела кривой/поверхности произвольной формы, связность между поверхностями произвольной формы, информацию об атрибутах группировки и отображения/рендеринга. Наиболее распространенными элементами являются геометрические вершины, текстурные координаты, нормали вершин и многоугольные грани:
# Список геометрических вершин с координатами (x, y, z, [w]), w не является обязательным и по умолчанию равно 1.0. v 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
Геометрическая вершина [ править ]
Вершина буквы задается строкой, начинающейся с v
. За этим следуют координаты (x,y,z[,w]). W не является обязательным и по умолчанию имеет значение 1.0. Для указания местоположений координат используется правая система координат. Некоторые приложения поддерживают цвета вершин, помещая значения красного, зеленого и синего после xy и z (это исключает указание w). Значения цвета варьируются от 0 до 1. [2]
Вершины пространства параметров [ править ]
Оператор геометрии произвольной формы может быть указан в строке, начинающейся со строки vp
. Определите точки в пространстве параметров кривой или поверхности. u
требуется только для точек кривой, u
и v
для точек поверхности и контрольных точек нерациональных кривых обрезки и u
, v
и w
(вес) для контрольных точек рациональных кривых обрезки.
Элементы лица [ править ]
Грани определяются с использованием списков индексов вершин, текстур и нормалей в формате vertex_index/texture_index/normal_index, для которого каждый индекс начинается с 1 и увеличивается в соответствии с порядком, в котором был определен ссылочный элемент. Многоугольники, такие как четырехугольники, можно определить, используя более трех индексов.
Файлы OBJ также поддерживают геометрию произвольной формы, в которой для определения объектов используются кривые и поверхности, такие как NURBS поверхности .
Индексы вершин [ править ]
Действительный индекс вершин соответствует соответствующим элементам вершин ранее определенного списка вершин. Если индекс положителен, он относится к смещению в этом списке вершин, начиная с 1. Если индекс отрицательный, то он относительно относится к концу списка вершин, -1 относится к последнему элементу.
Каждая грань может содержать три и более вершины.
ф 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 [название материала] ...
Именованные объекты и группы полигонов задаются с помощью следующих тегов.
о [имя объекта] ... г [название группы] ...
Плавное затенение полигонов обеспечивается с помощью групп сглаживания.
с 1 ... # Плавное затенение также можно отключить. выключено ...
и индексы Относительные абсолютные
Файлы OBJ, благодаря своей структуре списка, могут ссылаться на вершины, нормали и т. д. либо по их абсолютному положению (1 представляет первую определенную вершину, N представляет N-ю определенную вершину), либо по их относительному положению (-1 представляет собой последняя определенная вершина). Однако не все программное обеспечение поддерживает последний подход, и, наоборот, некоторые программы по своей сути записывают только последнюю форму (из-за удобства добавления элементов без необходимости пересчета смещений вершин и т. д.), что иногда приводит к несовместимости.
Библиотека шаблонов материалов [ править ]
Расширение имени файла |
.mtl |
---|---|
Тип интернет-СМИ |
модель/MTL [3] |
Магическое число |
|
Разработан | Волновые Технологии |
Тип формата | 3D texture format |
Формат библиотеки шаблонов материалов (MTL) или формат файла .MTL — это сопутствующий формат файла для .OBJ, также определенный Wavefront Technologies , который описывает свойства затенения поверхности (материала) объектов в одном или нескольких файлах .OBJ. Файл .OBJ ссылается на один или несколько файлов .MTL (называемых «библиотеками материалов») и оттуда ссылается на одно или несколько описаний материалов по имени. Файлы .MTL представляют собой текст ASCII , который определяет светоотражающие свойства поверхности для целей компьютерной визуализации и в соответствии с моделью отражения Фонга . Стандарт широко поддерживается различными пакетами компьютерного программного обеспечения, что делает его полезным форматом для обмена материалами.
Формат MTL, хотя и до сих пор широко используется, устарел и не полностью поддерживает более поздние технологии, такие как карты зеркального отражения и карты параллакса . Однако из-за открытого и интуитивно понятного формата их можно легко добавить с помощью специального генератора файлов MTL.
Формат MTL определяет ряд форматов. [5] [6]
Основные материалы [ править ]
Один .mtl
файл может определять несколько материалов. Материалы определяются в файле один за другим, каждый начинается с newmtl
команда:
# определим материал с именем «Цветной» newmtl Цветной
Окружающий цвет материала объявляется с помощью Ka
. Определения цветов представлены в формате RGB, где значение каждого канала находится в диапазоне от 0 до 1.
# белый Это будет 1.000 1.000 1.000
Аналогично, диффузный цвет объявляется с помощью Kd
.
# белый КД 1.000 1.000 1.000
Зеркальный цвет объявляется с помощью Ks
и взвешивается с использованием зеркального показателя Ns
.
# черный (выкл.) Кс 0,000 0,000 0,000 # находится в диапазоне от 0 до 1000 10.000 нс
Материалы могут быть прозрачными . Это называется растворением . В отличие от реальной прозрачности, результат не зависит от толщины объекта. Значение 1,0 для «d» ( растворения ) является значением по умолчанию и означает полную непрозрачность, как и значение 0,0 для «Tr». Растворение работает на всех моделях освещения.
# в некоторых реализациях используется 'd' д 0,9 # другие используют 'Tr' (инвертировано: Tr = 1 - d) Тр 0,1
Прозрачные материалы могут дополнительно иметь цвет фильтра пропускания, указанный как «Tf».
# Цвет фильтра передачи (с использованием RGB) Тф 1,0 0,5 0,5 # Цвет фильтра передачи (с использованием CIEXYZ) — значения y и z не являются обязательными и считаются равными x, если они опущены. Тф xyz 1,0 0,5 0,5 # Цвет фильтра пропускания из файла спектральной кривой (обычно не используется) Tf Spectrum <имя файла>.rfl <необязательный коэффициент>
Материал также может иметь оптическую плотность своей поверхности. Это также известно как показатель преломления .
# оптическая плотность Ни 1,45000
Значения могут находиться в диапазоне от 0,001 до 10. Значение 1,0 означает, что свет не преломляется при прохождении через объект. Увеличение оптической плотности увеличивает величину изгиба. Стекло имеет показатель преломления около 1,5. Значения менее 1,0 дают странные результаты и не являются рекомендуемые. [7]
несколько моделей освещения Доступно в зависимости от материала. Обратите внимание, что не требуется устанавливать прозрачную модель освещения, чтобы добиться прозрачности с помощью «d» или «Tr», а в современном использовании модели освещения часто не указываются, даже с прозрачными материалами. Модели освещения перечислены следующим образом:
0. Включение цвета и выключение режима Ambient. 1. Цвет включен и режим Ambient включен. 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 lemur.tga # карта текстуры зеркального цвета map_Ks lemur.tga # компонент зеркального блика map_Ns lemur_spec.tga # карта альфа-текстуры map_d lemur_alpha.tga # некоторые реализации используют 'map_bump' вместо 'bump' ниже map_bump lemur_bump.tga # карта рельефа (которая по умолчанию использует канал яркости изображения) удар lemur_bump.tga # карта смещения дисп lemur_disp.tga # текстура трафаретной наклейки (по умолчанию «матовый» канал изображения) декаль lemur_stencil.tga
Операторы карты текстур также могут иметь параметры-опции (см. полную спецификацию ).
# происхождение текстуры (1,1,1) map_Ka -o 1 1 1ambient.tga # сферическая карта отражений refl -type сфера Clouds.tga
Параметры текстуры [ править ]
-бленду на | off # установить горизонтальное смешивание текстур (по умолчанию включено) -блендв на | off # установить вертикальное смешивание текстур (по умолчанию включено) -boost float_value # повысить резкость мип-карты -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) -texrescision # разрешение текстуры, которую нужно создать -зажать | off # отображать только текселы в ограниченном диапазоне 0-1 (по умолчанию выключено) # При разжатии текстуры повторяются по поверхности, # при фиксации будут использоваться только текселы, попадающие в диапазон 0-1 # диапазон отображается. -bm mult_value # множитель рельефа (только для карт рельефа) -имфчан р | г | б | м | л | z # указывает, какой канал файла используется для # создаем скалярную текстуру или текстуру рельефа. р: красный, г: зеленый, # b:синий, m:матовый, l:яркость, z:z-глубина.. # (по умолчанию для рельефа — «l», для декали — «m»)
Например,
# говорит использовать красный канал Bumpmap.tga в качестве карты рельефа Bump -imfchan r Bumpmap.tga
Для карт отражений ...
-type сфера # определяет сферу для карты отражения "refl" -type Cube_top | куб_дно | # при использовании карты куба файл текстуры для каждого куб_фронт | куб_обратно | # сторона куба указывается отдельно куб_слева | куб_право
Изменения в зависимости от поставщика [ править ]
Из-за простоты анализа файлов и неофициального распространения формата файлов файлы могут содержать изменения, специфичные для конкретного поставщика.
Согласно спецификации, параметры должны предшествовать имени файла текстуры. Однако по крайней мере один поставщик генерирует файлы с опциями в конце.
# множитель удара 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 # блеск PC # Толщина лака Pcr # шероховатость лака Ke/map_Ke # излучающий aniso # анизотропия anisor # вращение анизотропии норма # карта нормалей (компоненты RGB представляют компоненты XYZ нормали к поверхности)
Дальнейшие предлагаемые расширения взяты из набора инструментов DirectXMesh для Microsoft DirectX движка , что позволяет определять предварительно скомпилированный материал RMA модели. [9]
map_RMA # материал RMA (шероховатость, металличность, фоновая окклюзия) map_ORM # альтернативное определение map_RMA
См. также [ править ]
- глТФ
- Объектный файл
- ВЫКЛ (формат файла)
- Формат перемещаемого объектного модуля
- STL (формат файла)
- PLY (формат файла) — это альтернативный формат файла, предлагающий большую гибкость, чем большинство приложений для стереолитографии .
Ссылки [ править ]
- ^ Имя подтипа носителя: obj
- ^ «Как включить информацию о цвете вершин в файлы .OBJ?» . Обмен стеками разработки игр . Проверено 8 октября 2014 г.
- ^ Название подтипа носителя: mtl
- ^ «Формат файла библиотеки шаблонов материалов Wavefront (MTL)» . Библиотека Конгресса . 4 октября 2019 г.
- ^ «Файлы MTL — определения материалов для файлов OBJ» . People.sc.fsu.edu. 14 июня 2004 г. Проверено 26 ноября 2010 г.
- ^ «Информация о формате файла Wavefront .mtl — GRIPES and GRUMBLES — Wings — Wings3D — Официальный форум разработчиков — Доска объявлений» . Nendowingsmirai.yuku.com. Июль 2002 года . Проверено 26 ноября 2010 г.
- ^ Рэми, Дайан (1995). «Формат материала MTL (Lightwave, OBJ)» . Алиас-Вэйвфронт, Инк . Проверено 17 мая 2020 г.
- ^ «Бен Хьюстон | Расширение Wavefront MTL для физического рендеринга» . benhouston3d.com .
- ^ «Возможность определять текстуру RMA в MTL OBJ. Автор: MattFiler · Pull Request #39 · microsoft/DirectXMesh» . Гитхаб .