Język modelowania generatywnego
Generative Modeling Language (GML) w grafice komputerowej i generatywnym programowaniu komputerowym to bardzo prosty język programowania do zwięzłego opisu złożonych kształtów 3D. Jest zgodny z paradygmatem „modelowania generatywnego”, w którym złożone zbiory danych są reprezentowane przez „listy operacji”, a nie listy obiektów, co ma miejsce na przykład w przypadku relacyjnej bazy danych .
Przegląd
Zwykłe formaty plików 3D opisują świat wirtualny za pomocą prymitywów geometrycznych . Mogą to być sześciany i sfery w CSG , łaty NURBS , zestaw funkcji niejawnych , siatka trójkątów lub po prostu chmura punktów . Termin „generatywne modelowanie 3D” opisuje inny paradygmat opisu kształtu. Główną ideą jest zastąpienie obiektów 3D operacjami generującymi obiekty: kształt jest opisywany sekwencją kroków przetwarzania, a nie trójkątami, które są końcowym wynikiem zastosowania tych operacji. Projektowanie kształtów staje się projektowaniem reguł. Podejście to można ogólnie zastosować do dowolnej reprezentacji kształtu, która zapewnia podstawowy zestaw funkcji generujących, zwanych w tym kontekście „elementarnymi operatorami kształtu”. Jego skuteczność została wykazana m.in. w dziedzinie proceduralnej generacja siatek , z operatorami Eulera jako kompletnym i zamkniętym zbiorem odwracalnych funkcji generujących kształty dla siatek, działających na poziomie połowy krawędzi.
Modelowanie generatywne zyskuje na wydajności dzięki możliwości tworzenia operatorów kształtu wysokiego poziomu z operatorów kształtu niskiego poziomu. Dowolną sekwencję etapów przetwarzania można zgrupować w celu utworzenia nowego operatora złożonego . Może używać operatorów elementarnych, jak również innych operatorów złożonych. Konkretne wartości można łatwo zastąpić parametrami, co umożliwia oddzielenie danych od operacji: Ta sama sekwencja przetwarzania może być zastosowana do różnych zestawów danych wejściowych. Te same dane mogą być użyte do stworzenia różnych kształtów przez zastosowanie różnych połączonych operatorów np. z biblioteki operatorów modelowania zależnych od domeny. Umożliwia to tworzenie bardzo złożonych obiektów z zaledwie kilku parametrów wejściowych wysokiego poziomu, takich jak na przykład biblioteka stylów.
Język modelowania generatywnego
GML jest konkretną implementacją podejścia generatywnego. Jest to interpretowany język programowania oparty na stosie, bardzo podobny do PostScript firmy Adobe , ale bez żadnego operatora układu 2D. Zamiast tego zapewnia szereg operatorów do tworzenia modeli 3D ( wielokąty , powtórzenia b , powierzchnie podziału ). Jako „język programowania kształtów” jest prawdziwym uogólnieniem „płaskich” formatów plików 3D, takich jak OBJ , DXF lub VRML , które zawierają tylko listy prymitywów geometrycznych.
Wraz ze swoim mechanizmem wykonawczym opartym na OpenGL , GML może być również postrzegany jako przeglądarka ze zintegrowanym narzędziem do modelowania, aby przezwyciężyć zwykłą separację modelowania 3D od interaktywnej wizualizacji . Zamiast tego oba są przeplatane. GML pozwala na zwięzłą reprezentację sparametryzowanych obiektów 3D, które można oceniać w locie w czasie wykonywania, renderować z adaptacyjnym poziomem szczegółowości i pozwala na interaktywną manipulację wszystkimi parametrami.
Przykład GML
Aplikacje
W przypadku modeli proceduralnych złożoność modelu nie jest już bezpośrednio (tj. liniowo) związana z rozmiarem pliku. Katedra proceduralna , podstawowy model katedry w Kolonii , zawiera 70 maswerkowych okien, a pojedyncze okno w najwyższej rozdzielczości zawiera około 7 milionów trójkątów. Są one „rozpakowane” z zaledwie 126 KB kodu GML (18 KB skompresowane).
Architektura gotycka jest doskonałym przykładem skuteczności projektowania kształtów proceduralnych: w stylu gotyckim wszystkie konstrukcje geometryczne są wykonywane wyłącznie za pomocą kompasu i linijki . Wariacje uzyskano przez proceduralne łączenie w ciągle zmieniający się sposób zestawu prostych podstawowych sparametryzowanych operacji geometrycznych. Dlatego praktycznie niemożliwe jest znalezienie dwóch maswerkowych w różnych budynkach, które mają identyczną konstrukcję geometryczną.
Interaktywny projektant CAVE pomaga dopasować CAVE do małego pokoju. Ze względu na betonowe pręty pod stropem trudno jest umieścić go tylko na rzutach 2D pomieszczenia. Stopnie swobody (niebieskie strzałki) to pozycja i orientacja kabiny ekranu projekcyjnego, kąt otwarcia projektorów oraz pozycja/orientacja górnego lustra. DOF są nieznacznie ograniczone do przyjmowania tylko prawidłowych wartości. DOFy są utrzymywane w spójności, tj. podczas przesuwania boksów, środki projektora również się poruszają (lub odbijają się od ścian).
Biorąc pod uwagę zestaw około 30 modeli CAD felg samochodowych, zadaniem było znalezienie wspólnej parametryzacji, która jest w stanie wygenerować każdy z pojedynczych egzemplarzy ( generatywna rekonstrukcja powierzchni ). W rezultacie nowe, podobne felgi można zsyntetyzować w przestrzeni projektowej obejmującej dane 30 felg, które zostały ręcznie podzielone na 3 główne kategorie. Niektórymi parametrami wysokiego poziomu można bezpośrednio manipulować za pomocą suwaków i przycisków (strzałek i kulek).
Modelowanie generatywne sugeruje rozróżnienie między „strukturą” a „wyglądem” (np. stylem) modeli 3D. Co zaskakujące, wiele przedmiotów ma taką samą strukturę jak krzesło , tj. są one „blisko” krzesła na poziomie strukturalnym . Zróżnicowanie pozwala więc (w zasadzie) na zastosowanie wyglądu jednego obiektu w tej klasie do innego.
Aplet dydaktyczny pokazujący budowę diagramów Woronoja : Czy można zrekonstruować centra komórek Woronoja z granic regionów? Interaktywny aplet przekazuje dobre wyczucie idei stojącej za dowodem formalnym.
Zobacz też
Dalsza lektura
- Michaela Leytona. Generatywna teoria kształtu (dostępna na jego stronie domowej )
- Johna Snydera. Modelowanie generatywne dla grafiki komputerowej i CAD: symboliczne projektowanie kształtów z wykorzystaniem analizy interwałowej
Linki zewnętrzne
- Generative-modeling.org Strona główna GML.
- Rozprawa Svena Havemanna na temat UB TU Braunschweig opisuje, dlaczego i jak powstał GML
- Strony Caltech na GENMOD