Final project- Parametrický model terénu



Výsledek po úpravách v blenderu

Author:

Categories: Tutorials


CAD- Scripting

Vytvořit skript, který zjednoduší vytváření modelů terénu metodou vzájemně protínajících se ploch.

Popis formy výsledku:

Jedná se o jednoduchý tvar skládající se pouze z ploch. V našem případě slouží ke zjednodušení složité geometrie/morfologie terénu při výrobě modelu. Zde má tato forma výhodu, že lze jednoduše vyrobit z deskového materiálu.  A na rozdíl od jednoduché trojúhelníkové, či čtyřúhelníkové topologie (např. Delaunay) má výrazně nižší počet dílů ke slepení. Dobře reprezentuje zvláště přírodní terény, které obsahují plochy- svahy hor, vodní plochy, louky.

Forma se dnes používá například v konstrukci horolezeckých stěn, kde je rovněž žádoucí vytvořit, co nejpřírodnější/nejčlenitější tvar při použití minimálního počtu ploch.

faf51039c5e83c0cdd6fb81b6412d532

Příklad použití:

obrázekIMG_20191016_172722_637IMG_20191016_204943

 

Tento příklad byl vytvořen manuálně- tedy postupným přikládáním ploch k existující geometrii terénu (naklikané podle vrstevnic) tak aby co nejvíce reprezentovaly přírodní svahy. Poté byly vybrány jednotlivé plochy k vzájemnému protnutí a byla z nich použita pouze část odpovídající terénu. Výsledek je relativně přesný, co se týče podobnosti s původním povrchem a lze jednoduše vyrobit. Postup pro vytvoření geometrie je ale pracný.

Podobný postup se pokusím použít v Grasshopperu. Pužijeme vzorkový příklad kopečku, která se pokusíme zjednodušit do komolé piramidy. Výsledek očekáváme, že bude vypadat přibližně takto:

Výsledek po úpravách v blenderu

Přepis skriptu do češtiny:

1. Z poskytnutých bodů (Vstup A- Vrstevnice) vytvoř plochu a zaobli jí.

Výstřižek11

2. K dalším bodů (Vstup B- Počátky rovin k protnutí) najdi na ploše body které jsou přímo nad původními a vytvoř zde tečné roviny.

 

Výstřižek22

 

3. Protni vždy dvě roviny, jejichž počátky spolu sousedí. (K určení dvojic sousedních bodů používáme Delaunay connectivity)

-Vznikla hromada přímek

Výstřižek33

 

4. V každé z původních rovin jednotlivě, protni každou přímku s každou jinou. (Humpolácký způsob zadání do Grasshopperu- určitě existuje i způsob, pro který není potřeba vytvářet nové komponenty pokaždé, když Delaunay vytvoří bod s více spojeními.) (Komponenty jsou oranžové, protože po nich chceme aby protínaly totožné přímky. Pro tyto průsečíky vyhodí hodnotu NULL, odstraníme je pomocí Clean Tree.)

Výstřižek4 4

5. Z každé množiny bodů, které leží v jedné z původních tečných rovin vytvoř placatou Mesh. (pokud jsme na začátku naklikali do Vstupu B 11 bodů, dostaneme jedenáct Meshí) Potom všechny Meshe vzájemně sjednoť do jedné.

-Vznikne motanice Meshí, které jsou však rozděleny na střípky (faces) a obsahují požadovaný povrch. Máme ale střípků moc. Potřebujeme odstranit některé střípky, aby zbyl souvislý povrch.

 

Výstřižek55

 

6. Odstraň ty střípky, které mají volnou hranu. Tedy nenavazují na ně ze všech stran jiné střípky.

(najdeme všechny body které definují nějakou volnou (naked). A odstraníme ty z nich, které nejsou zároveň součástí některé hrany kde se potkávjí 3 střípky a víc (non-manifold).)

-Vznikla téměř požadovaná komolá piramidka. Některé střípky z ní pořád čouhají- Jak je to možné? -Byly to střípky s vnitřními hranami (interior), které až teď začaly čouhat na povrch. Tak krok opakujeme abychom odstranili i ty nově vyčuhující.

-Dalším problémem, je že nedokážeme odstranit trojúhelníkové střípky, které jsou ze dvou stran ohraničeny non-manifold edgemi. Viz zakroužkovaná situace.

Výstřižek6 Inked6_LI

 

6 znovu. Krok opakujeme, s tím, že používáme původně Non-manifoldní edge. Odstranili jsme sice nově vyčuhující, ale ukázalo se, že ne všechny střípky které jsme považovali za úplně ohraničené Non-manifoldními edgemi takové skutečně byly. Začaly vznikat díry.

VýstřižekzZ6Z

 

4b. Alternativně ve čtvrtém kroku použijeme přímo komponent, který ořezává roviny okolními rovinami, které určíme zase podle Delaunay connectivity.

Dostáváme něco, z čeho nic nečouhá. Ale tento komponent má tu nevýhodu, že vždy odstraní všechny střípky a nechá nejmenší možný ořez. Výsledek je zase děravý a některé body chybí.

Výstřižek4B4B

 

Závěr:

Jednou nám něco chybí a jindy toho máme moc.

 

Pro realné použití se hodí spíše situace, kdy máme příliš geometrie. Z Grasshopperu můžeme exportovat pomocí Solution/bake selected, exportovat například ve formátu .ply a například v Blenderu manuálně odstranit Přebytečné faces. Je to výrazně rychlejší, než vytvářet v průniky rovin v Blenderu manuálně.

manually deleted

Toto je výsledek z Blenderu, kde proběhlo pouze odstraňování přebytečných střípků.

Fajn by bylo, kdybychom ani tohle nemuseli dělat. Nějaký nápad?

Lomenicovy teren- pracovni verze

Lomenicovy-teren-pracovni-verze 17.1.