Obj: различия между версиями
[непроверенная версия] | [непроверенная версия] |
Urgus (обсуждение | вклад) →Формат файла:
Расширение пояснений к записи определения поверхностей / сторон |
Исправление опечатки "диапозон" -> "диапазон" |
||
(не показана 41 промежуточная версия 32 участников) | |||
Строка 6: | Строка 6: | ||
| screenshot = |
| screenshot = |
||
| caption = |
| caption = |
||
| extension = <tt>.obj</tt> |
|||
| mime = text/plain |
|||
| type code = |
| type code = |
||
| uniform type = |
| uniform type = |
||
| magic = |
| magic = |
||
| owner = [[Wavefront Technologies]] |
|||
| released = <!-- {{Start date|YYYY|mm|dd|df=yes}} --> |
| released = <!-- {{Start date|YYYY|mm|dd|df=yes}} --> |
||
| latest release version = |
| latest release version = |
||
Строка 24: | Строка 21: | ||
| url = |
| url = |
||
}} |
}} |
||
'''OBJ''' — |
'''OBJ''' — формат файлов описания геометрии, разработанный в [[Wavefront Technologies]] для их анимационного пакета [[Advanced Visualizer]]. Формат [[файл]]а является открытым и был принят другими разработчиками приложений [[Трёхмерная графика|3D-графики]]. Он может быть экспортирован/импортирован в [[e-Frontier's Poser]], [[Autodesk Maya|Maya]], [[Avid's Softimage|XSI]], [[Blender]], [[MeshLab]], [[Misfit Model 3D]], [[3D Studio Max]] и [[Rhinoceros 3D]], [[Hexagon]], [[CATIA]], [[Newtek Lightwave]], [[Art of Illusion]], milkshape 3d, [[Modo (программа)|Modo]], [[Cinema 4D]], [[Zanoza Modeller]], [[ПК Лира|ПК ЛИРА]], [[Mineways]] и т. д. По большей части это общепринятый формат. |
||
Формат файлов OBJ — это простой формат данных, который содержит только 3D геометрию, а именно, позицию каждой вершины, связь [[координаты|координат]] [[текстура (трёхмерная графика)|текстуры]] с вершиной, нормаль для каждой вершины, а также параметры, которые создают полигоны. |
Формат файлов OBJ — это простой формат данных, который содержит только 3D геометрию, а именно, позицию каждой вершины, связь [[координаты|координат]] [[текстура (трёхмерная графика)|текстуры]] с вершиной, нормаль для каждой вершины, а также параметры, которые создают полигоны. |
||
== Формат файла == |
== Формат файла == |
||
Строки начинающиеся с |
Строки, начинающиеся с <code>#</code>, — это [[Комментарии (программирование)|комментарии]], т.е. не обрабатываются и не влияют на результат. |
||
# Это комментарий |
# Это комментарий |
||
Формат OBJ предусматривает несколько типов определения: |
|||
# Список вершин, с координатами (x,y,z[,w]), w является не обязательным и по умолчанию 1.0. |
# Список вершин, с координатами (x,y,z[,w]), w является не обязательным и по умолчанию 1.0. |
||
Строка 38: | Строка 36: | ||
v ... |
v ... |
||
... |
... |
||
# Текстурные координаты (u,v |
# Текстурные координаты (u,v,[w]), w является не обязательным и по умолчанию 0. |
||
# Текстурная координата по y может быть указана как 1 - v, и при этом по x = u |
|||
vt 0.500 -1.352 [0.234] |
vt 0.500 -1.352 [0.234] |
||
vt ... |
vt ... |
||
... |
... |
||
# Нормали (x,y,z); нормали могут быть не [[ |
# Нормали (x,y,z); нормали могут быть не [[Единичный вектор|нормированными]]. |
||
. |
. |
||
vn 0.707 0.000 0.707 |
vn 0.707 0.000 0.707 |
||
vn ... |
vn ... |
||
... |
... |
||
# Параметры вершин в пространстве ( |
# Параметры вершин в пространстве (u [,v] [,w]); свободная форма геометрического состояния (см. ниже) |
||
vp 0.310000 3.210000 2.100000 |
vp 0.310000 3.210000 2.100000 |
||
vp ... |
vp ... |
||
... |
... |
||
# Определения поверхности(сторон) ( |
# Определения поверхности (сторон) (см. ниже) |
||
f 1 2 3 |
f 1 2 3 |
||
f 3/1 4/2 5/3 |
f 3/1 4/2 5/3 |
||
Строка 57: | Строка 56: | ||
f 6//1 3//3 7//5 |
f 6//1 3//3 7//5 |
||
f ... |
f ... |
||
... |
|||
# Группа |
|||
g Group1 |
|||
... |
|||
# Объект |
|||
o Object1 |
|||
=== Геометрическая вершина === |
|||
Вершина задаётся в строках начинающихся с литеры <code>v</code>. Далее за ней располагаются координаты в порядке <code>x</code>,<code>y</code>,<code>z</code>, и необязательный компонент <code>w</code>. Значение <code>w</code> отвечает за толщину вершины и требуется для рациональных кривых и поверхностей, задавать не обязательно, по умолчанию равно 1.0. Некоторые программы поддерживают указание цвета вершин согласно модели [[RGB]], путём задания значений красного, зелёного и синего в диапазоне от 0 до 1 после координат. |
|||
=== Определение сторон === |
=== Определение сторон === |
||
Поверхность определяется в списке вершин, текстурных координат и нормалей. Полигоны такие как квадрат могут быть определены с помощью более 3 вершин/текстурных координат/нормалей. |
Поверхность определяется в списке вершин, текстурных координат и нормалей. Полигоны, такие как квадрат, могут быть определены с помощью более 3 вершин/текстурных координат/нормалей. |
||
=== |
=== Поверхности === |
||
Строка начинающаяся с f представляет собой индекс |
Строка, начинающаяся с <code>f</code>, представляет собой индекс поверхности. Каждая поверхность может состоять из трёх или более вершин. |
||
f v1 v2 v3 v4 ... |
f v1 v2 v3 v4 ... |
||
Индексация начинается с первого элемента, а не с нулевого, как принято в большинстве языков программирования, также индексация может быть отрицательной. Отрицательный индекс указывает позицию относительно последнего элемента (индекс -1 указывает на последний элемент). |
|||
=== Вершины / Текстурные координаты === |
=== Вершины / Текстурные координаты === |
||
Строка 71: | Строка 81: | ||
=== Вершины / Текстурные координаты / Нормали === |
=== Вершины / Текстурные координаты / Нормали === |
||
Также допустимо сохранение |
Также допустимо сохранение соответствующих индексов нормалей. |
||
f v1/vt1/vn1 v2/vt2/vn2 v3/vt3/vn3 v4/vt4/vn4 ... |
f v1/vt1/vn1 v2/vt2/vn2 v3/vt3/vn3 v4/vt4/vn4 ... |
||
Строка 85: | Строка 95: | ||
| screenshot = |
| screenshot = |
||
| caption = |
| caption = |
||
| extension = <tt> |
| extension = <tt>mtl</tt> |
||
| mime = |
| mime = |
||
| type code = |
| type code = |
||
Строка 103: | Строка 113: | ||
| url = |
| url = |
||
}} |
}} |
||
=== Краткий обзор === |
=== Краткий обзор === |
||
OBJ является одним из самых популярных форматов передачи |
OBJ является одним из самых популярных форматов передачи трёхмерной компьютерной геометрии. Информация о внешнем виде объектов(материалы) передается в файлах-спутниках в формате MTL (Material Library). OBJ при необходимости ссылается на такой файл с помощью директивы: |
||
mtllib [имя внешнего MTL |
mtllib [имя внешнего MTL-файла] |
||
=== Введение === |
=== Введение === |
||
MTL является стандартом, установленным компанией Wavefront Technologies. Вся информация представлена |
MTL является стандартом, установленным компанией Wavefront Technologies. Вся информация представлена символами ASCII (читабельна для человека). Стандарт MTL также очень популярен и поддерживается большинством пакетов для работы с 3D-графикой. |
||
Информация о простых материалах в файле выглядит следующим образом: |
Информация о простых материалах в файле выглядит следующим образом: |
||
Строка 115: | Строка 126: | ||
newmtl название_материала1 # Объявление очередного материала |
newmtl название_материала1 # Объявление очередного материала |
||
# Цвета |
# Цвета |
||
Ka 1 |
Ka 1.000 1.000 0.000 # Цвет окружающего освещения (жёлтый) |
||
Kd 1 |
Kd 1.000 1.000 1.000 # Диффузный цвет (белый) |
||
# Параметры отражения |
# Параметры отражения |
||
Ks 0 |
Ks 0.000 0.000 0.000 # Цвет зеркального отражения (0;0;0 - выключен) |
||
Ns 10 |
Ns 10.000 # Коэффициент зеркального отражения (от 0 до 1000) |
||
# Параметры прозрачности |
# Параметры прозрачности |
||
d 0 |
d 0.9 # Прозрачность указывается с помощью директивы d |
||
Tr 0 |
Tr 0.9 # или в других реализациях формата с помощью Tr |
||
#Следующий материал |
# Следующий материал |
||
newmtl название_материала2 |
newmtl название_материала2 |
||
... |
... |
||
Строка 129: | Строка 140: | ||
Наличие всех параметров необязательно. При отсутствии какого-либо параметра программа автоматически устанавливает его по умолчанию. |
Наличие всех параметров необязательно. При отсутствии какого-либо параметра программа автоматически устанавливает его по умолчанию. |
||
== |
== Примечания == |
||
{{примечания}} |
|||
== Ссылки == |
|||
* [http://masandilov.ru/opengl/obj-file-loader Загрузка формата OBJ.] |
* [http://masandilov.ru/opengl/obj-file-loader Загрузка формата OBJ.] |
||
* [https://web.archive.org/web/20150215172510/http://rodrigo-silveira.com/opengl-tutorial-parsing-obj-file-blender/ OpenGL Tutorial Load .OBJ] |
|||
* [http://www.martinreddy.net/gfx/3d/OBJ.spec Описание формата OBJ.] |
|||
[[Категория:Форматы файлов]] |
[[Категория:Форматы файлов]] |
||
[[Категория:Форматы файлов 3D-графики]] |
|||
[[Категория:Форматы файлов САПР]] |
Текущая версия от 10:18, 14 февраля 2024
OBJ geometry format | |
---|---|
Расширение |
.object |
MIME-тип | text/plain и model/obj[1] |
Разработчик | Wavefront Technologies[вд][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 2 Controlled Vocabulary for Dublin Core format
- ↑ http://guides.archaeologydataservice.ac.uk/g2gp/3d_2-3