Generative Modelling Language

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

В компьютерной графике, Generative Modeling Language (GML) — простой язык программирования для краткого описания сложных трёхмерных объектов. Он относится к парадигме генеративного моделирования, где сложные наборы данных представлены списками операций, а не списками объектов, как например, в реляционной базе данных.

Обзор[править | править код]

За счёт использования генеративного трёхмерного моделирования, GML имеет преимущества перед другими языками программирования для 3D-моделирования.

Генеративное программирование[править | править код]

Обычные форматы 3D-файлов описывают виртуальный мир с точки зрения геометрических примитивов.[1] Это могут быть кубы и сферы в дереве CSG, патчи NURBS, набор неявных функций, треугольная сетка или просто облако точек. Термин «генерирующее трехмерное моделирование» означает другую парадигму описания формы. Основная идея заключается в замене трёхмерных объектов генерирующими объекты операциями: форма описывается последовательностью шагов обработки, а не треугольниками, которые являются конечным результатом применения этих операций. Конструирование форм сводится к конструированию правил. Этот подход может быть в общем случае применён к любому представлению формы, которое предоставляет базовый набор генерирующих функций, называемых в данном контексте «элементарными операциями фигуры». Его эффективность была продемонстрирована, например, в области генерации процедурной сетки, причём эти операции представляют собой полный и замкнутый набор функций для создания обратимых форм для сеток.

Генеративное моделирование повышает эффективность за счёт возможности создания операторов формы высокого уровня из низкоуровневых операторов. Любая последовательность этапов обработки может быть сгруппирована для создания нового комбинированного оператора. Он может использовать элементарные операторы, а также другие комбинированные операторы. Конкретные значения могут быть легко заменены параметрами, что позволяет отделить данные от операций: одна и та же последовательность обработки может применяться к различным наборам входных данных. Это позволяет создавать очень сложные объекты только из нескольких входных параметров высокого уровня, таких как, например, библиотека стилей.

Язык[править | править код]

GML представляет собой реализацию генеративного подхода к 3D-моделированию. Основанный на стеках интерпретируемый язык программирования, очень похожий на PostScript от Adobe, но без двумерных операторов макета. Вместо этого он предоставляет ряд операторов для создания 3D-моделей (полигонов, b-reps, поверхностей разбиения). Как язык программирования 3D-форм, это обобщение «плоских» форматов 3D-файлов, таких как OBJ, DXF или VRML, которые содержат только списки геометрических примитивов.[2]

Как и OpenGL, GML можно также рассматривать как средство просмотра со встроенным модулем для преодоления обычного разделения 3D-моделирования от интерактивной визуализации. GML позволяет получить сжатое представление параметризованных трёхмерных объектов, которые могут быть оценены «на лету» во время выполнения, визуализированы с адаптивным уровнем детализации, и позволяют интерактивно манипулировать всеми параметрами.

Пример программы на GML[править | править код]

Ход поэтапного выполнения программы
1:  (0,0,-2) (1,1,0) 2 quad
2:  /cyan setcurrentmaterial
    5 poly2doubleface
3:  (0,1,1) extrude
4:  (0,0,1) (1,0,1) normalize
    0 project_ringplane
5:  (2,0,0) (0,1,-1) 2 quad
6:  /yellow setcurrentmaterial
    5 poly2doubleface
7:  0 bridgerings

Приложения[править | править код]

Procedural Model of Cologne Cathedral

В процедурных моделях сложность модели линейно связана с размером файла. Собор на изображениях выше — модель Кёльнского собора — содержит 70 ажурных окон, а одно окно с самым высоким разрешением содержит около 7 миллионов треугольников. Они «разворачиваются» всего из 126 КБ кода GML (18 КБ в архиве ZIP).

Gothic Window Tracery

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

Interactive CAVE Designer

Интерактивный CAVE-дизайнер помогает подогнать объект в маленькую комнату. Из-за конкретных баров под потолком трудно разместить его, используя только 2D-планы комнаты. Степень свободы (синие стрелки) — это положение и ориентация проекционного экрана, угол открытия проекторов и положение/ориентация верхнего зеркала. DOF слегка ограничены, чтобы принимать только допустимые значения. DOF сохраняются согласованно, т. е. при перемещении ячеек, центры проектора также перемещаются (или отражаются на стенах).

Chair Structure

Генеративное моделирование предполагает различать «структуру» и «внешний вид» (например, стиль) трёхмерных моделей. Примечательно, что многие объекты имеют ту же структуру, что и стул, т.е. они «близки» к стулу на структурном уровне. Так, дифференцирование позволяет (в принципе) применять внешний вид одного объекта в этом классе к другому.

Didactic Voronoi Diagram AppletДидактический апплет, показывающий построение диаграмм Вороного: возможно ли восстановить центры ячеек Вороного от границ области? Интерактивный апплет обеспечивает хорошую интуицию идеи формального доказательства.

Примечания[править | править код]

  1. Generative Modeling Language (недоступная ссылка). Дата обращения: 16 февраля 2019. Архивировано 21 июля 2006 года.
  2. Generative Modeling Language.