Open Game Engine Exchange
The Open Game Engine Exchange (OpenGEX) is a format that aids the application-agnostic transferring of complex scene data between 3D graphics apps including game engines and 3D modelling apps. It uses Open Data Description Language for data storage, a method for arbitrary data storage that maintains human readability. The OpenGEX file format is registered with the Internet Assigned Numbers Authority (IANA) as the The OpenGEX format is defined by the Open Game Engine Exchange Specification,[2] which is available on the official website opengex.org. Export plugins that write the OpenGEX format are available for Autodesk Maya and 3D Studio Max, with an unofficial plugin available for Blender. FormatAt the most basic level, an OpenGEX file consists of a node hierarchy, a set of objects, a set of materials, and some additional information about global units and axis orientation. The various node, object, and material structures contain all of the details such as geometric data and animation tracks within a hierarchy of additional types of structures defined by OpenGEX. The following types of data can appear in an OpenGEX file:
ExampleA very simple example of a complete OpenGEX file describing a green cube is shown in the listing below. It begins with a group of 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}}} } HistoryThe development of the OpenGEX format was funded by a crowd-sourcing campaign[3] that ended on May 8, 2013. As the format was being designed, the Open Data Description Language was also created as a generic base language upon which OpenGEX was built. Support for the OpenGEX format was originally implemented in C4 Engine version 3.5. See also
References
External links |