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

Приложения

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

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

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

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

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

Примечания

  1. Generative Modeling Language (недоступная ссылка). Дата обращения: 16 февраля 2019. Архивировано 21 июля 2006 года.
  2. Generative Modeling Language.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.