stringtranslate.com

Intercambio abierto de motores de juego

Open Game Engine Exchange ( OpenGEX ) es un formato que facilita la transferencia de datos de escenas complejas entre aplicaciones de gráficos 3D, incluidos motores de juegos y aplicaciones de modelado 3D, sin importar la aplicación. Utiliza el lenguaje de descripción de datos abiertos para el almacenamiento de datos, un método para el almacenamiento de 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 Open Game Engine Exchange , [2] que está disponible en el sitio web oficial opengex.org.

Los complementos de exportación que escriben el formato OpenGEX están disponibles para Autodesk Maya y 3D Studio Max , con un complemento no oficial disponible para Blender .

Formato

En el nivel más básico, un archivo OpenGEX consta de una jerarquía de nodos, un conjunto de objetos, un conjunto de materiales y algo de información adicional sobre las unidades globales y la orientación de los ejes. Las distintas 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:

Ejemplo

En la lista que aparece a continuación se muestra un ejemplo muy simple 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 ascendente global. A continuación, aparece 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 de triángulos que incluye posiciones por vértice, normales y coordenadas de textura . Por último, la Materialestructura al final del archivo contiene el color de reflexión difusa verde.

Métrica (clave = "distancia") {float {0.01}}Métrica (clave = "arriba") {cadena {"z"}}Nodo de geometría $node1{ Nombre {string {"Cubo"}} ObjetoRef {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 (atributo = "posición") { flotar[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 (atributo = "normal") { flotar[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 (atributo = "texcoord") { flotar[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} } } Matriz de índice { 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 (atributo = "difuso") {float[3] {{0, 1, 0}}}}

Historia

El desarrollo del formato OpenGEX fue financiado por una campaña de colaboración colectiva [3] que finalizó el 8 de mayo de 2013. Mientras se diseñaba el formato, también se creó el lenguaje de descripción de datos abiertos 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 Open Game Engine Exchange, versión 3.0 . Terathon Software LLC. ISBN 978-0-9858117-8-5.
  3. ^ "Formato de intercambio de modelos 3D abiertos y exportadores para software popular".

Enlaces externos