Obj: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
м Простановка отсутствующего Шаблон:Примечания.
Исправление опечатки "диапозон" -> "диапазон"
 
(не показаны 23 промежуточные версии 18 участников)
Строка 21: Строка 21:
| url =
| url =
}}
}}
'''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]], [[ПК Лира|ПК ЛИРА]] и т. д. По большей части это общепринятый формат.
'''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 файл содержит несколько типов определения:
Формат OBJ предусматривает несколько типов определения:


# Список вершин, с координатами (x,y,z[,w]), w является не обязательным и по умолчанию 1.0.
# Список вершин, с координатами (x,y,z[,w]), w является не обязательным и по умолчанию 1.0.
Строка 36: Строка 36:
v ...
v ...
...
...
# Текстурные координаты (u,v[,w]), w является не обязательным и по умолчанию 0.
# Текстурные координаты (u,v,[w]), w является не обязательным и по умолчанию 0.
# Текстурная координата по y может быть указана как 1 - v, и при этом по x = u
# Текстурная координата по y может быть указана как 1 - v, и при этом по x = u
vt 0.500 -1.352 [0.234]
vt 0.500 -1.352 [0.234]
Строка 46: Строка 46:
vn ...
vn ...
...
...
# Параметры вершин в пространстве (u [,v] [,w]); свободная форма геометрического состояния (смотри ниже)
# Параметры вершин в пространстве (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
Строка 62: Строка 62:
# Объект
# Объект
o Object1
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 указывает на последний элемент).
Индексация начинается с первого элемента, а не с нулевого, как принято в большинстве языков программирования, также индексация может быть отрицательной. Отрицательный индекс указывает позицию относительно последнего элемента (индекс -1 указывает на последний элемент).


=== Вершины / Текстурные координаты ===
=== Вершины / Текстурные координаты ===
Строка 78: Строка 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 ...


Строка 112: Строка 115:


=== Краткий обзор ===
=== Краткий обзор ===
OBJ является одним из самых популярных форматов передачи 3-х мерной компьютерной геометрии. Информация о внешнем виде объектов(материалы) передается в файлах-спутниках в формате MTL (Material Library). OBJ при необходимости ссылается на такой файл с помощью директивы:
OBJ является одним из самых популярных форматов передачи трёхмерной компьютерной геометрии. Информация о внешнем виде объектов(материалы) передается в файлах-спутниках в формате MTL (Material Library). OBJ при необходимости ссылается на такой файл с помощью директивы:


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


=== Введение ===
=== Введение ===
MTL является стандартом, установленным компанией Wavefront Technologies. Вся информация представлена в ASCII виде и абсолютно читабельна для человека. Стандарт MTL так же очень популярен и поддерживается большинством пакетов для работы с 3D-графикой.
MTL является стандартом, установленным компанией Wavefront Technologies. Вся информация представлена символами ASCII (читабельна для человека). Стандарт MTL также очень популярен и поддерживается большинством пакетов для работы с 3D-графикой.


Информация о простых материалах в файле выглядит следующим образом:
Информация о простых материалах в файле выглядит следующим образом:
Строка 123: Строка 126:
newmtl название_материала1 # Объявление очередного материала
newmtl название_материала1 # Объявление очередного материала
# Цвета
# Цвета
Ka 1,000 1,000 0,000 # Цвет окружающего освещения (желтый)
Ka 1.000 1.000 0.000 # Цвет окружающего освещения (жёлтый)
Kd 1,000 1,000 1,000 # Диффузный цвет (белый)
Kd 1.000 1.000 1.000 # Диффузный цвет (белый)
# Параметры отражения
# Параметры отражения
Ks 0,000 0,000 0,000 # Цвет зеркального отражения (0;0;0 - выключен)
Ks 0.000 0.000 0.000 # Цвет зеркального отражения (0;0;0 - выключен)
Ns 10,000 # Коэффициент зеркального отражения (от 0 до 1000)
Ns 10.000 # Коэффициент зеркального отражения (от 0 до 1000)
# Параметры прозрачности
# Параметры прозрачности
d 0,9 # Прозрачность указывается с помощью директивы d
d 0.9 # Прозрачность указывается с помощью директивы d
Tr 0,9 # или в других реализациях формата с помощью Tr
Tr 0.9 # или в других реализациях формата с помощью Tr
#Следующий материал
# Следующий материал
newmtl название_материала2
newmtl название_материала2
...
...
Строка 142: Строка 145:
== Ссылки ==
== Ссылки ==
* [http://masandilov.ru/opengl/obj-file-loader Загрузка формата OBJ.]
* [http://masandilov.ru/opengl/obj-file-loader Загрузка формата OBJ.]
* [http://rodrigo-silveira.com/opengl-tutorial-parsing-obj-file-blender/ OpenGL Tutorial Load .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.]
* [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. 1 2 Controlled Vocabulary for Dublin Core format
  2. http://guides.archaeologydataservice.ac.uk/g2gp/3d_2-3