Articulo de referencia

Intercambio de motores de juego abiertos

OpenGEX ( Open Game Engine Exchange ) es un formato que facilita la transferencia independiente de la aplicación de datos de escenas complejas entre aplicaciones de gráficos 3D,...

OpenGEX ( Open Game Engine Exchange ) es un formato que facilita la transferencia independiente de la aplicación de datos de escenas complejas entre aplicaciones de gráficos 3D, incluyendo motores de juegos y aplicaciones de modelado 3D. Utiliza el Lenguaje de Descripción de Datos Abiertos (ODDL) para el almacenamiento de datos, un método para almacenar datos arbitrarios que mantiene la legibilidad humana. El formato de archivo OpenGEX está registrado en la Autoridad de Números Asignados de Internet (IANA) como model/vnd.opengextipo de medio. [ 1 ]

El formato OpenGEX está definido por la Especificación de Intercambio de Motores de Juego Abiertos [ 2 ] que está disponible en el sitio web oficial opengex.org .

Existen complementos de exportación que escriben en formato OpenGEX para Autodesk Maya y 3D Studio Max , y también hay un complemento no oficial disponible para Blender .

Formato

En su nivel más básico, un archivo OpenGEX consta de una jerarquía de nodos, un conjunto de objetos, un conjunto de materiales y cierta información adicional sobre unidades globales y orientación de ejes. Las diversas estructuras de nodos, objetos y materiales contienen todos los detalles, como datos geométricos y pistas de animación, dentro de una jerarquía de tipos adicionales de estructuras definidas por OpenGEX. Los siguientes tipos de datos pueden aparecer en un archivo OpenGEX:

  • Organización jerárquica de la escena (árboles de nodos).
  • Transformaciones de nodos y objetos (matrices de 4×4, traslaciones, rotaciones y escalas).
  • Objetos geométricos, objetos de luz y objetos de cámara.
  • Mallas compuestas por matrices de atributos de vértice y matrices de índices para múltiples niveles de detalle.
  • Mallas con esqueleto (esqueleto, transformaciones de pose de enlace, datos de ponderación de influencia ósea).
  • Múltiples objetivos de transformación para mallas y pesos de transformación animados.
  • Animación por fotogramas clave con curvas de animación lineales, de Bézier y TCB.
  • Colores y texturas de los materiales (difuso, especular, normal, emisión, opacidad, transparencia).

Ejemplo

A continuación se muestra un ejemplo muy sencillo de un archivo OpenGEX completo que describe un cubo verde. Comienza con un grupo de Metricestructuras que definen las unidades de medida y la dirección vertical global. A continuación, se incluye una única GeometryNodeestructura que proporciona el nombre y la transformación del cubo. Los datos geométricos del cubo se almacenan en la GeometryObjectestructura a la que hace referencia el nodo de geometría. La estructura del objeto de geometría contiene una única malla de primitivas triangulares que incluye posiciones por vértice, normales y coordenadas de textura . Finalmente, la Materialestructura al final del archivo contiene el color de reflexión difusa verde.

Métrica (clave = "distancia") {flotante {0.01}} Métrica (clave = "arriba") {cadena {"z"}} GeometríaNodo$nodo1 { Nombre {string {"Cubo"}} Referencia de objeto {ref {$geometry1}} MaterialRef {ref {$material1}} Transformar { flotar[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 // Cubo { Malla (primitiva = "triángulos") { VertexArray (attrib = "posición") { 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} } } ÍndiceArray { 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 { Nombre {string {"Verde"}} Color (attrib = "difuso") {float[3] {{0, 1, 0}}} } 

Historia

El desarrollo del formato OpenGEX fue financiado mediante una campaña de financiación colectiva [ 3 ] que finalizó el 8 de mayo de 2013. Paralelamente al diseño del formato, se creó el Lenguaje de Descripción de Datos Abiertos (ODDL) como lenguaje base genérico sobre el que se construyó OpenGEX. La compatibilidad con el formato OpenGEX se implementó originalmente en la versión 3.5 de C4 Engine .

Véase también

Referencias

  1. "Tipos de medios IANA, Modelo" .
  2. Lengyel, Eric (2021). Especificación de intercambio de motores de juego abiertos, versión 3.0 . Terathon Software LLC. ISBN 978-0-9858117-8-5.
  3. "Formato de intercambio de modelos 3D abierto y exportadores para software popular" .
  • Sitio web oficial