site_logo
border_img

Stromy v Blenderu snadno a rychle

Vložil tol Ne, 2005-04-17 14:36.
Export do povraye

V přírodě je spousta objektů, které jsou si sobě navzájem podobné. Například malý kamínek je podobný kusu skály nebo větev stromu je podobná malé větvičce. Obor fraktální geometrie se zabývá simulací objektů které jsou tvarově podobné reálným objektům a samotné fraktály mohou být popisované různými způsoby. Tzv. L-systémy (Lindenmayerovy systémy) jsou definované pomocí přepisovacích gramatik. S použitím L-systémů lze generovat fraktály, které se podobají rostlinám nebo stromům.

Cílem tohoto článku je popsat script určený pro modelovací program Blender. Jmenuje se L-System Script a je volně ke stažení na adrese http://jmsoler.free.fr/util/blenderfile/images/lsystem/lsystem.htm

Stránka je sice ve francouštině, ale stačí, pokud si z ní stáhnete skript, který je kompatibilní s Blenderem verzí 2.28. Toto je důležité, neboť po vlastní zkušenosti mi v nejnovějším Blenderu (2.33a) jiné verze skriptů nefungovaly. Samozřejmostí pro to aby skript běžel je instalace jazyka Python (měl jsem verzi 2.3.3). Máte-li Blender i Python nainstalované, otevřete skript v Blenderu a spusťte (v textovém okně skriptu stiskněte kombinaci kláses ALT P). Měli byste dosta okno podné tomu, které je uvedeno na následujícím obrázku.

UI skriptu
Obr. 1.Takto nějak vypadá Skript Lsystem po spuštění

Hlavní okno je tedy rozděleno do dvou částí - vpravo je běžící python script, kterým se budeme v tomto článku zabývat podrobně a v levé části je okno 3D pohledu scény, ve kterém můžete vidět výsledky po nastavení příslušných parametrů. Aby se změny projevily na modelu stromu, stačí kliknout na tlačítko GENERATE ve spodní části okna s běžícím skriptem. Vedle něj si můžete všimnout tlačítka iterations a číslo, představující položku počtu opakování jednotlivých částí stromu. Na následujícím obrázku představuje levá část výsledek při iteraci 2 a pravá při nastavení hodnoty iterace na 3 (oba obrázky jsou vygenerovány pro počáteční nastavení při spuštění skriptu).

Výsledky při různých iteracích
Obr. 2.Výsledky při různých iteracích

Protože parametrů pro nastavení výsledného vzhledu stromu je docela dost, v horní části okna jsou buttony LOAD a SAVE, sloužící pro načtení, případně uložení všech proměnných hodnot na disk do souboru podle zadání v textovém okně, které se nachází mezi nimi. Všechny parametry, které můžete ovlivňovat jsou seskupeny pod názvy odpovídájící příslušnému bloku: Branches (větve), Stem (kmen), Force (rozšířené vlastnosti), Prune (prořezání), Leaves (listy) a General (globální nastavení). Pojďme se na jednotlivé skupiny příkazů podívat podrobněji.

Branches

Tato tlačítka nastavují jednotlivé vlastnosti větví. V případě že není aktivován Stem, platí toto nastavení i pro hlavní kmen. V rozbalovací nabídce vedle názvu si můžete všimnout v podstatě třech názvů - Straight, Arm a Split. První položka představuje přímou větev bez odnoží, rozdíl mezi zbylýma dvěma volbama můžete vidět na obrázku níže - Arm3 vlevo a Split3 vpravo. Číslice v názvu odpovídá počtu větvím, které "rostou" z větve hlavní (nosné). V rozbaleném seznamu nabídek uspořádání větví si ještě můžete všimnout položek jako 2D nebo 3D. V první případě mají větvičky snahu být vzájemně co nejvíce "v rovině".

Branches
Obr. 3.Výsledky nastavení branches

Číselná položka ResolutionV udává počet částí, ze kterých se každá větev skládá. V případě jedničky je to obyčejný válec, pokud tam nastavíte třeba hodnotu 4, bude to znamenat jakoby 4 válce na sobě, z nichž každý může být odlišně orientovaný. Dá se říci, že s přibývajícím číslem budou mít větve přirozenější vzhled, pochopitelně za cenu nárůstu počtu polygonů ve scéně. Význam ostatních položek v nabídce Branches je následující:

Repeat - počet opakujících se větví nad sebou.

Spin - úhel ve stupních udávající vzájemné natočení podstav válcovitých částí. Obvod větví pak přestane být válcový v závislosti na nasteném úhlu. Nastavitelný rozsah je od -360 do 360 stupňů.

Curve- úhel ve stupních udávající vzájemné natočení sousedních válcovitých částí.Větve tak nebudou přímé, ale budou se "ohýbat" pod určitým úhlem. Rozsah je v rozmezí od -360 do 360 stupňů.

subSlope- úhel ve stupních udávající odklon větviček od větve nosné. Standardně je nastaveno 90 stupňů, v tomto případě tedy bude mít svislá větev vodorovné výhonky.

subOrient- dá se nastavit hodnota v rozsahu 0 - 1 v závislosti na tom do jaké míry má tvar větvičky kopírovat tvar větve nosné.

subLen- poměr délky větvičky vzhledem k délce nosné větve. Dá se nastavit v rozmezí 0,5 - 1.

