Czy istnieje standardowa specyfikacja reprezentacji grafiki 3D?


12

Czytam książkę o grafice komputerowej iw pewnym momencie pokazuje model 3D utworzony z pliku .dat.

Oto kilka zasad tworzenia plików .dat:

  • Wykonany z listy pozycji / powierzchni wierzchołków
  • Napisane w lewo
  • Twarze kończą się kropką (.)
  • Ułamki są również dopuszczalne

Chcę wiedzieć, czy jest to standard, a jeśli nie, jaki jest standardowy sposób definiowania obiektu 3D.

Ponadto, jeśli istnieje specyfikacja, kto ją zdefiniował i gdzie go znaleźć?

Odpowiedzi:


8

Mówiąc o formatach plików, mówimy o utrwaleniu niektórych danych związanych z modelem / geometrią 3D. Nie ma uniwersalnego standardu dla formatów plików dla utrwalania geometrii 3D. Istnieje tylko kilka formatów bardziej dominujących niż inne.

Podobnie jak w przypadku formatów plików graficznych, pliki PNG i JPEG są obecnie najpopularniejszymi formatami, ale nie ma uniwersalnej zgody między aplikacjami na używanie jednego lub drugiego. Każda aplikacja używa najlepiej dopasowanego do swoich celów.

To samo dzieje się z formatami plików przechowującymi dane 3D. Każde oprogramowanie do modelowania 3D będzie na ogół mieć jeden lub zestaw preferowanych formatów. Większość faktycznie definiuje niestandardowe formaty, które działają tylko z określoną wersją narzędzia. Może się to zdarzyć z wielu powodów, od uproszczenia wewnętrznego działania aplikacji lub przyspieszenia ładowania plików, po celowe powiązanie użytkownika z danym narzędziem.

Opisywany przez .datCiebie format to niestandardowy format stworzony przez autorów książki, który prawdopodobnie został zaprojektowany z myślą o prostocie. Wydaje się, że jest to plik tekstowy podobny do formatu Wavefront OBJ , który z kolei jest bardzo popularnym formatem do przechowywania geometrii statycznej, choć do tej pory jest nieco przestarzały. Można powiedzieć, że .OBJformat jest formatem .BMPmodeli 3D.

Inne popularne formaty modeli 3D to:

I wiele innych. Bardziej ogólne wyjaśnienie tutaj .

Zauważ też, że powiedziałem na początku, że są to formaty do przechowywania / utrwalania modelu 3D lub geometrii w pamięci offline. Nie oznacza to (i zwykle tak nie jest), że aplikacje, które ich używają, będą przechowywać dane wewnętrznie w pamięci przy użyciu tego samego układu co plik. Zwykle tego rodzaju dane zostaną poddane dużej obróbce po załadowaniu z pliku, dopóki nie zostaną na przykład wyświetlone na ekranie.


1
„Zwykle tego rodzaju dane będą podlegały dużej obróbce po załadowaniu z pliku, dopóki nie zostaną na przykład wyświetlone na ekranie”. jak obraz zostaje przekształcony w tablicę pikseli przed wypchnięciem go na ekran, bez względu na oryginalny format. (pomimo kompresji sprzętowej)
maniak zapadkowy

@ratchetfreak, ale nie wszystkie zastosowania formatów 3D kończą się na ekranie.
joojaa,

BMP, jako format binarny, nie jest dobrym odpowiednikiem OBJ. Lepszym dopasowaniem byłby XPM , który jest tekstowy.
Ruslan

5

Nie ma standardowego formatu dla modeli 3D. Niektóre typowe są wymienione w odpowiedzi Glamperta, więcej można znaleźć w tej odpowiedzi SE .

Jeśli projektujesz swój własny format na własne potrzeby (właściwie dość często to robisz), to dobry pierwszy krok, aby sprawdzić, w jaki sposób korzystasz z danych modelu. Na przykład, jeśli koncentrujesz się na renderowaniu, możesz użyć formatu oczekiwanego przez bibliotekę graficzną. Jeśli chcesz maksymalnie skrócić czas ładowania oprogramowania, możesz pomóc w zmniejszeniu ilości analiz i przetwarzania. Proste narzędzie, które może wyprowadzić plik w formacie, którego oczekuje silnik, oznacza, że ​​możesz po prostu zmapować plik do pamięci, a następnie przekazać wskaźnik do biblioteki graficznej.

