Что такое формат файла OBJ?
Формат файлов .obj используется для хранения 3D-объектов, созданных в различных программах для проектирования и редактирования. Каждый файл .obj может содержать такие данные, как координаты вершин, нормали поверхностей, UV-координаты текстур и ссылки на внешние файлы изображений текстур. Файлы .obj не содержат данных об окружении объекта - в них нет информации об освещении, камерах или иерархии сцены. Формат был разработан компанией Wavefront Technologies и изначально предназначался для хранения данных в их приложении Advanced Visualizer.
Совместимость файлов OBJ и MTL
Файлы .obj чаще всего содержат ссылки на сопутствующие файлы .mtl, которые описывают материал затенения поверхности каждого объекта и соответствующие данные. Каждый файл .obj может ссылаться на один или несколько файлов .mtl; без них полигональные сетки отображаются как не затененная геометрия.
Применение формата OBJ
.obj является широко поддерживаемым открытым форматом и считается стандартом де-факто для обмена 3D-объектами. Поскольку это обычный текст ASCII, файлы .obj легко читаются человеком и просты в анализе, поэтому практически все программное обеспечение для CAD и 3D-редактирования предоставляет средства импорта и экспорта данных в этом формате. В последние годы, с ростом технологий 3D-печати, .obj приобрел еще большую популярность - особенно в качестве предпочтительного формата для многоцветных и многоматериальных рабочих процессов печати. Он часто используется наряду с .stl и .ply в конвейерах аддитивного производства и все чаще в качестве исходного формата для преобразования в современные форматы обмена, такие как .gltf.
Безопасность и защита
РИСК: LOWOBJ - это текстовые данные геометрии; они не содержат исполняемого кода и не могут ничего запускать, поэтому их открытие безопасно. Единственные практические нюансы не являются вредоносными: очень большие сетки с высоким разрешением (например, 3D-сканы) могут загружаться медленно, а текстурированному OBJ нужны сопутствующие файлы .mtl и изображения, иначе он будет выглядеть серым. Как всегда, доверяйте расширению только после его проверки - реальную опасность представляет файл, притворяющийся «model.obj», но являющийся исполняемым файлом, а не сам формат OBJ.
Детали формата
в двух словах- Объектный файл COFF (.obj) - Скомпилированный объектный файл, создаваемый компиляторами C/C++ как промежуточный этап сборки, не связан с форматом 3D-моделей.
Программы, открывающие файлы OBJ
Технические подробности
глубокая спецификация| Кодировка файла | Обычный текст ASCII; совместим с UTF-8, без бинарных разделов |
| Сигнатура файла (магические байты) | Отсутствует - идентифицируется по токенам в начале строк: `v ` (вершина), `vt ` (UV-координата), `vn ` (нормаль), `f ` (грань), `mtllib` |
| Тип MIME | `model/obj` |
| Система координат | Правосторонняя; по соглашению ось Y направлена вверх (некоторые экспортеры используют Z-вверх) |
| Геометрические примитивы | Вершины (`v`), UV-координаты текстур (`vt`), нормали (`vn`), грани (`f`), линии (`l`), точки (`p`) |
| Типы полигонов | Треугольники, четырехугольники и произвольные n-угольники (многоугольники с любым количеством вершин на грань) |
| База индексации | Целочисленные индексы, начинающиеся с 1; допускаются отрицательные значения как относительные (обратные) ссылки |
| Ссылки на материалы | Внешние файлы `.mtl`, объявленные с помощью `mtllib`; применяются к группе мешей через `usemtl` |
| Структура объектов/групп | Именованные объекты (ключевое слово `o`) и группы (ключевое слово `g`) позволяют хранить многосоставные сетки в одном файле |
| Текстурное картирование | UV-координаты хранятся как записи `vt`; пути к файлам изображений текстур определяются в сопутствующем `.mtl` |
| Геометрия свободной формы | Необязательные кривые NURBS и поверхности B-сплайнов через ключевые слова `curv` / `surf` - на практике реализуются редко |
| Поддержка анимации | Отсутствует - только статическая геометрия; для анимации требуются внешние форматы (FBX, glTF) |
| Данные сцены | Нет освещения, камер или иерархии сцены; формат хранит только геометрию |
| Сжатие | Несжатый обычный текст; файлы эффективно сжимаются с помощью ZIP или gzip |
| Пригодность для 3D-печати | Широко принимается программами-слайсерами; предпочтительнее STL для многоцветной/многоматериальной FDM-печати |
| Совместимость | Нативно поддерживается Blender, Autodesk Maya, Cinema 4D, ZBrush, SolidWorks и большинством инструментов CAD/DCC |
| Выпущен | Late 1980s (Wavefront Technologies, for The Advanced Visualizer) |
| Открыть стандартное | Да · без роялти |
| Спецификация | paulbourke.net |