subThickns- poměr tloušťky větvičky vzhledem k tloušťce nosné větve. Dá se nastavit v rozmezí 0,5 - 1.

Stem

Jak jsem již psal, tato položka umožňuje nastavit vlastnosti kmenu stromu. Pro případ, že hlavní kmen stromu má stejné vlastnosti jako větve, které z něj vyrůstají, je možné tuto položku vypnout, což je standardně nastaveno (text none v rozbalovací nabídce). Vzhledem k tomu, že jsou parametry pro kmen stejné jako u větví, nebudu je tu znovu popisovat.

Force

UseThickness udává možnost ovlivňování velikostí a tvaru větviček vzhledem k nosné větvi. Podpoložky Bearing, Elevation a Magnitude určují směr a velikost větviček. Do značné míry tyto vlastnosti závisí na položce ResolutionV. Přiznám se, že jsem tyto položky ještě nevyužil.

Prune

Toto slovo doslova značí prořezání. Nabídka PruneFirst obsahuje celočíselnou hodnotu (na začátku je 0). Tato hodnota určuje kolik "pater" spodních větví se nemá generovat. Ovlivňuje se tak vzdálenost nejspodnějších větví od úrovně terénu. Druhá položka Prob se dá nastavit v rozmezí 0 - 0,5, kde 0 značí že se nebudou žádné větve "prořezávat", při hodnotě 0,5 bude ořezána většina větví. Také v tomto případě se uřezávní provádí odspoda.

Leaves

Všechny volby spojené s touto nabídkou ovlivňují tvorbu listů nebo jehličí. První (rozbalovací) nabídka určuje počet a způsob rozmístění listů na každé větvi. Ukázka dvou uspořádání listů je na následujícím obrázku (3 perpend. vlevo je a 2 paralel vpravo).

Leaves
Obr. 4.Výsledky různého nastavení listoví

Ostatní položky pro nastavení listů jsou:

repeat- počet opakujících se listů na jednom segmentu

lengthMul- představuje délku segmentů větví a tím se určuje i "hustota" listů na větvi. Nabývá hodnot 0,2 - 5. Pro hodnotu < 1 se délka zkracuje, > 1 se prodlužuje.

ExtraSpin- úhel ve stupních natočení listů vzhledem k ose segmentu větve. Dá se nastavit v rozmezí hodnot -90 - +90.

ExtraCurve- úhel vzájemného natočení jednotlivých segmentů větví a tím se udává i natočení listů, které se na větvi nacházejí. Dá se nastavit v rozmezí hodnot -90 - +90.

LeafSlope- úhel listů ve stupních, který svírají vzhledem k ose segmentu větve. Dá se nastavit v rozmezí hodnot 0 - 180.

SubOrient- orientace listů ve stupních, Je závislá na typu listu (viz následující položka). Dá se nastavit v rozmezí hodnot 0 - 90.

leafobj- formulářové pole obsahuje jedno písmeno. Celkem těch písmen je 16 podle abecedy (první je "a", poslední je "o"). Každé písmeno odpovídá jednomu typu listu z textury, která je standardně načtena. Změnou písmena tedy nastavíte použité listy a tím vlastně typ stromu. Vedle je button Add Leaves, který musí být stištěný pokud se mají listy vůbec zobrazovat. V případě že zamáčknutý není, bude se renderovat pouze kmen s větvemi.

LeafScale- tuto položku snad není třeba blíže komentovat. Určuje relativní měřítko jak mají být listy velké. Rozsah 0,2 - 5.

General

Scale- měřítko pro celý strom. Rozsah hodnot 0 - 1.

Radius- hlavní poloměr kmenu (větví), od kterého se odvozují ostatní poloměry. Rozsah hodnot 0 - 1.

Shorten- udává jak moc má být dlouhý segment, který "vyrůstá" z nosného. Nepřímo závisí na hodnotě ResolutionV. Nabývá rozmezí hodnot 0 - 0,2.

ThinDwn- rozdíl mezi tloušťkami konců segmentů (jak moc se větve ztenčují). Nabývá rozmezí hodnot 0 - 0,2.

reDir- míra náhodného faktoru pro orientaci větví z větve nosné. Lze nastavit rozmezí hodnot 0 - 1.

twist - míra náhodného faktoru pro zakřivení větví. Závisí na hodnotě ResolutionV a lze nastavit rozmezí 0 - 1.

resolutionU- celočíselná hodnota udávající počet vrcholů na obvodu větví.

LOD:- tato položka má vliv na snížení počtu bodů na obvodu větví v závislosti na tloušťce větve. Nastuje se rozmezí hodnot 0 - 1.

A to je vše- z výše uvedených obrázků může vyplynout, že skript stromy sice generuje, ale pouze takové, které se reálným příliš nepodobají. Opak je ale pravdou, je třeba vhodně zkombinovat jednotlivé parametry a případně nastavit vhodnou texturu na větve a kmen. Následující obrázek ukazuje vyrenderovanou scénu s ukázkou jak byly nastaveny jednotlivé parametry.

Pokusně vygenerovaný strom
Obr. 5.Pokusně vygenerovaný strom

autor: Pavel Pokorný

(pokorny (zavináč) ft (tečka) utb (tečka)cz)

© 2005 Blender3dcz. Všechna práva vyhrazena. | Design by Stickfish | Webmaster: Jiří Hnídek | drupal