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.

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.