Open Game Engine Exchange - Open Game Engine Exchange
| Rozszerzenie nazwy pliku |
.ogex
|
|---|---|
| Rodzaj mediów internetowych |
model / vnd.opengex
|
| Opracowany przez | Eric Lengyel |
| Pierwsze wydanie | 21 grudnia 2013 |
| Najnowsze wydanie | 3.0 (2 lutego 2021 ) |
| Rodzaj formatu | Grafika komputerowa 3D |
| Przedłużony z | OpenDDL |
| Otwarty format ? | tak |
| Stronie internetowej | opengex |
Format Open Game Engine Exchange ( OpenGEX ) to tekstowy format pliku zaprojektowany w celu ułatwienia przesyłania złożonych danych scen 3D między aplikacjami, takimi jak narzędzia do modelowania i silniki gier. Format OpenGEX jest oparty na koncepcjach struktury danych zdefiniowanych przez Open Data Description Language (OpenDDL), ogólny język do przechowywania dowolnych danych w formacie czytelnym dla człowieka. Format pliku OpenGEX jest zarejestrowany przez Internet Assigned Numbers Authority (IANA) jako model/vnd.opengex typ nośnika.
Format OpenGEX jest zdefiniowany w specyfikacji Open Game Engine Exchange , która jest dostępna na oficjalnej stronie internetowej opengex.org .
Wtyczki eksportu, które zapisują format OpenGEX, są dostępne dla Autodesk Maya i 3D Studio Max .
Format
Na najbardziej podstawowym poziomie plik OpenGEX składa się z hierarchii węzłów, zestawu obiektów, zestawu materiałów i kilku dodatkowych informacji o jednostkach globalnych i orientacji osi. Różne struktury węzłów, obiektów i materiałów zawierają wszystkie szczegóły, takie jak dane geometryczne i ścieżki animacji w ramach hierarchii dodatkowych typów struktur zdefiniowanych przez OpenGEX. W pliku OpenGEX mogą pojawić się następujące typy danych:
- Hierarchiczna organizacja sceny (drzewa węzłów).
- Transformacje węzłów i obiektów (macierze 4 × 4, translacje, obroty i skale).
- Obiekty geometryczne, obiekty świetlne i obiekty kamery.
- Siatki złożone z tablic atrybutów wierzchołków i tablic indeksów dla wielu poziomów szczegółowości.
- Siatki ze skórkami (szkielet, transformacje w pozycji wiązania, dane ważenia wpływu kości).
- Wiele celów morfingu dla siatek i animowanych wag morfingu.
- Animacja klatki kluczowej z krzywymi animacji liniowej, Béziera i TCB.
- Kolory i tekstury materiałów (rozproszone, zwierciadlane, normalne, emisyjne, krycie, przezroczystość).
Przykład
Bardzo prosty przykład pełnego pliku OpenGEX opisującego zieloną kostkę jest pokazany na poniższej liście. Rozpoczyna się grupą Metric struktur, które definiują jednostki miary i globalny kierunek w górę. Po nich następuje pojedyncza GeometryNode struktura, która zawiera nazwę i transformację kostki. Dane geometryczne kostki są przechowywane w GeometryObject strukturze, do której odwołuje się węzeł geometrii. Struktura obiektu geometrii zawiera pojedynczą siatkę prymitywów trójkątów, która zawiera pozycje wierzchołków, normalne i współrzędne tekstury . Wreszcie Material struktura na końcu pliku zawiera zielony kolor odbicia rozproszonego.
Metric (key = "distance") {float {0.01}}
Metric (key = "up") {string {"z"}}
GeometryNode $node1
{
Name {string {"Cube"}}
ObjectRef {ref {$geometry1}}
MaterialRef {ref {$material1}}
Transform
{
float[12]
{
{1.0, 0.0, 0.0,
0.0, 1.0, 0.0,
0.0, 0.0, 1.0,
50.0, 50.0, 0.0}
}
}
}
GeometryObject $geometry1 // Cube
{
Mesh (primitive = "triangles")
{
VertexArray (attrib = "position")
{
float[3] // 24
{
{-50.0, -50.0, 0.0}, {-50.0, 50.0, 0.0},
{50.0, 50.0, 0.0}, {50.0, -50.0, 0.0},
{-50.0, -50.0, 100.0}, {50.0, -50.0, 100.0},
{50.0, 50.0, 100.0}, {-50.0, 50.0, 100.0},
{-50.0, -50.0, 0.0}, {50.0, -50.0, 0.0},
{50.0, -50.0, 100.0}, {-50.0, -50.0, 100.0},
{50.0, -50.0, 0.0}, {50.0, 50.0, 0.0},
{50.0, 50.0, 100.0}, {50.0, -50.0, 100.0},
{50.0, 50.0, 0.0}, {-50.0, 50.0, 0.0},
{-50.0, 50.0, 100.0}, {50.0, 50.0, 100.0},
{-50.0, 50.0, 0.0}, {-50.0, -50.0, 0.0},
{-50.0, -50.0, 100.0}, {-50.0, 50.0, 100.0}
}
}
VertexArray (attrib = "normal")
{
float[3] // 24
{
{0.0, 0.0, -1.0}, {0.0, 0.0, -1.0}, {0.0, 0.0, -1.0},
{0.0, 0.0, -1.0}, {0.0, 0.0, 1.0}, {0.0, 0.0, 1.0},
{0.0, 0.0, 1.0}, {0.0, 0.0, 1.0}, {0.0, -1.0, 0.0},
{0.0, -1.0, 0.0}, {0.0, -1.0, 0.0}, {0.0, -1.0, 0.0},
{1.0, 0.0, 0.0}, {1.0, 0.0, 0.0}, {1.0, 0.0, 0.0},
{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 1.0, 0.0},
{0.0, 1.0, 0.0}, {0.0, 1.0, 0.0}, {-1.0, 0.0, 0.0},
{-1.0, 0.0, 0.0}, {-1.0, 0.0, 0.0}, {-1.0, 0.0, 0.0}
}
}
VertexArray (attrib = "texcoord")
{
float[2] // 24
{
{1.0, 0.0}, {1.0, 1.0}, {0.0, 1.0}, {0.0, 0.0},
{0.0, 0.0}, {1.0, 0.0}, {1.0, 1.0}, {0.0, 1.0},
{0.0, 0.0}, {1.0, 0.0}, {1.0, 1.0}, {0.0, 1.0},
{0.0, 0.0}, {1.0, 0.0}, {1.0, 1.0}, {0.0, 1.0},
{0.0, 0.0}, {1.0, 0.0}, {1.0, 1.0}, {0.0, 1.0},
{0.0, 0.0}, {1.0, 0.0}, {1.0, 1.0}, {0.0, 1.0}
}
}
IndexArray
{
uint32[3] // 12
{
{0, 1, 2}, {2, 3, 0}, {4, 5, 6}, {6, 7, 4}, {8, 9, 10},
{10, 11, 8}, {12, 13, 14}, {14, 15, 12}, {16, 17, 18},
{18, 19, 16}, {20, 21, 22}, {22, 23, 20}
}
}
}
}
Material $material1
{
Name {string {"Green"}}
Color (attrib = "diffuse") {float[3] {{0, 1, 0}}}
}
Historia
Rozwój formatu OpenGEX został sfinansowany w ramach kampanii crowdsourcingowej, która zakończyła się 8 maja 2013 r. Podczas projektowania formatu, Open Data Description Language został również stworzony jako ogólny język bazowy, na którym zbudowano OpenGEX. Obsługa formatu OpenGEX została pierwotnie zaimplementowana w C4 Engine w wersji 3.5.