Gramatika CGA

Tato sekce popisuje souhrnně základy a syntaxi gramatiky CGA a slouží jako přehled příkazů, které jsou v příručce použity. K rychlejšímu vyhledání konkrétního klíčového slova stiskněte CTRL+F.



Syntaxe

Pro syntaxi jazyka CGA platí několik základních pravidel. Především je potřeba vědět, že:

  • Jednořádkové komentáře ke kódu se píší za dvojité lomítko „//“
  • Víceřádková komentovaná oblast začíná znaky „/*“ a končí „*/“
  • Jednotky používané jako parametry v operacích se mohou psát přímou hodnotou (1, 2, 3) a nabývají právě této stanovené hodnoty
  • Čísla s apostrofem ('1, '2, '3) udávají relativní hodnotu, která je použita pouze pro danou funkci (hodnota odvozena z výchozího stavu objektu)
Více se lze o gramatice dočíst v kapitole 1, nebo na názorných příkladech v dalších kapitolách příručky.


Operace

Seznam používaných operací:


extrude()

Slouží k nárůstu (prodloužení) vybraného tvaru o zvolenou výšku (parametr). Parametry této operace mohou být proměnná - extrude(vyska_1), nebo přímo číslo extrude(4)) nebo world.x, world.y a world.z, které udávají směr podle světových os.


comp()

Pomocí této operace se fasáda modelované budovy může rozdělit na několik segmentů. Pro každý tento segment pak lze uplatňovat rozdílná pravidla. Tyto segmenty mohou být (ale nemusejí) definovány jako přední část modelu (front – obvykle přední část budovy s vchodem), zadní (back), boční (side – lze upřesnit na left a right) a střecha (top).

Př.: comp(f){front : PredniStena | side : BocniStena | top: Strecha}, kde parametr f značí rozdělení ploch (faces).


split()

Dokáže rozdělit fasádu svisle či vodorovně, záleží na použitém parametru, který určuje směr rozdělení (split(x), split(y)).


s()

Používá se k nastavení velikosti rámce, se kterým se bude pracovat. Jejímy parametry jsou velikosti na osách x,y,z – s(x,y,z).


i()

Operace insert vkládá do vybrané oblasti zvolený prvek. Tímto způsobem lze vložit na vybrané místo buď v CityEngine již zabudované základní geometrické prvky (i("builtin:cube") – pro vložení krychle), nebo asset prvky.


t()

Slouží k posunutí objektu o zadaný směr a vzdálenost (například t(0,0,1) posune přiřazený objekt o 1 po ose z).


color()

Tato funkce nastaví barvu objektu. Parametrem je barva v hexadecimální podobě.


center()

Pomocí této operace lze objekty vycentrovat vůči jednotlivým osám.


roofGable(), roofHip(), roofPyramid(), roofShed()

Jedná se o operace, které vytvoří modelu budovy střechu. V CityEngine se dají použít čtyři základní typy střechy.
Střecha typu Gable může mít až pět parametrů, povinný je však pouze první. Jsou jimi úhel, který plochy střechy vůči sobě svírají, přesah přes střechy na ose x a y, dále je možno zadat, zda se mají vytvořit hrany typu „Gable“ a index, sloužící k orientaci střechy. Střecha „Pyramid“ má pouze parametr udávající svírající úhel ploch, u typu „Hip“ jsou to úhel, přesah a nastavení hran, u střechy „Shed“ je to úhel a orientace.
Obrázek: Nahoře: Střecha typu Shed a typu Hip. Dole: Střecha typu Pyramid a typu Gable


Použitelné střechy v gramatice CGA


projectUV()

Funkce, nastavující vrstvu textury a mapuje jí na zvolený objekt.


texture()

Tato funkce do RuleFile vloží texturu, určenou parametrem, resp. adresářovou cestou k textuře.