Co to jest format pliku OBJ?
Format pliku .obj służy do przechowywania obiektów 3D utworzonych w różnym oprogramowaniu do projektowania i edycji. Każdy plik .obj może zawierać dane takie jak współrzędne wierzchołków, wektory normalne powierzchni, współrzędne tekstur UV oraz odniesienia do zewnętrznych plików obrazów tekstur. Pliki .obj nie zawierają danych dotyczących otoczenia obiektu - nie ma w nich informacji o oświetleniu, kamerach ani hierarchii sceny. Format został opracowany przez Wavefront Technologies, pierwotnie zaprojektowany jako plik zapisu dla ich aplikacji Advanced Visualizer.
Kompatybilność plików OBJ i MTL
Pliki .obj najczęściej zawierają odniesienia do towarzyszących plików .mtl, które opisują materiał cieniowania powierzchni każdego obiektu i odpowiednie dane. Każdy plik .obj może odwoływać się do jednego lub więcej plików .mtl; bez nich siatki są renderowane jako geometria bez cieniowania.
Zastosowania formatu OBJ
.obj jest szeroko wspieranym otwartym formatem i jest uważany za de facto standard wymiany obiektów 3D. Ponieważ jest to zwykły tekst ASCII, pliki .obj są czytelne dla człowieka i łatwe do analizy, dlatego zasadniczo wszystkie programy CAD i edytory 3D oferują możliwość importu i eksportu danych w tym formacie. W ostatnich latach, wraz z rozwojem technologii druku 3D, .obj zyskał jeszcze większą popularność - szczególnie jako format z wyboru dla procesów drukowania wielokolorowego i wielomateriałowego. Jest powszechnie stosowany obok .stl i .ply w procesach wytwarzania przyrostowego, a coraz częściej jako format źródłowy do konwersji na nowoczesne formaty wymiany, takie jak .gltf.
Bezpieczeństwo
RYZYKO: LOWPlik OBJ to dane geometryczne w formacie tekstowym - nie zawiera kodu wykonywalnego i nie może niczego uruchomić, więc otwieranie go jest bezpieczne. Jedyne praktyczne problemy są niezłośliwe: bardzo duże siatki o wysokiej liczbie poligonów (np. skany 3D) mogą ładować się powoli, a teksturowany OBJ potrzebuje towarzyszącego pliku .mtl i obrazów, inaczej pojawi się jako szary/nieteksturowany. Jak zawsze, ufaj rozszerzeniu dopiero po jego sprawdzeniu - plik udający „model.obj”, który w rzeczywistości jest plikiem wykonywalnym, stanowi realne zagrożenie, a nie sam format OBJ.
Szczegóły formatu
w pigułce- Plik obiektowy COFF (.obj) - Skompilowany plik obiektowy generowany jako produkt pośredni przez kompilatory C/C++, niezwiązany z formatem modelu 3D.
Programy otwierające pliki OBJ
Szczegóły techniczne
specyfikacja| Kodowanie pliku | Zwykły tekst ASCII; kompatybilny z UTF-8, brak sekcji binarnych |
| Sygnatura pliku (magic bytes) | Brak - identyfikowany przez tokeny na początku linii: `v ` (wierzchołek), `vt ` (współrzędna UV), `vn ` (normalna), `f ` (ściana), `mtllib` |
| Typ MIME | `model/obj` |
| Układ współrzędnych | Prawoskrętny; oś Y skierowana w górę zgodnie z konwencją (niektóre eksportery używają osi Z) |
| Prymitywy geometryczne | Wierzchołki (`v`), współrzędne tekstur UV (`vt`), wektory normalne (`vn`), ściany (`f`), linie (`l`), punkty (`p`) |
| Typy poligonów | Trójkąty, czworokąty i dowolne n-kąty (wielokąty o dowolnej liczbie wierzchołków na ścianę) |
| Baza indeksowania | Indeksy całkowite zaczynające się od 1; wartości ujemne dozwolone jako odniesienia względne (wsteczne) |
| Odniesienia do materiałów | Zewnętrzne pliki `.mtl` zadeklarowane za pomocą `mtllib`; stosowane dla grup siatek przez `usemtl` |
| Struktura obiektów/grup | Nazwane obiekty (słowo kluczowe `o`) i grupy (słowo kluczowe `g`) pozwalają na wieloczęściowe siatki w jednym pliku |
| Mapowanie tekstur | Współrzędne UV przechowywane jako wpisy `vt`; ścieżki do plików obrazów tekstur zdefiniowane w towarzyszącym pliku `.mtl` |
| Geometria swobodna | Opcjonalne krzywe NURBS i powierzchnie B-splajn poprzez słowa kluczowe `curv` / `surf` - rzadko implementowane w praktyce |
| Obsługa animacji | Brak - tylko statyczna geometria; animacja wymaga zewnętrznych formatów (FBX, glTF) |
| Dane sceny | Brak oświetlenia, kamer czy hierarchii sceny; format przechowuje wyłącznie geometrię |
| Kompresja | Nieskompresowany zwykły tekst; pliki kompresują się wydajnie za pomocą ZIP lub gzip |
| Przydatność do druku 3D | Szeroko akceptowany przez oprogramowanie typu slicer; preferowany nad STL w przypadku wielokolorowego/wielomateriałowego druku FDM |
| Interoperacyjność | Obsługiwany natywnie przez Blender, Autodesk Maya, Cinema 4D, ZBrush, SolidWorks i większość narzędzi CAD/DCC |
| Wydano | Late 1980s (Wavefront Technologies, for The Advanced Visualizer) |
| Otwarty standard | Tak · bezpłatny (royalty-free) |
| Specyfikacja | paulbourke.net |