Существует ли стандартная спецификация для трехмерного графического представления?

12

Я читаю книгу по компьютерной графике , и в какой-то момент она показывает 3D-модель, созданную из файла .dat.

Вот несколько правил для создания файла .dat:

  • Составлен из списка позиций / граней вершин
  • Написано против часовой стрелки
  • Лица заканчиваются точкой (.)
  • Фракции также приемлемы

Я хочу знать, является ли это стандартом, а если нет, каков стандартный способ определения 3D-объекта.

Кроме того, если есть спецификация, кто ее определил и где ее найти?

Даниил
источник

Ответы:

8

Говоря о форматах файлов, мы говорим о сохранении некоторых данных, связанных с трехмерной моделью / геометрией. Не существует универсального стандарта для форматов файлов для сохранения трехмерной геометрии. Есть только несколько форматов, более доминирующих, чем другие.

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

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

Этот .datформат, который вы описываете, является нестандартным форматом, созданным авторами книги, который, вероятно, был разработан с учетом простоты. Кажется, это текстовый файл, похожий на формат Wavefront OBJ , который, в свою очередь, является очень популярным форматом для хранения статической геометрии, хотя и немного устаревшим. Можно сказать, что это .OBJформат .BMPтрехмерных моделей.

Другие популярные форматы 3D-моделей включают в себя:

И много других. Более общее объяснение здесь .

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

glampert
источник
1
«Обычно данные такого типа подвергаются большой обработке после загрузки из файла, пока они, например, не отобразятся на экране». подобно тому, как изображение преобразуется в массив пикселей перед тем, как его выдвигают на экран, независимо от исходного формата. (несмотря на аппаратное сжатие)
чокнутый урод
@ratchetfreak, но не все виды использования 3D-форматов оказываются на экране.
joojaa
BMP, будучи двоичным форматом, не является хорошим аналогом OBJ. Лучшим соответствием будет XPM , который является текстовым.
Руслан
5

Не существует стандартного формата для 3D моделей. Некоторые из них перечислены в ответе Гламперта, больше можно найти в этом ответе SE .

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

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

Хорхе Родригес
источник
4

Не существует единого стандарта, определяющего хранение 3D-моделей. Графический API заботится только о треугольниках, которые определяются вершинами и индексами, указывающими, какие вершины образуют треугольник.

Многие компании создали свои собственные форматы моделей с различными функциями и целями. Одним из самых простых является формат .obj (Wavefront Object). Который содержит списки положений вершин, нормали и координаты текстуры и список индексов, которые составляют треугольники. Он также содержит материалы с некоторыми основными свойствами, такими как текстуры, диффузные и зеркальные цвета.

Более сложные форматы моделей, такие как .fbx (FilmBox), используемые Autodesk, содержат дополнительную информацию, необходимую для программного обеспечения для моделирования. Они могут включать кости, иерархии и даже больше свойств вершин, используемых для создания скинов и т. Д. Таким образом, существуют «стандарты», но они на самом деле не унифицированы, поскольку каждая программа может требовать различной информации. Но wavefront - очень хороший выбор, потому что многие приложения для моделирования могут экспортировать в него, и для него легко написать (найти) импортер.

Морис Лаво
источник
3

Как уже упоминалось в других ответах, существует несколько конкурирующих форматов для хранения трехмерных данных.

Однако после того, как был задан этот вопрос, появился один конкретный формат, который имеет много характеристик, которые можно ожидать от «стандарта»: формат glTF .


glTF - это 3D-стандарт, опубликованный Khronos Group (организация, стоящая за OpenGL и Vulkan), цель которой - восполнить недостатки в Collada.

Его основными преимуществами являются:

  • Он основан на JSON, что упрощает анализ, сериализацию, чтение и отправку по сети.

  • В стандарте очень мало двусмысленности или избыточности (хотя есть некоторые *). Единицы, протяженность, знаки текстурных координат и т. Д. Стандартизированы; все всегда основано на индексе, что означает отсутствие избыточности данных. Это действительно облегчает написание импортера.

  • Документация очень чистая и исчерпывающая.

  • Структура данных основана на рабочих процессах OpenGL / WebGL, что означает, что импортированные модели могут использоваться в качестве данных в двигателе с небольшим объемом данных.

  • Стандарт Open Source, а спецификация размещена на Github. Это означает, что стандарт всегда будет доступен, доступен для использования бесплатно, а процесс разработки виден всем. Оппозиция говорит о том, что будущее стандартов закрытых источников определяется частными интересами, что по своей природе опасно.

  • glTF поддерживается многими промышленными гигантами через Khronos (Adobe, Google, Microsoft, Mozilla, Unity); он может быть экспортирован Blender (экспорт из Maya официально не поддерживается) и импортирован Unreal, Unity и Godot.

Смотрите также:

* Я почти уверен, что касательные переменных величин не имеют смысла.

Рассказчик хаос
источник
2

Чтобы добавить к другим ответам, есть фактически два вида форматов, промежуточный и рабочий. Промежуточные форматы (например, COLLADA) более многословны / медленнее и в конечном итоге преобразуются между инструментами в пользовательский формат среды выполнения, оптимизированный для конкретного приложения / оборудования. Простые приложения, которые не заботятся о производительности, могут напрямую использовать промежуточные форматы.

SurvivalMachine
источник