Zbierka - Voronoiove objekty - OpenSCAD
Voronoiove objekty - OpenSCAD
V parametrickom a generatívnom dizajne veľmi často vidíme modely, ktoré sú "dieravé," táto dierovosť sa implementuje z viacerých dôvodov, napríklad kvôli šetreniu na materiáloch, kvôli nižšej hmotnosti objektov, vyššej priepustnosti a podobne. Môžete si prezrieť ako takéto generatívne modely vyzerajú vyhľadaním frázy "generative design" a pochopíte ako často sa táto technika využíva. Pre ukážku jedného zo spôsobov ako vieme implementovať Voronoiove objekty si vytvoríme nasledujúci objekt.
Zadanie úlohy
Budeme vytvárať viac Voronoiových objektov, ktoré budú mať spoločný základ implementácie. Tento základ bude tvoriť rozdelenie priestoru na určité náhodne rozmiestnené časti pomocou kvázi algoritmu, ktorý sa snaží napodobniť robustnejšie algoritmy implementujúce rozdelenie 3D priestoru pomocou Voronoiových diagramov. Pre predstavu a pochopenie pred implementáciou odporúčame vyhľadať si obrázky "voronoi object" a naštudovať si Voronoiove diagramy.
Inštrukcie
- Otvorte si nástroj OpenSCAD.
- Skúste si vyhľadať vovonoiove objekty a analyzovať ako vyzerajú a ako to asi môžeme docieliť.
- Takéto diery sa budeme snažiť vytvoriť najmä odčítaním určitých objektov z priestoru od nejakého nášho celistvého objektu. Preto najprv treba takéto objekty v riestore vytvoriť.
- Tieto objekty sú pravdepodobne náhodne generované na určitých pozíciach v priestore, ktorý si nejakým spôsobom ohraničíme. Pre náhodnosť môžeme použiť funkciu rands. Počet týchto pozícii musíme ale generovať roumne aby sa nestalo, že na renderovanie budeme čakať príliš dlho.
- Aby sa tieto objekty čo najviac podobali náhodnému prerozdeleniu priestoru a aby sa neprekrývali, potrebujeme implementovať nejaké natočenia, deformácie a medzery medzi nimi. Takže budeme museiť počítať vzdialenosti medzi bodmi a taktiež si treba porieť ako fungujú goniometrické a cyklometrické funkcie v OpenSCADe. Zamyslite sa ako a pokúste sa o implementáciu.
- Ak sme implementovali generovanie takýchto objektov a sme s ním spokojní, môžeme postupovať k hlavnému objektu, od ktorého pomocou CSG operácií odrátame vygenerované náhodné objekty.
Testovanie a úpravy
Prezrite a skontrolujte si objekt a odpovedzte si na to či daný 3D model zodpovedá zadaniu a či ste s ním spokojní. Ak chcete skúsiť model upraviť, navrhujeme:
- namiesto rozdelenia skúsiť rôzne kombinácie viacerých CSG operácií a hlavných objektov ako v zakomentovaných ukážkach a vytvorte podobné modely:
- vyskúšať si generovať objekty v menšom priestore s viac bodmi a naopak
- vytvoriť inú implementáciu dierovosti ako je vo vzorovom riešení
- vyskúšať zmeniť parametre a pozície, s ktorými algoritmus pracuje
Spätná väzba
Ak ste spokojní so svojím výsledným modelom, prezentujte ho ostatným, zhodnoťte koncepty, ktoré ste použili a ako ste ho implementovali, buďte otvorení k hodnoteniam od ostatných a k prípadným návrhom na zlepšenie.
Odkazy na materiály
V tejto sekcii nájdete odkazy na materiály, ktoré vám môžu pomôcť pri riešení daných problémov a naučia vás ako používať požívané nástroje:
- BlocksCAD lessons - lekcie pre tvorbu modelov - tu si môžete vyskúšat modelovanie v BlocksCADe na úlohách s rôznymi modelmi, kde si viete triediť výber úloh podľa toho čo potrebujete, alebo vás zaujíma
- OpenSCAD manuál - miesto kde nájdete všetky potrebné informácie k OpenSCADu vrátane všetkých príkazov, dokumentácie či syntaxe
- Rekurzia - Wikipedia
- L-systém
Vzorové riešenie
Ak budete potrebovať motiváciu alebo si skontrolovať váš výsledný model, v nasledujúcich odkazoch nájdete implementáciu daného modelu v nástrojoch, ktoré ste na implementáciu mohli použiť:
Záver
Pri týchto objektoch sme si ukázali jeden z mnohých spôsobov akými sa dajú generovať Voronoiove objekty aj v OpenSCADe. Voronoiove objekty sú základom pre mnoho generatívnych dizajnov a využívajú sa do veľkej miery pri optimalizácií modelov. Dajú sa vytvárať viacerými algoritmami, ktoré implementujú Voronoiov diagram a teda dierovosť objektu. Taktiež sme prišli na to, že myšlienkové pochody sú často najzdĺhavejšou fázou programovania a že OpenSCAD nie je ideálnym nástrojom, s ktorým by sme chceli generovať naozaj komplexné objekty rýchlo.