Obj формат как выглядит текстовый документ. Чем открыть OBJ

Разработан

Wavefront Technologies

Тип формата

OBJ - это формат файлов описания геометрии, разработанный в Wavefront Technologies для их анимационного пакета Advanced Visualizer. Формат файла является открытым и был принят другими разработчиками приложений графики и может быть экспортирован/импортирован в e-Frontier"s Poser, Maya , XSI, Blender , MeshLab, Misfit Model 3D, 3D Studio Max и Rhinoceros 3D , Hexagon, CATIA , Newtek Lightwave, Art of Illusion , Modo , Cinema 4D , Zanoza Modeller и т. д. По большей части это общепринятый формат.

Формат файлов OBJ - это простой формат данных, который содержит только 3D геометрию, а именно, позицию каждой вершины, связь координат текстуры с вершиной, нормаль для каждой вершины, а также параметры, которые создают полигоны.

Формат файла

Строки начинающиеся с решётки(#) это коментарии.

# Это коментарий

Obj файл содержит несколько типов определения:

# Список вершин, с координатами (x,y,z[,w]), w является не обязательным и по умолчанию 1.0. v 0.123 0.234 0.345 1.0 v ... ... # Текстурные координаты (u[,v][,w]), v и w является не обязательным и по умолчанию 0. vt 0.500 -1.352 vt ... ... # Нормали (x,y,z); нормалей может не быть unit. 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 ...

Определение сторон

Поверхность определяется в списке вершин, текстурных координат и нормалей. Полигоны такие как квадрат могут быть определены с помощью более 3 вершин/текстурных координат/нормалей.

Вершины

Строка начинающаяся с f представляет собой индекс Поверхности. Каждая сторона может состоять из трех или более вершин.

Смотреть что такое "Obj" в других словарях:

    Obj - (or .OBJ) is a geometry definition file format first developed by Wavefront Technologies for its Advanced Visualizer animation package. The file format is open and has been adopted by other 3D graphics application vendors and can be… … Wikipedia

    OBJ - or OBJ may refer to: Object file, an organized machine code file created by a compiler with .obj file extension Relocatable Object Module Format, an Object file for Intel microprocessors with .obj file extension Wavefront .obj file, a 3D geometry … Wikipedia

    Или Obj (сокр. англ. object, «объект») многозначное сокращение. Означает несколько форматов и расширений файлов, в том числе: .obj расширение объектных модулей у ряда компиляторов Wavefront OBJ формат файлов геометрии объекта, используется в … Википедия

При наличии на компьютере установленной антивирусной программы можносканировать все файлы на компьютере, а также каждый файл в отдельности . Можно выполнить сканирование любого файла, щелкнув правой кнопкой мыши на файл и выбрав соответствующую опцию для выполнения проверки файла на наличие вирусов.

Например, на данном рисунке выделен файл my-file.obj , далее необходимо щелкнуть правой кнопкой мыши по этому файлу, и в меню файла выбрать опцию «сканировать с помощью AVG» . При выборе данного параметра откроется AVG Antivirus, который выполнит проверку данного файла на наличие вирусов.


Иногда ошибка может возникнуть в результате неверной установки программного обеспечения , что может быть связано с проблемой, возникшей в процессе установки. Это может помешать вашей операционной системе связать ваш файл OBJ с правильным прикладным программным средством , оказывая влияние на так называемые «ассоциации расширений файлов» .

Иногда простая переустановка Autodesk AutoCAD Ecscad может решить вашу проблему, правильно связав OBJ с Autodesk AutoCAD Ecscad. В других случаях проблемы с файловыми ассоциациями могут возникнуть в результате плохого программирования программного обеспечения разработчиком, и вам может потребоваться связаться с разработчиком для получения дополнительной помощи.


Совет: Попробуйте обновить Autodesk AutoCAD Ecscad до последней версии, чтобы убедиться, что установлены последние исправления и обновления.


Это может показаться слишком очевидным, но зачастую непосредственно сам файл OBJ может являться причиной проблемы . Если вы получили файл через вложение электронной почты или загрузили его с веб-сайта, и процесс загрузки был прерван (например, отключение питания или по другой причине), файл может повредиться . Если возможно, попробуйте получить новую копию файла OBJ и попытайтесь открыть его снова.


Осторожно: Поврежденный файл может повлечь за собой возникновение сопутствующего ущерба предыдущей или уже существующей вредоносной программы на вашем ПК, поэтому очень важно, чтобы на вашем компьютере постоянно работал обновленный антивирус.


Если ваш файл OBJ связан с аппаратным обеспечением на вашем компьютере , чтобы открыть файл вам может потребоваться обновить драйверы устройств , связанных с этим оборудованием.

Эта проблема обычно связана с типами мультимедийных файлов , которые зависят от успешного открытия аппаратного обеспечения внутри компьютера, например, звуковой карты или видеокарты . Например, если вы пытаетесь открыть аудиофайл, но не можете его открыть, вам может потребоваться обновить драйверы звуковой карты .


Совет: Если при попытке открыть файл OBJ вы получаете сообщение об ошибке, связанной с.SYS file , проблема, вероятно, может быть связана с поврежденными или устаревшими драйверами устройств , которые необходимо обновить. Данный процесс можно облегчить посредством использования программного обеспечения для обновления драйверов, такого как DriverDoc .


Если шаги не решили проблему , и у вас все еще возникают проблемы с открытием файлов OBJ, это может быть связано с отсутствием доступных системных ресурсов . Для некоторых версий файлов OBJ могут потребоваться значительный объем ресурсов (например, память/ОЗУ, вычислительная мощность) для надлежащего открытия на вашем компьютере. Такая проблема встречается достаточно часто, если вы используете достаточно старое компьютерное аппаратное обеспечение и одновременно гораздо более новую операционную систему.

Такая проблема может возникнуть, когда компьютеру трудно справиться с заданием, так как операционная система (и другие службы, работающие в фоновом режиме) могут потреблять слишком много ресурсов для открытия файла OBJ . Попробуйте закрыть все приложения на вашем ПК, прежде чем открывать Wavefront 3D Object File. Освободив все доступные ресурсы на вашем компьютере вы обеспечите налучшие условия для попытки открыть файл OBJ.


Если вы выполнили все описанные выше шаги , а ваш файл OBJ по-прежнему не открывается, может потребоваться выполнить обновление оборудования . В большинстве случаев, даже при использовании старых версий оборудования, вычислительная мощность может по-прежнему быть более чем достаточной для большинства пользовательских приложений (если вы не выполняете много ресурсоемкой работы процессора, такой как 3D-рендеринг, финансовое/научное моделирование или интенсивная мультимедийная работа). Таким образом, вполне вероятно, что вашему компьютеру не хватает необходимого объема памяти (чаще называемой «ОЗУ», или оперативной памятью) для выполнения задачи открытия файла.

Название (англ.): OBJ geometry format

Название (рус.): Формат геометрии OBJ

Разработчик: Wavefront Technologies

Описание: OBJ или OBJ geometry format представляет собой открытый формат файлов описания геометрии. Данный формат был разработан компанией Wavefront Technologies и первоначально предназначался для приложения Advanced Visualizer. Файлы этого типа относятся к категории трехмерных изображений, моделей. Файл OBJ может включать с себя карты текстур, 3D-координаты и другие информационные объекты. Также OBJ-файл может хранить исключительно текстовые данные, например параметры полигонов, связи, позиции вершин и т.п. В настоящее время формат OBJ используется в различных приложениях для создания моделей и трехмерной графики.

Для открытия (редактирования) файла этого формата можно использовать следующие программы:

Формат 2

Название (англ.): Relocatable Object Code

Название (рус.): Объектный файл

Разработчик: Intel

Описание: OBJ также известный как Relocatable Object Code представляет собой стандартизированный формат объектного файла используемого в программном обеспечении, работающем на микропроцессорах Intel 80x86. Разработчиком формата является Intel – одна из крупнейших компаний, специализирующихся на производстве цифровых устройств и компьютерных компонентов. Предназначается формат OBJ для хранения объектных данных. На данный момент OBJ считается устаревшим. Встретить его можно только в программах, работающих под управлением операционной системы MS-DOS. Отнести его можно к категории файлов данных.

Наш план действий будет таким – загрузить файл в память полностью и создать строку для каждой его строки. Мы также создадим временные массивы чисел с плавающей точкой для всех позиций вершин, координат текстур и нормалей, которые мы собираемся загрузить. Их размер равен количеству строк OBJ-файла, умноженному на количество компонент атрибута, – два для координат текстур или три для нормалей. Благодаря этому мы выделим памяти больше, чем необходимо, но это лучше, чем выделять память для новых массивов всякий раз, когда их понадобится пополнить.

То же самое мы сделаем для индексов, определяющих каждый треугольник. Поскольку формат OBJ является индексированным, мы не можем передать эти индексы непосредственно в класс Vertices3.

Причиной этого является тот факт, что атрибуты вершины могут быть использованы повторно несколькими вершинами, поэтому складываются отношения один ко многим, что не разрешается OpenGL ES. Поэтому мы будем использовать неиндексированный экземпляр класса Verti ces3 и просто дублировать вершины. Такой подход подойдет для наших нужд.

Посмотрим, как мы можем реализовать все это. Код этого класса содержится в листинге 11.12.

Листинг 11.12. Класс ObjLoader.java. простой класс, предназначенный для загрузки подмножества формата 0BJ

Первое, что мы делаем, – открываем в потоке InputStream файл с моделью, определяемый параметром fi1е. Потом в методе readLines (определенном далее) мы считываем все строки этого файла. Основываясь на количестве строк, мы выделяем память для массивов чисел с плавающей точкой, которые будут хранить компоненты осей х, у и z каждой нормали вершин, а также и- и -координаты текстур каждой вершины. Поскольку мы не знаем, сколько именно вершин мы увидим в файле, просто выделяем больше памяти, чем требуется. Каждый атрибут вершины хранится в последовательных элементах трех массивов. Позиция первой считанной вершины представлена элементами массива vertices, vertices и vertices и т. д. Мы также отслеживаем индексы при определении треугольников для каждого из трех атрибутов вершины. В дополнение у нас есть несколько счетчиков для отслеживания того, как много всего мы уже загрузили.

Если текущая строка является позицией вершины, мы считываем ее части, разделенные пробелами, такие как координаты по осям х, у и г,и сохраняем их в массиве вершин.

Мы делаем то же самое для нормалей и координат текстур:

В этом коде каждая вершина треугольника (названного здесь face (ребро) из-за терминологии формата OBJ) определяется тройкой индексов в массивах позиции вершин, координат текстур и нормалей. Индексы координат текстур и нормалей могут быть опущены, поэтому нам нужно следить за ними. Индексы также могут быть отрицательными, в этом случае нам придется добавлять их к количеству позиций/координат текстур/нормалей, загруженных ранее. Этим занимается метод getlndex.

Как только мы загрузим все позиции вершин, нормали и треугольники, мы можем начать создавать массив чисел с плавающей точкой, содержащий вершины в формате, который использует экземпляр класса Vertices3. Количество чисел с плавающей точкой, необходимых для хранения этих вершин, может быть с легкостью получено как число загруженных треугольников, а также с помощью информации о том, заданы ли нормали и координаты текстур.

Чтобы заполнить массив verts, мы просто проходим по всем треугольникам, получаем атрибуты каждой вершины треугольника и помещаем их в массив verts по шаблону, который используется экземпляром класса Verti ces3.

Последнее, что мы делаем, – создаем экземпляр класса Vertices3 и устанавливаем вершины.

Остальная часть метода посвящена обработке исключений и закрытию потока InputStream.

Метод getlndex принимает один из индексов, заданных для атрибута вершины определяемого треугольника, а также количество ранее загруженных атрибутов, и возвращает индекс, подходящий для ссылки на атрибут, который находится в одном из наших рабочих массивов.

Наконец, рассмотрим метод readlines, который просто считывает каждую строку файла и возвращает их все как список строк.

Чтобы загрузить OBJ-файл из ресурса, мы можем использовать класс Ob j Loader следующим образом:

Довольно прямолинейно после всей этой чехарды с индексами, не правда ли? Для отрисовки этого экземпляра класса Vertices3 нам необходимо знать, сколько он имеет вершин. Расширим класс Verti ces3 еще раз, добавив два метода, возвращающих количество вершин и количество индексов, которые определены в объекте в данный момент. Код этих методов содержится в листинге 11.13.

Листинг 11.13. Фрагменты класса Vertices3.java, получение количества вершин и индексов

Для количества индексов мы просто возвращаем границу ShortBuffer, хранящего индексы. Для количества вершин мы делаем то же самое. Однако, поскольку граница сообщается в виде количества чисел с плавающей точкой, определенных в буфере FloatBuffer, нам придется делить его на размер вершины.

Поскольку мы храним это количество байтов в параметре vertexSize, мы делим этот член класса на 4.

Использование класса OBJ Loader

Чтобы продемонстрировать работу загрузчика файлов OBJ, я переписал последний пример и создал новый тест, который называется ObjTest, а также экран ObjScreen. Я скопировал весь код из предыдущего примера и изменил только одну строку конструктора класса ObjScreen:

Поэтому вместо использования метода createCube (который я убрал) теперь мы напрямую загружаем модель из файла с расширением OBJ, который называется cube.obj. В программе Wings3D я создал копию куба, которую мы ранее создавали программно в методе createCube . Она имеет те же позиции вершин, текстурные координаты и нормали, что и созданная вручную версия. Вас не должно удивлять то, что результат работы программы ObjTest выглядит точно так же, как и результат работы Eul erCameraTest. Поэтому я не буду приводить скриншот.

Несколько замечаний по загрузке моделей

Для игры, загрузчик имеет большое значение, но он далеко не надежен. Есть несколько подводных камней.

Обработка строк в ОС Android по определению медленная. OBJ – это формат, использующий неформатированный текст, поэтому он требует больших затрат времени на свое преобразование. Это отрицательно повлияет на время загрузки. Вы можете обойти эту проблему, преобразуя ваши OBJ-модели в пользовательский бинарный формат. Вы можете, например, сериализовать массив verts таким образом, что мы заполняем его в методе ObjLoader. load О.

Формат OBJ имеет гораздо больше особенностей, чем мы рассмотрели. Если вы хотите расширить наш простой загрузчик, посмотрите спецификацию формата в Интернете. Добавить новую функциональность должно быть легко.

OBJ-файл часто предоставляется вместе с файлом материала. Этот файл определяет цвета и текстуры, используемые группами вершин, которые описаны в OBJ-файле. Нам не понадобится эта функциональность, поскольку мы знаем, какую текстуру использовать для конкретного OBJ-файла. Для создания более надежного загрузчика вам потребуется заглянуть в спецификацию файлов материала.

Расширение файла OBJ известен как Wavefront 3D Object File, который был разработан Wavefront Technologies. Это формат файла, используемый для трехмерного объекта, содержащего 3D-координаты (полигон линии и точки), текстурные карты, а также другую информацию об объекте. Она содержит стандартный 3D формат изображения, который может быть экспортирован и открыл несколько 3D-программ для редактирования изображений. Объектные файлы могут быть в формате ASCII (.obj) или двоичный формат (.mod), однако не содержит определения цвета для граней. Из-за их формата, они читаемым человеком. Он поддерживает как полигональные объекты свободной формы и объекты. Многоугольная геометрия использует точки, линии, и лица для определения объектов, в то время как в свободной форме геометрии используются кривые и поверхности. Файлы в формате OBJ можно открыть с помощью Autodesk Maya 2013, Blender и MeshLab в Microsoft Windows, Mac OS и Linux платформ.