OBJ (або .OBJ) — формат файлу опису геометрії, вперше створений в Wavefront Technologies для їхнього анімаційного пакету Advanced Visualizer. Це відкритий файловий формат, який взяли були інші розробники 3d редакторів за стандарт.
Формат OBJ дуже простий, і задає тільки геометрію об'єкта, а якщо конкретно, то координати кожної вершини, її текстурні координати, нормалі, і грані, що задаються списками вершин багатокутників. Вершини багатокутників за замовчуванням задаються проти годинникової стрілки, роблячи явне задання нормалей необов'язковим.
Типовий файл OBJ виглядає приблизно так:
# це коментар
# Список вершин заданих координатами (x,y,z)
v 0.123 0.234 0.345
v ...
...
#Текстурні координати (u,v).
vt 0.500 -1.352
vt ...
...
#Нормалі (x,y,z); нормалі можуть бути не нормалізовані.
vn 0.707 0.000 0.707
vn ...
..
#Кожна грань задається множиною трьох індексів кожен з яких відповідає за вершину/текстуру/нормаль
#координати яких записані в списках вище
#Тому f 1/1/1 2/2/2 3/3/3 це трикутник, що має текстурні координати та нормалі для
#всіх трьох вершин
#ЗАУВАЖЕННЯ: Списки нумеруються починаючи з одиниці.
f v1/vt1/vn1 v2/vt2/vn2 v3/vt3/vn3
f ...
# Чотирикутники, та інші многокутники задаються відповідною кількістю вершин
f v1/vt1/vn1 v2/vt2/vn2 v3/vt3/vn3 v4/vt4/vn4
f ...
...
# Можуть бути присутніми не усі можливі індекси, наприклад без нормалі
f v1/vt1 v2/vt2 v3/vt3 v4/vt4
# або без текстурних координат
f v1//vn1 v2//vn2 v3//vn3 v4//vn4
# або тільки індекси вершин
f v1 v2 v3 v4
# Матеріали, що описують візуальні аспекти моделі зберігаються в зовнішніх файлах .mtl
mtllib [external .mtl file name]
...
# Іменовані об'єкти, групи многокутників і матеріалів описуються такими тегами:
o [object name]
...
g [group name]
...
usemtl [material name]
...
# Ім'я матеріалу має збігатися з відповідним іменем матеріалу в файлі .mtl
# Кожен тег застосовується до всіх граней що йдуть після нього, поки не
# зустрінеться інший тег такого ж типу. Текстурні координати можуть не задаватись, якщо
# опис матеріалу не включає текстуру:
f v1//vn1 v2//vn2 v3//vn3
...
# Згладжування між гранями дозволяється через [[групи згладжування]]
s 1
...
# А також таке згладжування може бути вимкненим.
s off
...
Один файл OBJ може посилатись на кілька зовнішніх матеріалів.
Також підтримуються гладкі поверхні NURBS.
Програми що підтримують формат
Див. також
Посилання