Открытый обмен игровыми движками
Расширение имени файла |
.ogex |
---|---|
Тип интернет-СМИ |
модель/vnd.opengex |
Разработано | Эрик поляк |
Первоначальный выпуск | 21 декабря 2013 г |
Последний выпуск | 3.0 2 февраля 2021 г |
Тип формата | 3D компьютерная графика |
Расширено с | ОпенДДЛ |
Открытый формат ? | Да |
Веб-сайт | opengex |
Open Game Engine Exchange ( OpenGEX ) — это формат, который помогает независимо от приложения передавать сложные данные сцены между приложениями 3D-графики, включая игровые движки и приложения 3D-моделирования. Для хранения данных он использует язык описания открытых данных — метод хранения произвольных данных, обеспечивающий удобочитаемость для человека. Формат файла OpenGEX зарегистрирован в Управлении по присвоению номеров в Интернете (IANA) как model/vnd.opengex
тип носителя. [ 1 ]
Формат OpenGEX определяется Спецификацией Open Game Engine Exchange . [ 2 ] который доступен на официальном сайте opengex.org .
Плагины экспорта, записывающие формат OpenGEX, доступны для Autodesk Maya и 3D Studio Max доступен неофициальный плагин , а для Blender .
Формат
[ редактировать ]На самом базовом уровне файл OpenGEX состоит из иерархии узлов, набора объектов, набора материалов и некоторой дополнительной информации о глобальных единицах измерения и ориентации осей. Различные структуры узлов, объектов и материалов содержат все детали, такие как геометрические данные и дорожки анимации, в рамках иерархии дополнительных типов структур, определенных OpenGEX. В файле OpenGEX могут присутствовать следующие типы данных:
- Иерархическая организация сцены (деревья узлов).
- Преобразования узлов и объектов (матрицы 4×4, перемещения, повороты и масштабы).
- Геометрические объекты, объекты освещения и объекты камеры.
- Сетки, состоящие из массивов атрибутов вершин и массивов индексов для нескольких уровней детализации.
- Меши со скинами (скелет, преобразования привязки-позы, данные взвешивания влияния костей).
- Несколько целей морфинга для сеток и анимированных весов морфов.
- Анимация ключевых кадров с помощью линейных кривых, кривых Безье и TCB.
- Цвета и текстуры материалов (диффузный, зеркальный, нормальный, эмиссионный, непрозрачный, прозрачность).
Пример
[ редактировать ]Очень простой пример полного файла OpenGEX, описывающего зеленый куб, показан в листинге ниже. Все начинается с группы Metric
структуры, определяющие единицы измерения и глобальное направление вверх. За ними следует один GeometryNode
структура, которая предоставляет имя и преобразование для куба. Геометрические данные куба хранятся в файле GeometryObject
структура, на которую ссылается узел геометрии. Структура объекта геометрии содержит одну сетку из треугольных примитивов , которая включает позиции каждой вершины, нормали и координаты текстуры . Наконец, Material
Структура в конце файла содержит зеленый цвет диффузного отражения.
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}}} }
История
[ редактировать ]Разработка формата OpenGEX финансировалась за счет краудсорсинговой кампании. [ 3 ] это закончилось 8 мая 2013 года. Во время разработки формата язык описания открытых данных также был создан как общий базовый язык, на котором был построен OpenGEX. Поддержка формата OpenGEX изначально была реализована в C4 Engine версии 3.5.
См. также
[ редактировать ]- glTF — формат файлов Khronos Group для 3D-сцен и моделей.
Ссылки
[ редактировать ]- ^ «Типы носителей IANA, модель» .
- ^ Лендьел, Эрик (2021). Спецификация Open Game Engine Exchange, версия 3.0 . ООО «Тератон Софтвер». ISBN 978-0-9858117-8-5 .
- ^ «Открытый формат обмена 3D-моделями и средства экспорта для популярного программного обеспечения» .