Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Формат Open Game Engine Exchange ( OpenGEX ) - это текстовый формат файлов, предназначенный для облегчения передачи сложных данных 3D-сцены между приложениями, такими как инструменты моделирования и игровые движки. Формат OpenGEX построен на концепциях структуры данных, определенных языком описания открытых данных (OpenDDL), универсальным языком для хранения произвольных данных в удобочитаемом формате. Формат файла OpenGEX зарегистрирован в Internet Assigned Numbers Authority (IANA) в качестве model/vnd.opengexтипа носителя. [1]

Формат OpenGEX определяется спецификация Open Game Engine обмена , [2] , которая доступна на официальном сайте opengex.org .

Плагины экспорта, пишущие в формате OpenGEX, доступны для Autodesk Maya и 3D Studio Max .

Форматировать [ редактировать ]

На самом базовом уровне файл OpenGEX состоит из иерархии узлов, набора объектов, набора материалов и некоторой дополнительной информации о глобальных единицах измерения и ориентации оси. Различные структуры узлов, объектов и материалов содержат все детали, такие как геометрические данные и анимационные дорожки, в иерархии дополнительных типов структур, определенных OpenGEX. В файле OpenGEX могут отображаться следующие типы данных:

  • Иерархическая организация сцены (деревья узлов).
  • Преобразование узлов и объектов (матрицы 4 × 4, смещения, вращения и масштабы).
  • Объекты геометрии, световые объекты и объекты камеры.
  • Сетки, состоящие из массивов атрибутов вершин и массивов индексов для нескольких уровней детализации.
  • Сетки со скелетом (скелет, преобразования позы связывания, данные взвешивания влияния костей).
  • Множественные цели морфинга для сеток и анимированных весов морфинга.
  • Анимация по ключевым кадрам с линейными кривыми, кривыми Безье и TCB.
  • Цвета и текстуры материалов (диффузный, зеркальный, нормальный, эмиссионный, непрозрачность, прозрачность).

Пример [ править ]

Очень простой пример полного файла OpenGEX, описывающего зеленый куб, показан в листинге ниже. Он начинается с группы Metricструктур, которые определяют единицы измерения и общее направление вверх. За ними следует единственная GeometryNodeструктура, которая предоставляет имя и преобразование для куба. Геометрические данные для куба хранятся в GeometryObjectструктуре, на которую ссылается геометрический узел. Структура геометрического объекта содержит единую сетку из треугольных примитивов, которая включает положения вершин, нормали и координаты текстуры . Наконец, Materialструктура в конце файла содержит зеленый цвет диффузного отражения.

Метрика (key = "distance") {float {0,01}}Метрика (key = "up") {строка {"z"}}GeometryNode $ node1{ Имя {строка {"Куб"}} ObjectRef {ref {$ geometry1}} MaterialRef {ref {$ material1}} Преобразовать { поплавок [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 // Куб{ Сетка (примитив = "треугольники") { VertexArray (attrib = "позиция") { 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 = "нормальный") { 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} } } }}Материал $ material1{ Имя {строка {"Зеленый"}} Цвет (attrib = "diffuse") {float [3] {{0, 1, 0}}}}

История [ править ]

Разработка формата OpenGEX финансировалась краудсорсинговой кампанией [3] , завершившейся 8 мая 2013 г. По мере разработки формата язык описания открытых данных также создавался как общий базовый язык, на котором был построен OpenGEX. . Поддержка формата OpenGEX изначально была реализована в C4 Engine версии 3.5.

Ссылки [ править ]

Внешние ссылки [ править ]