Чи існує стандартна специфікація для 3D графічного зображення?


12

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

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

  • Складений із списку вершин позицій / граней
  • Написано проти годинникової стрілки
  • Обличчя закінчуються крапкою (.)
  • Дроби також прийнятні

Я хочу знати, чи це стандарт, а якщо ні, то який стандартний спосіб визначення 3D-об’єкта.

Також, якщо є специфікація, хто її визначив і де її знайти?

Відповіді:


8

Коли ми говоримо про формати файлів, ми говоримо про збереження деяких даних, що стосуються 3D-моделі / геометрії. Не існує універсального стандарту на формати файлів для збереження тривимірної геометрії. Є лише кілька форматів, які є більш домінуючими, ніж інші.

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

Те саме відбувається з форматами файлів, що зберігають тривимірні дані. Кожне програмне забезпечення для моделювання 3D, як правило, має один або набір бажаних форматів. Більшість насправді визначають власні формати, які працюють лише з певною версією інструменту. Це може статися з багатьох причин, починаючи від спрощення внутрішньої роботи програми або швидшого завантаження файлів, до прив'язки користувача до певного інструменту за призначенням.

Цей .datописаний вами формат - це нестандартний формат, створений авторами книги, який, ймовірно, був розроблений з простотою на увазі. Здається, це текстовий файл, схожий на формат OBJ Wavefront , який, в свою чергу, є дуже популярним форматом для зберігання статичної геометрії, хоча на сьогодні трохи застарів. Можна сказати, що .OBJформат - це .BMPформати 3D-моделей.

Інші популярні формати 3D-моделей включають:

І багато інших. Більш загальне пояснення тут .

Також зауважте, що я на початку сказав, що це формати для зберігання / збереження тривимірної моделі чи геометрії на офлайн-сховищі. Це не означає (і зазвичай це не так), що програми, які їх використовують, будуть зберігати дані всередині пам'яті, використовуючи той самий макет, що і файл. Зазвичай такий тип даних буде піддаватися великій обробці після завантаження з файлу, поки він, наприклад, не відобразиться на екрані.


1
"Зазвичай такі дані будуть піддані великій обробці після завантаження з файлу, поки вони, наприклад, не відображаються на екрані." як зображення перетворюється на піксельний масив перед тим, як натиснути на екран незалежно від того, яким був початковий формат. (апаратне стиснення незважаючи на це)
храповик урод

@ratchetfreak, але не все використання форматів 3D закінчується на екрані.
joojaa

BMP, будучи двійковим форматом, не є добрим аналогом OBJ. Краще відповідатиме XPM , який є текстовим.
Руслан

5

Не існує стандартного формату для 3D-моделей. Деякі поширені з них наведені у відповіді Гламперта, більше можна знайти в цій відповіді SE .

Якщо ви розробляєте свій власний формат для власних цілей, (насправді досить звичайна річ), це перший перший крок, щоб подивитися, як ви використовуєте дані своєї моделі. Наприклад, якщо ви зосереджені на візуалізації, ви можете використовувати формат, який очікує бібліотека графіки. Якщо ви хочете максимально скоротити час завантаження вашого програмного забезпечення, то зменшення кількості розбору та обробки, що вам потрібно зробити, може допомогти. Проста утиліта, яка може вивести файл у форматі, який очікує ваш двигун, означатиме, що ви можете просто зіставити файл у пам'ять, а потім передати вказівник у вашу графічну бібліотеку.

З іншого боку, якщо візуалізація не є вашою основною проблемою, і для вас важливіше редагування, ви можете розглянути формат, більш придатний до редагування, наприклад крилатий край . Використання формату моделі загального призначення може відповідати вашим цілям на початку проекту, але в кінцевому рахунку є багато речей, які можна зробити з 3D-моделями, і кожен формат має свої переваги та недоліки, тож ви можете вибрати той, який найкраще підходить вам .


4

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

Багато компаній створили власні модельні формати з різними функціями та цілями. Один з найпростіших - формат .obj (Wavefront Object). Який містить списки вершинних позицій, нормалів та координат текстури та список індексів, що складають трикутники. Він також містить матеріали з деякими основними властивостями, як текстури, дифузні та дзеркальні кольори.

Більш просунуті формати моделей, такі як .fbx (FilmBox), що використовується Autodesk, містять додаткову інформацію, необхідну для програмного забезпечення для моделювання. Вони можуть включати кістки, ієрархії та навіть більше властивостей вершин, що використовуються для зняття шкіри тощо. Отже, існують "стандарти", але вони насправді не є уніфікованими, оскільки кожна програма може вимагати різної інформації. Але Wavefront - це дуже хороший вибір, оскільки багато додатків для моделювання можуть експортувати на нього, і їх легко написати (знайти) імпортером.


3

Як згадували інші відповіді, існує кілька конкуруючих форматів для зберігання 3D-даних.

Однак з'явився один конкретний формат з моменту того, як було задано це запитання, яке має багато характеристик, яких ви очікували від "стандартного": формату glTF .


glTF - це тривимірний стандарт, опублікований групою Khronos (організацією, що стоїть за OpenGL та Vulkan), метою якої є усунення недоліків у Collada.

Основними його перевагами є:

  • Це на базі JSON, що дозволяє дуже легко розбирати, серіалізувати, читати та надсилати по мережі.

  • У стандарті дуже мало двозначності чи надмірності (хоча є деякі *). Усі стандарти, знаки координат текстури та ін. Є стандартизованими; все завжди на основі індексу, а це означає, що немає надмірності даних. Це дозволяє дуже легко написати імпортера.

  • Документація дуже чиста та вичерпна.

  • Макет даних базується на робочих процесах OpenGL / WebGL, а це означає, що імпортовані моделі можуть використовуватися як дані в двигуні з невеликою кількістю сантехніки.

  • Стандарт є Open Source, а специфікація розміщена на Github. Це означає, що стандарт завжди буде доступний, доступний безкоштовно, а процес розробки видно всім. За протилежності, майбутнє стандартів із закритим кодом визначається приватними інтересами, що за своєю суттю небезпечно.

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

Дивіться також:

* Я майже впевнений, що дотичні до змінної передачі безглузді.


2

Щоб додати до інших відповідей, насправді існує два типи форматів - проміжні та тривалість виконання. Проміжні формати (наприклад: COLLADA) є більш багатослівними / повільнішими і перетворюються між інструментами в кінцевому підсумку у користувацький формат виконання, оптимізований для конкретного додатка / обладнання. Прості програми, які не надто дбають про продуктивність, можуть безпосередньо використовувати проміжні формати.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.