Open Game Engine Exchange

Last updated
OpenGEX
OpenGEX structure diagram.png
Filename extension
.ogex
Internet media type
model/vnd.opengex
Developed by Eric Lengyel
Initial release21 December 2013;10 years ago (2013-12-21)
Latest release
3.0
2 February 2021;3 years ago (2021-02-02)
Type of format 3D computer graphics
Extended from OpenDDL
Open format?Yes
Website opengex.org

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 model/vnd.opengex media type. [1]

Contents

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.

Format

At 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:

Example

A 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 structures that define the units of measurement and the global up direction. Those are followed by a single GeometryNode structure that provides the name and transform for the cube. The geometric data for the cube is stored in the GeometryObject structure that is referenced by the geometry node. The geometry object structure contains a single mesh of triangle primitives that includes per-vertex positions, normals, and texture coordinates. Finally, the Material structure at the end of the file contains the green diffuse reflection color.

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}}} } 

History

The 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

Related Research Articles

<span class="mw-page-title-main">Scene graph</span>

A scene graph is a general data structure commonly used by vector-based graphics editing applications and modern computer games, which arranges the logical and often spatial representation of a graphical scene. It is a collection of nodes in a graph or tree structure. A tree node may have many children but only a single parent, with the effect of a parent applied to all its child nodes; an operation performed on a group automatically propagates its effect to all of its members. In many programs, associating a geometrical transformation matrix at each group level and concatenating such matrices together is an efficient and natural way to process such operations. A common feature, for instance, is the ability to group related shapes and objects into a compound object that can then be manipulated as easily as a single object.

<span class="mw-page-title-main">Geometric primitive</span> Basic shapes represented in vector graphics

In vector computer graphics, CAD systems, and geographic information systems, geometric primitive is the simplest geometric shape that the system can handle. Sometimes the subroutines that draw the corresponding objects are called "geometric primitives" as well. The most "primitive" primitives are point and straight line segment, which were all that early vector graphics systems had.

<span class="mw-page-title-main">Polygon mesh</span> Set of polygons to define a 3D model

In 3D computer graphics and solid modeling, a polygon mesh is a collection of vertices, edges and faces that defines the shape of a polyhedral object. The faces usually consist of triangles, quadrilaterals (quads), or other simple convex polygons (n-gons), since this simplifies rendering, but may also be more generally composed of concave polygons, or even polygons with holes.

<span class="mw-page-title-main">Shader</span> Type of program in a graphical processing unit (GPU)

In computer graphics, a shader is a computer program that calculates the appropriate levels of light, darkness, and color during the rendering of a 3D scene—a process known as shading. Shaders have evolved to perform a variety of specialized functions in computer graphics special effects and video post-processing, as well as general-purpose computing on graphics processing units.

COLLADA is an interchange file format for interactive 3D applications. It is managed by the nonprofit technology consortium, the Khronos Group, and has been adopted by ISO as a publicly available specification, ISO/PAS 17506.

OBJ is a geometry definition file format first developed by Wavefront Technologies for its Advanced Visualizer animation package. The file format is open and has been adopted by other 3D graphics application vendors.

<span class="mw-page-title-main">Polygonal modeling</span> Object modeling method

In 3D computer graphics, polygonal modeling is an approach for modeling objects by representing or approximating their surfaces using polygon meshes. Polygonal modeling is well suited to scanline rendering and is therefore the method of choice for real-time computer graphics. Alternate methods of representing 3D objects include NURBS surfaces, subdivision surfaces, and equation-based representations used in ray tracers.

<span class="mw-page-title-main">STL (file format)</span> File format for stereolithography applications

STL is a file format native to the stereolithography CAD software created by 3D Systems. Chuck Hull, the inventor of stereolithography and 3D Systems’ founder, reports that the file extension is an abbreviation for stereolithography.

<span class="mw-page-title-main">Mesh generation</span> Subdivision of space into cells

