Žilinská univerzita v Žiline Stavebná fakulta
Študentská vedecká odborná činnosť Akademický rok 2006-2007
PARAMETRICKÉ MODELOVÁNÍ V ARCHITEKTUŘE
Meno a priezvisko študenta : Ročník a odbor štúdia : Vedúci práce Žilina
: :
Martin Matúšů 5., Pozemní stavby a Architektura Ing. Jan Müller 24.05.2007
Úvod, co znamená parametrické modelování Mnohé obory lidské činnosti zaznamenaly novou vizi, která nejen znamenala rázný průlom, ale také změnila směr vývoje daného oboru na další roky. V oboru CAD (computer aided design) navrhování pomocí počítače a CADG (computer aided geometric design) počítačové geometrie, kde vznikají každý rok nové programy, se stovkami novátorských funkcí, hraje právě takovou úlohu parametrické modelování. Před dvaceti lety musel každý uživatel CAD programu při modelování svých 2D a 3D objektů počítat s tím, že bude-li nucen svůj model nebo výkres z nějakého důvodu změnit, bude třeba část nebo celou již provedenou práci smazat a začít znovu a to často několikrát než konečně dospěje k hotovému modelu nebo výkresu. Za otce myšlenky parametrického modelování je považován Samuel P. Geisberg, profesor matematiky který emigroval z Ruska do Spojených států. Jeho cílem bylo vyvinout modelovací systém který by umožňoval vytváření geometrie pomocí vlastností a parametrů, metodou která přiřadí rozměry a jiné proměnné ke geometrii takovým způsobem, že při změněně hodnoty parametru se automaticky změní i geometrie. Takto můžeme při návrhu vyzkoušet mnoho variant a změny našeho návrhu mohou být uskutečněny velmi rychle ve srovnání s ručním překreslováním, které vyžadují zastaralé CAD aplikace. Myšlenka parametrického modelování měla velký význam pro dnešní překotný vývoj softwaru pro modelování počítačové geometrie. Parametrické modelování, původně vyvinuté především pro letecký a automobilový průmysl, začíná pronikat i do architektury. V moderní architektuře, která nachází nové, často velmi složité geometrické tvary je nezbytné vytvořit celou řadu variant než lze dospět k řešení které je architektonicky kvalitní, vyhoví po stránce statiky a je ekonomické. Tvorbu těchto variant usnadňuje parametrické modelování.
Budova Swiss-Re od Normana Fostera a ukázka parametrického modelu. Zdroj: Foster and Partners
Změna klíčových parametrů profilové křivky a pohled na stavbu. Vytvořeno pomocí skriptu v softwaru Bentley. Zdroj: Foster and Partners Řada významných současných architektů (např. Norman Foster) přiznává že je jim parametrické modelování velkým pomocníkem, umožňuje měnit jednotlivé prvky modelu přitom automaticky regeneruje celý model podobným způsobem jako tabulkový procesor přepočítá celou tabulky při změně některé vstupní hodnoty. Jako takový se parametrický model stává živým modelem, který neustále reaguje na naše změny a tak nabízí flexibilitu návrhu která dříve nebyla možná. Parametrická by měla být také racionalizace modelu, architektonického konceptu, tedy převod koncepčního modelu, často se jedná o složitou zakřivenou plochu na vyrobitelné, staticky únosné a ekonomické prvky.
Obsah a cíl práce, proč vůbec programovat Podnětem pro mou práci je potřeba zjednodušit a urychlit tvorbu počítačových modelů architektury. Především při účasti na architektonických soutěžích, kdy vzniká potřeba v krátkém čase vymodelovat daný koncept, myšlenku architekta, umět tento model parametricky měnit, nejen pro účely vizualizace, ale také usnadnit tvorbu dokumentace, umět převézt model do podoby kterou vyžadují profese k posouzení návrhu. A následně upravit model podle výsledků například statického posouzení. V současnosti se nabízí široká paleta softwaru pro modelovaní i parametrické modelování, je ale těžké, snad nemožné vytvořit jeden program který by byl vhodný k modelování všech velmi různých druhů moderní architektury, uživatel je tak často nucen pracovat za pomocí funkcí, které jsou pro daný účel neefektivní a často je nucen smířit se z horším výsledkem práce než jaký by umožňoval program optimalizovaný pro danou úlohu. Snažím se vytvořit program který bude naopak umožňovat rychlé plně parametrické a přesné modelování dané úlohy. Vlastní modelování křivek a povrchů musím programovat také proto že ve stávajících aplikacích nemá uživatel přístup k rovnicím křivek a povrchů nemůžu je tedy dostatečně přesně a rychle racionalizovat, převádět na reálné vyrobitelné prvky.
První vytvořený program řeší parametrické modelování návrhu na trojský most v Praze zpracovaný pro ateliér Archicon, program je určen pouze pro danou úlohu a mé seznámení se s programováním. Druhý program jsem nazval FreeForm, je obecnější a na základě současné teorie počítačové geometrie, vytváří obecnější parametrické modely a převádí je na reálnou geometrii. Je založen především na dnes velmi oblíbené technice modelování pomocí křivek. Modelování pomocí křivek je jednoduchá, uživatelsky nenáročná a přitom velmi silná technika modelování. Objemy jsou definovány pomocí křivek, program je parametrický takže změnou těchto křivek dojde i k změně modelu, pokud je vybraná křivka použita v modelu. Velká pozornost je věnována převodu koncepčního modelu na reálnou geometrii, je vytvořen program pro dělení vytvořených křivek na lineární úseky, úseky mohou být stejně dlouhé, mohou být ve vzájemné posloupnosti a nebo může být několik zadaných délek řazeno za sebou v náhodném nebo určeném sledu. Dále je zpracován program na úpravu normálových vektorů křivky, za účelem větší ekonomičnosti návrhu, každá funkce bude vysvětlena a popsána. Program je zpracován v skriptovacím jazyku aplikace 3D Studio - Maxscript, při vykreslování vytvářených objektů je využito aplikace 3DS, to mi umožňuje soustředit se na programovaní modelování křivek a ploch, nemusím se zabývat algoritmy pro vykreslování. Maxscript je jazyk částečně objektově orientovaný, což výrazně zjednodušuje programování, především zprávu více objektů stejného druhu s různými parametry. Vše lze definováno jako objekt a jeho vlastnosti, takto lze jednoduše definovat parametrické změny objektů – jako změny vlastností objektů. Například objekt křivka má mimo jiných vlastnost matici kontrolních body a jejich změnou dojde ke změně té části křivky kterou daný kontrolní bod ovlivňuje.
Modelování křivek Při programování jsem si vyzkoušel řadu křivek které nabízí současná teorie, do programu jsem nakonec zahrnul kromě obyčejné spojité linie a základních tvarů, beziérovu křivku, bspline křivku a catmull-rom křivku. Všechny křivky jsou po částech spojité kubické křivky. Kteroukoliv z křivek nebo linii lze editovat pomocí společných nástrojů pro vkládání, Roleta programu FreeForm
mazání a posun kontrolních uzlu a bodů. Za uzel je považován kontrolní bod který leží na křivce, za bod kontrolní bod neležící na křivce. Editovat lze najednou pouze jednu křivku. Vybraná křivka se zobrazuje červeně, ostatní křivky modře. Editace se provádí v reálném čase, při posunu kontrolních bodů se křivka okamžitě překresluje. Překresluje se jen ta část křivky kterou daný kontrolní bod ovlivňuje, to umožňuje vytvářet a upravovat složité křivky v reálném čase.
Beziérova křivka V programu je použita kubická beziérova křivka, beziérovy křivky vyšších stupňů jsou sice hladší ale také špatně ovladatelné. Beziérova kubika je dána uzly a body. Uzly jsou označené čtvercem, leží na křivce a jsou to místa kde na sebe navazují jednotlivé kubické segmenty beziérovy křivky. Body jsou označeny křížkem, leží mimo křivku na tečně ke křivce v místě koncových bodů jednotlivých kubických úseků. Kubická beziérova křivka není ideální k určení volných tvarů, je hůře ovladatelná než ostatní uvedené křivky. Výhodou je že je jednoduchá, složená z méně segmentů než například b-spline, takže operace jako dělení na lineární úseky je rychlejší než u ostatních křivek.
Beziérova kubická křivka a její kontrolní body a kontrolní polygon
Posun kontrolního bodu.
Při posunu bodu se změní i pozice jemu odpovídajícího opačného bodu, tak je zaručena spojitost křivky. Beziérova křivka má spojitost 1.řádu. Při posunu uzlu se zároveň posunou i odpovídající body.
B-spline křivka Je dána jen body, které leží mimo křivku, jde tedy o aproximační křivku. Jen první a poslední bod, v případě otevřené křivky leží na křivce. Je to opět po částech spojitá kubická křivka, ale se spojitostí 2. řádu, proto umožňuje definovat volnější, organičtější tvary než beziérova křivka.
B-spline křivka a její kontrolní polygon a kontrolní body. Editace křivky se provádí opět posunem kontrolních bodů. Posunutí kontrolního bodu ovlivňuje dva segmenty na každou stranu od kontrolního bodu. První bod je označen jako uzel a v případě posunutí přes poslední bod křivky dojde k uzavření křivky. První kontrolní bod uzavřené křivky je označen křížkem v čtverečku. V případě jeho smazaní dojde k otevření křivky. V případě obecné uzavřené b-spline křivky žádný z kontrolních bodů neleží na křivce.
Uzavřená B-Spline křivka
Chceme-li kontrolovat bod kterým obecně aproximační b-spline křivka prochází, můžeme jej získat vložením tří bodů na stejnou souřadnici, tak se ale naruší spojitost křivky. Další možnost jak kontrolovat bod kterým křivka prochází je umístěním tří bodů na stejnou přímku, k tomuto účelu je v uživatelském rozhraní funkce, bod-uzel. Uzel je pak označen jako vždy čtverečkem a při posunu jednoho z bodů na přímce jsou posunuty i ostatní takže všechny tři body leží na přímce i po transformaci.
Otevření B-spline křivky .
Catmull-rom křivka Křivka byla původně vyvinuta pro počítačovou animaci – pro určení dráhy pohybu animovaného objektu, křivka má totiž tu vlastnost že body na křivce – body které získáme dosazením do rovnice křivky mají přibližně stejnou vzdálenost. Opět se jedná o po částech spojitou kubickou křivku, jednotlivé segmenty začínají a končí v kontrolních bodech, jedná se tedy o interpolační křivku, takže vytvářená křivka prochází všemi svými kontrolními body. Díky této vlastnosti je křivka mezi uživateli velmi oblíbená, i když nedokáže vyjádřit takové množství tvarů jako b-spline křivka. Křivka je navíc poměrně špatně ovladatelná, navazování jednotlivých segmentů je totiž zajištěno shodností tečny v uzlech, směr těchto tečen ale uživatel nemůže upravovat. Křivku známe například z programu AutoCAD
Catmull-Rom křivka.
Modelování povrchů pomocí křivek Loft (šablonování profilu po křivce) Je nejčastěji používaná technika modelování, v mém programu je povrch vytvářen tak že křivka profilu se posunuje v kolmé rovině k páteřní křivce a vytváří takto povrch.
Loft povrch a křivky které jej určují.
Povrch je parametrický takže změna páteřní křivky nebo profilu (žebra) vede k okamžitému překreslení povrchu.
Úpravy páteřní křivky. Při změně páteřní křivky se povrch zprůhlední aby uživatel mohl sledovat křivku, kterou edituje a která by jinak byla skrytá za povrchem. Křivky určující Loftový objekt mohou být otevřené i uzavřené, pokud jsou spojité vytváří spojitý povrch.
Spojitý, uzavřený Loft Povrch.
Umístění profilu na páteřní křivce. Každý profil může mít svůj střední bod, který určuje umístění profilu na páteřní křivce, pokud není střední bod zadán profil se umístí prvním bodem na páteřní křivku.
Vyjádření rotačního povrchu pomocí Loft objektu, má tu výhodu, že páteř – kružnice, určuje typ objektu, otevřením nebo úpravou páteřní křivky změníme typ objektu, bez nutnosti objekt mazat a znovu vytvářet.
2-Rail Sweep (šablonování profilu po 2 křivkách) Na rozdíl od předchozího se profil transformuje mezi dvěma danými křivkami, profil se zvětší, posune a pootočí tak aby první bod profilu ležel na první křivce, poslední bod na druhé. Je nutné aby obě páteřní křivky měli stejný počet segmentů, to vždy neznamená stejný počet kontrolních bodů, pokud jsou páteřní křivky různého typu.
Šablonování profilu s konstantní výškou profilu. Takto lze vymodelovat celou řadu hladkých, volných tvarů, mohou a nemusí být spojité, otevřené, uzavřené…
Šablonování s různou výškou profilu.
Racionalizace křivek Kontrola vzájemných vzdáleností bodů na křivce Každá z kubických křivek v mém programu je po částech dána rovnicí: Q (t ) = [x(t ), y (t ), z (t )] , kde
x(t ) = a x ⋅ t 3 + bx ⋅ t 2 + c x ⋅ t + d x y (t ) = a y ⋅ t 3 + by ⋅ t 2 + c y ⋅ t + d y
z (t ) = a z ⋅ t 3 + bz ⋅ t 2 + c z ⋅ t + d z beziérova, catmull-rom a b-spline křivka se vzájemně liší pouze tím jakým způsobem jsou z polohy kontrolních bodů stanoveny konstanty a…d pro každou souřadnici. Vykreslit křivku můžeme mimo metod atypických pro každou křivku (např. algoritmus deCasteljau pro bezierovu křivku), obecně dosazováním za parametr t, pro každý segment. Pokud se konstanty stanoví před vykreslováním, je vykreslení velmi rychlé.
Body na křivce stanovené prostým dosazováním za parametr křivky t mají různé vzájemné vzdálenosti Logickou možností jak určit stejně vzdálené body na křivce je rozdělit křivku po délce na stejně dlouhé úseky a na kraje těchto úseků vložit body.
Body na křivce stanovené rozdělením křivky na stejně dlouhé úseky také nejsou stejně vzdálené Program umí nalézt na jakékoliv kubické křivce stejně vzdálené body. Využívá numerické matematiky a stanoví vzdálenosti až na 7 platných míst. Přesnost lze nastavit pomocí množství iterací, které ovlivňují dobu výpočtu.
Stejně vzdálené body na křivce stanovené pomocí iterační metody.
Jsou zadané 3 délky, které se ve vypočteném měřítku na křivce opakují v náhodném pořadí. Program na nalezení stejně vzdálených bodů nemusí hledat jen stejně dlouhé úseky, délky úseků také mohou být ve vzájemné posloupnosti a nebo může být několik zadaných délek řazeno za sebou v náhodném nebo určeném sledu.
Optimalizace normálových vektorů křivek pro loft povrchy
Nevhodné umístění profilu na loft objektu. Někdy nemusí být vhodné umístit profily loft objektu kolmo k páteřní křivce, profily se mohou vzájemně protínat a také vzdálenosti sobě si odpovídajících bodů jednotlivých profilů jsou různé.
Ukázka směrů které najde algoritmus pro kružnici a obecnou křivku.. Program umí nalézt pro křivky takové směry pro které platí, že odpovídající si body v těchto směrem mají stejné vzdálenosti. Pro kružnici program jako optimální směry nalezne normálové vektory. Pro některé složité křivky popsané směry nemusí existovat, takové křivky lze optimalizovat po částech.
V tomto případě jsou žebra na páteřní křivce umístěny v optimalizovaných směrech tedy takových směrech aby vzdálenosti sobě si odpovídajících bodů jednotlivých žeber byli stejné. Délky odpovídajících si prvků jsou pak stejné.
Ukázka racionalizovaného modelu vloženého do software Nexis. Model je korektní, koncové body navazujících prvků jsou na stejné souřadnici.
Závěr, důvody racionalizace modelu a směr dalšího vývoje Kontrola vzájemných vzdálenosti budů na volný křivkách není nutná jen z důvodů ekonomických ale i estetických. Vzdálenosti budů určených klasicky vypočtením délky křivky a dělením křivky na stejně dlouhé úseky jsou po převedení na lineární useky různě dlouhé, to není ekonomické ani estetické. Normálové vektory, které se většinou používají k určení směru profilu na křivce nejsou vhodné proto že vzájemné vzdálenosti odpovídajících si bodů jednotlivých profilů jsou různé, a to opět není ekonomické ani estetické.
V mém programu je například možné vymodelovat plášť nové Allianz Arény od architektů Herzoga a de Meurona
Další vývoj - Přidání více základních tvarů vyjádřených pomocí křivek. - Snažit se o provázání a spolupráci s některým ze statických programů, umět na geometrii přiřadit zatížení a být tak schopen parametrickým modelářem vytvořené varianty posoudit a vybrat tu nejvhodnější. - Pro často opakované funkce např. pro transformace do používaného skriptovacího jazyku přidat nové příkazy pomocí jazyka C++ takové funkce jsou mnohem rychlejší než ty vytvořené pomocí skriptu. -Přidání dalších funkcí obvyklých v programech pro modelování pomocí křivek.