Otevřená výměna herního enginu - Open Game Engine Exchange
| Přípona názvu souboru |
.ogex
|
|---|---|
| Typ internetového média |
model / vnd.opengex
|
| Vyvinul | Eric Lengyel |
| První vydání | 21. prosince 2013 |
| Poslední vydání | 3.0 (2. února 2021 ) |
| Typ formátu | 3D počítačová grafika |
| Rozšířeno z | OpenDDL |
| Otevřený formát ? | Ano |
| webová stránka | opengex |
Formát Open Game Engine Exchange ( OpenGEX ) je textový formát souboru, který má usnadnit přenos složitých dat 3D scény mezi aplikacemi, jako jsou nástroje pro modelování a herní enginy. Formát OpenGEX je postaven na konceptech datové struktury definovaných jazykem Open Data Description Language (OpenDDL), obecným jazykem pro ukládání libovolných dat v čitelném formátu. Formát souboru OpenGEX je registrován u úřadu model/vnd.opengex Media Assigned Numbers Authority (IANA) jako typ média.
Formát OpenGEX je definován ve specifikaci Open Game Engine Exchange , která je k dispozici na oficiálním webu opengex.org .
Exportní doplňky, které vytvářejí formát OpenGEX, jsou k dispozici pro Autodesk Maya a 3D Studio Max .
Formát
Na nejzákladnější úrovni se soubor OpenGEX skládá z hierarchie uzlů, sady objektů, sady materiálů a některých dalších informací o globálních jednotkách a orientaci os. Různé struktury uzlů, objektů a materiálů obsahují všechny podrobnosti, jako jsou geometrická data a stopy animací v hierarchii dalších typů struktur definovaných OpenGEX. V souboru OpenGEX se mohou objevit následující typy dat:
- Hierarchická organizace scén (uzlové stromy).
- Transformace uzlů a objektů (matice 4 × 4, překlady, rotace a měřítka).
- Objekty geometrie, lehké objekty a objekty kamery.
- Sítě složené z polí atributů vrcholů a indexových polí pro více úrovní podrobností.
- Síťované kůže (kostra, transformace vazebné pózy, váhové údaje o vlivu kostí).
- Více morphových cílů pro sítě a animované morphové váhy.
- Animace klíčových snímků s lineárními, Bézierovými a TCB animačními křivkami.
- Barvy a textury materiálu (rozptýlené, zrcadlové, normální, emisní, neprůhledné, průhledné).
Příklad
Velmi jednoduchý příklad kompletního souboru OpenGEX popisujícího zelenou kostku je uveden v seznamu níže. Začíná to skupinou Metric struktur, které definují jednotky měření a globální směr nahoru. Za nimi následuje jediná GeometryNode struktura, která poskytuje název a transformaci krychle. Geometrická data pro krychli jsou uložena ve GeometryObject struktuře, na kterou odkazuje uzel geometrie. Struktura objektu geometrie obsahuje jednu síť trojúhelníkových primitiv, která zahrnuje polohy vrcholů, normály a souřadnice textury . Nakonec Material struktura na konci souboru obsahuje zelenou barvu rozptýleného odrazu.
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}}}
}
Dějiny
Vývoj formátu OpenGEX byl financován kampaní zaměřenou na získávání davů, která skončila 8. května 2013. Při vytváření formátu byl také vytvořen jazyk Open Data Description Language jako obecný základní jazyk, na kterém byl OpenGEX postaven. Podpora formátu OpenGEX byla původně implementována v C4 Engine verze 3.5.