Mesh generation is the practice of creating a mesh, a subdivision of a continuous geometric space into discrete geometric and topological cells. Often these cells form a simplicial complex. Usually the cells partition the geometric input domain. Mesh cells are used as discrete local approximations of the larger domain. Meshes are created by computer algorithms, often with human guidance through a GUI, depending on the complexity of the domain and the type of mesh desired. A typical goal is to create a mesh that accurately captures the input domain geometry, with high-quality (well-shaped) cells, and without so many cells as to make subsequent calculations intractable. The mesh should also be fine in areas that are important for the subsequent calculations.

PLY is a computer file format known as the Polygon File Format or the Stanford Triangle Format. It was principally designed to store three-dimensional data from 3D scanners. The data storage format supports a relatively simple description of a single object as a list of nominally flat polygons. A variety of properties can be stored, including color and transparency, surface normals, texture coordinates and data confidence values. The format permits one to have different properties for the front and back of a polygon.

A vertex buffer object (VBO) is an OpenGL feature that provides methods for uploading vertex data to the video device for non-immediate-mode rendering. VBOs offer substantial performance gains over immediate mode rendering primarily because the data reside in video device memory rather than system memory and so it can be rendered directly by the video device. These are equivalent to vertex buffers in Direct3D.

Visualization Library (VL) is an open source C++ middleware for 2D/3D graphics applications based on OpenGL 4, designed to develop portable applications for the Microsoft Windows, Linux and Mac OS X operating systems.

3DS is one of the file formats used by the Autodesk 3ds Max 3D modeling, animation and rendering software.

OpenCTM is a 3D geometry technology for storing triangle-based meshes in a compact format.

<span class="mw-page-title-main">3D modeling</span> Form of computer-aided engineering

In 3D computer graphics, 3D modeling is the process of developing a mathematical coordinate-based representation of a surface of an object in three dimensions via specialized software by manipulating edges, vertices, and polygons in a simulated 3D space.

Additive manufacturing file format (AMF) is an open standard for describing objects for additive manufacturing processes such as 3D printing. The official ISO/ASTM 52915:2016 standard is an XML-based format designed to allow any computer-aided design software to describe the shape and composition of any 3D object to be fabricated on any 3D printer via a computer-aided manufacturing software. Unlike its predecessor STL format, AMF has native support for color, materials, lattices, and constellations.

3D Manufacturing Format or 3MF is an open source file format standard developed and published by the 3MF Consortium.

This is a glossary of terms relating to computer graphics.

glTF 3D scene and model file format

glTF is a standard file format for three-dimensional scenes and models. A glTF file uses one of two possible file extensions: .gltf (JSON/ASCII) or .glb (binary). Both .gltf and .glb files may reference external binary and texture resources. Alternatively, both formats may be self-contained by directly embedding binary data buffers. An open standard developed and maintained by the Khronos Group, it supports 3D model geometry, appearance, scene graph hierarchy, and animation. It is intended to be a streamlined, interoperable format for the delivery of 3D assets, while minimizing file size and runtime processing by apps. As such, its creators have described it as the "JPEG of 3D."

JMesh is a JSON-based portable and extensible file format for the storage and interchange of unstructured geometric data, including discretized geometries such as triangular and tetrahedral meshes, parametric geometries such as NURBS curves and surfaces, and constructive geometries such as constructive solid geometry (CGS) of shape primitives and meshes. Built upon the JData specification, a JMesh file utilizes the JSON and Universal Binary JSON (UBJSON) constructs to serialize and encode geometric data structures, therefore, it can be directly processed by most existing JSON and UBJSON parsers. The JMesh specification defines a list of JSON-compatible constructs to encode geometric data, including N-dimensional (ND) vertices, curves, surfaces, solid elements, shape primitives, their interactions and spatial relations, together with their associated properties, such as numerical values, colors, normals, materials, textures and other properties related to graphics data manipulation, 3-D fabrication, computer graphics rendering and animations.

References

  1. "IANA Media Types, Model".
  2. Lengyel, Eric (2021). Open Game Engine Exchange Specification, Version 3.0. Terathon Software LLC. ISBN   978-0-9858117-8-5.
  3. "Open 3D Model Exchange Format and Exporters for Popular Software".