Kapitola 5: Lekce 1 - Další příklady modelování


V této lekci využijeme model vytvořený v předchozí kapitole.

Další příklad modelování

V této kapitole si ukážeme další použití gramatiky CGA. Vytvoříme si architektonicky podobnou, avšak ne totožnou, budovu jako v předchozím případě. Zaměříme se tedy na budovu s jiným rozložením. Jedná se o fasádu, kde je přízemí tvořeno okny a jedním vchodem uprostřed budovy. Tento typ umístění dveří je častý u větších a starších bytových domů. Budeme vycházet fotky jedné z budov z pražských Dejvic.

Budova 2

Pokud modelujeme budovu s jedním specifickým prvkem – vchodem - v našem případě v přízemí, kde se jinak nacházejí jiné prvky - okna, musíme fasádu patřičně rozdělit. Pakliže budeme postupovat podle zásad a kroků z předchozího modelování, lze toho dosáhnout několika pravidly. Nejdůležitější je správně vytvořit rozvržení a rozdělení fasády na jednotlivé sektory.

Fasádu jsme rozdělili na boční strany a přední stranu, kde vchod bude pouze na přední, tzn. té, která sousedí se silnicí. V pravidlu Prednifasada si definujeme Prizemi, které bude rozděleno na dlaždice oken v přízemí a dlaždici dveří, která je uprostřed. Na krajích přízemí si ještě pomocným pravidlem Zed() vytvoříme mezeru tvořenou zdí. V pravidlu DlazdiceDveri určíme oblast dveří, tedy zde pro ně vymezíme prostor, opět díky komponentě split(). Nakonec definováním pravidla Dvere, konkrétně zvolením barvy a transformace vznikne podoba samotných dveří.

Několik použitých technik jsou sepsány v předchozích lekcích. Nejdůležitější část kódu pro tento model je uvedena zde:


Prednifasada -->
split(y){ vyska_prizemi : Prizemi | 0.4 : Rimsa | vyska_patra : Patro | vyska_patra : Patro
| vyska_patra : Patro | 0.4 : Rimsa2 | {~vyska_patra : Patro}*}

Prizemi -->
split(x){ 1 : Zed | { sirka_dlazdice2 : DlazdicePrizemi }*
| sirka_dlazdice : DlazdiceDveri | { sirka_dlazdice2 : DlazdicePrizemi }* | 1 : Zed }

DlazdicePrizemi -->
split(x){ 1 : Zed | 2 : split(y){ 0.7: Zed | 2.5: OknoPrizemi | ~1: Zed } | 1 : Zed }

DlazdiceDveri -->
split(x){ ~1 : PlnaZed | 2 : split(y){ 2.5: Dvere | ~2: PlnaZed } | ~1 : PlnaZed }

Dvere -->
color(barvaVylohy)
s('1,'1,0.1) t(0,0,-0.5) i("builtin:cube")


Výsledný model vidíme na následujícím obrázku. Obecně se takto dá postupovat při modelování atypických fasád, kde se nějaký prvek vyskytuje pouze jednou, nebo zřídka. Takovým příkladem mohou být budovy se středovým balkonem nebo ozdobným štítem.

Základní model budovy 2

Pokud vygenerujeme u budovy i střechu, která není z výchozí fotky příliš identifikovatelná a jejíž definici jsme popisovali dříve, dostáváme výsledek jako na následujícím.

Základní model budovy 2 se střechou

Následuje ukázka vrml modelu budovy, při použití sepsaných pravidel CGA gramatiky:



V následující lekci se popisují způsoby generování budov (modelování odvozením).