Z drugiej strony, jeśli renderowanie nie jest twoim głównym zmartwieniem, a edycja jest dla Ciebie ważniejsza, możesz rozważyć format bardziej podatny na edycję, taki jak skrzydlata krawędź . Użycie formatu modelu ogólnego przeznaczenia może być odpowiednie dla twoich celów na początku projektu, ale ostatecznie istnieje wiele rzeczy, które możesz zrobić z modelami 3D, a każdy format ma swoje zalety i wady, więc możesz wybrać ten, który najlepiej Ci odpowiada .


4

Nie ma jednego standardu, który określa przechowywanie modeli 3D. Interfejs API grafiki troszczy się tylko o trójkąty, które są zdefiniowane przez wierzchołki i indeksy wskazujące, które wierzchołki tworzą trójkąt.

Wiele firm stworzyło własne formaty modeli z różnymi funkcjami i celami. Jednym z najprostszych jest format .obj (Wavefront Object). Który zawiera listy pozycji wierzchołków, normalnych i współrzędnych tekstury oraz listę indeksów tworzących trójkąty. Zawiera także materiały o niektórych podstawowych właściwościach, takich jak tekstury, kolory rozproszone i lustrzane.

Bardziej zaawansowane formaty modeli, takie jak .fbx (FilmBox) używane przez Autodesk zawierają dodatkowe informacje wymagane przez oprogramowanie do modelowania. Mogą to być kości, hierarchie i jeszcze więcej właściwości wierzchołków używanych do skórowania itp. Istnieją więc „standardy”, ale tak naprawdę nie są one zunifikowane, ponieważ każdy program może wymagać różnych informacji. Wavefront jest jednak bardzo dobrym wyborem, ponieważ wiele aplikacji do modelowania może do niego eksportować i łatwo jest napisać (znaleźć) importera.


3

Jak wspomniano w innych odpowiedziach, istnieje wiele konkurencyjnych formatów do przechowywania danych 3D.

Jednak od czasu zadawania tego pytania pojawił się jeden konkretny format, który ma wiele cech charakterystycznych dla „standardu”: format glTF .


glTF to standard 3D opublikowany przez Khronos Group (organizację stojącą za OpenGL i Vulkan), który ma na celu uzupełnienie wad w Colladzie.

Jego główne zalety to:

  • Jest oparty na JSON, co sprawia, że ​​bardzo łatwo jest analizować, serializować, czytać i wysyłać przez sieć.

  • W standardzie występuje bardzo mała dwuznaczność lub nadmiarowość (choć jest trochę *). Jednostki, ręczność, znaki współrzędnych tekstury itp. Są znormalizowane; wszystko jest zawsze oparte na indeksie, co oznacza, że ​​nie ma nadmiarowości danych. Dzięki temu bardzo łatwo jest napisać importera.

  • Dokumentacja jest bardzo czysta i wyczerpująca.

  • Układ danych oparty jest na przepływach pracy OpenGL / WebGL, co oznacza, że ​​zaimportowane modele mogą być używane jako dane w silniku przy niewielkiej hydraulice.

  • Standardem jest Open Source, a specyfikacja jest hostowana na Github. Oznacza to, że standard będzie zawsze dostępny, użyteczny za darmo, a proces rozwoju będzie widoczny dla wszystkich. Przeciwnie, o przyszłości standardów zamkniętych decydują prywatne interesy, co jest z natury niebezpieczne.

  • glTF jest obsługiwany przez wielu gigantów branży za pośrednictwem Khronos (Adobe, Google, Microsoft, Mozilla, Unity); może być eksportowany przez Blender (eksport z Mayi jest oficjalnie nieobsługiwany), a importowany przez Unreal, Unity i Godot.

Zobacz też:

* Jestem prawie pewien, że styczne o zmiennej wartości są bezcelowe.


2

Aby dodać do innych odpowiedzi, istnieją dwa rodzaje formatów: pośredni i czas wykonywania. Formaty pośrednie (przykład: COLLADA) są bardziej szczegółowe / wolniejsze i są ostatecznie konwertowane między narzędziami na niestandardowy format środowiska wykonawczego zoptymalizowany dla konkretnej aplikacji / sprzętu. Proste aplikacje, które nie dbają o wydajność, mogą bezpośrednio korzystać z formatów pośrednich.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.