Zbierka - Viacúčelová optimalizácia 3D modelov: Rozdiel medzi revíziami
(Vytvorená stránka „<div class="worksheet"> 360x360px|left|norotate=1 <h1>Voronoiove objekty - Blender</h1> <div class="section"> <div class="lesson-plan-text"> <div><div>Trvanie:</div><span>1.5 hod</span></div> <div><div>Náročnosť:</div><span>ťažký</span></div> <div><div>Zručnosti:</div><span>[https://kempelen.dai.fmph.uniba.sk/design/index.php/Cykly cykly], [https://kempelen.dai.fmph.uniba.sk/design/index.php/Podmienky…“) |
Bez shrnutí editace |
||
Riadok 1: | Riadok 1: | ||
<div class="worksheet"> | <div class="worksheet"> | ||
[[File:MOEA.stl|360x360px|left|norotate=1]] | [[File:MOEA.stl|360x360px|left|norotate=1]] | ||
<h1> | <h1>Viacúčelová optimalizácia 3D modelov</h1> | ||
<div class="section"> | <div class="section"> | ||
<div class="lesson-plan-text"> | <div class="lesson-plan-text"> | ||
<div><div>Trvanie:</div><span>1.5 hod</span></div> | <div><div>Trvanie:</div><span>1.5 hod</span></div> | ||
<div><div>Náročnosť:</div><span>ťažký</span></div> | <div><div>Náročnosť:</div><span>ťažký</span></div> | ||
<div><div>Zručnosti:</div><span>[https://kempelen.dai.fmph.uniba.sk/design/index.php/Cykly cykly], [https://kempelen.dai.fmph.uniba.sk/design/index.php/Podmienky podmienky], [https://kempelen.dai.fmph.uniba.sk/design/index.php/Funkcie funkcie], [https://kempelen.dai.fmph.uniba.sk/design/index.php/Blender_Python_API práca s bpy]</span></div> | <div><div>Zručnosti:</div><span>[https://kempelen.dai.fmph.uniba.sk/design/index.php/Cykly cykly], [https://kempelen.dai.fmph.uniba.sk/design/index.php/Podmienky podmienky], [https://kempelen.dai.fmph.uniba.sk/design/index.php/Funkcie funkcie], [https://kempelen.dai.fmph.uniba.sk/design/index.php/Blender_Python_API práca s bpy a platypus]</span></div> | ||
<div><div>Nástroje:</div><span>[https://www.blender.org/ Blender]</span></div> | <div><div>Nástroje:</div><span>[https://www.blender.org/ Blender]</span></div> | ||
</div> | </div> | ||
Riadok 15: | Riadok 15: | ||
<div class="section"> | <div class="section"> | ||
<h3>Zadanie úlohy</h3> | <h3>Zadanie úlohy</h3> | ||
<p>Cieľom tejto úlohy je | <p>Cieľom tejto úlohy je oboznámiť sa s knižnicou platypus pre prácu s optimalizáciou, zistiť ako funguje taká optimalizácia, čo všetko na to potrebujeme, ktorá aspekty pri ladení musíme zohľadňovať, uvažovať o tom ako by sa takáto optimalizácia dala zovšeobecňovať. Taktiež si vo väčšom precvičíme prácu s Blenderom a Pythonom a načíme sa nové programátorksé praktiky. V našom prípade nám pôjde o to definovať takú optimalizáciu, ktorá by vyhovovala naším požiadavkám. V prípade optimalizácie 3D modelu pomocou ich modifikácie nám ide o hľadanie tých najoptimálnejších parametrov, ktoré nám umožnia objekt meniť tak aby spĺňal kritériá, ktoré naň kladieme.</p> | ||
</div> | </div> | ||
Riadok 26: | Riadok 26: | ||
<li>[https://docs.python.org/3/tutorial/index.html Python syntax] - tu nájdete syntax a použitie jazyka Python s ukážkami použitia</li> | <li>[https://docs.python.org/3/tutorial/index.html Python syntax] - tu nájdete syntax a použitie jazyka Python s ukážkami použitia</li> | ||
<li>[https://docs.blender.org/api/current/index.html Blender Python API] - dokumentácia Python API v Blenderi - nájdete tu všetko čo sa týka programovania s Python API (s knižnicou bpy) v Blenderi</li> | <li>[https://docs.blender.org/api/current/index.html Blender Python API] - dokumentácia Python API v Blenderi - nájdete tu všetko čo sa týka programovania s Python API (s knižnicou bpy) v Blenderi</li> | ||
<li>[https://platypus.readthedocs.io/en/stable/ Platypus] - dokumentácia knižnice platypus s ukážkami použitia</li> | |||
</ul> | </ul> | ||
</div> | </div> | ||
Riadok 32: | Riadok 33: | ||
<h3>Inštrukcie</h3> | <h3>Inštrukcie</h3> | ||
<ol> | <ol> | ||
<li>Zapneme si nástroj Blender a | <li>Zapneme si nástroj Blender a nastavíme si prostredie ako sme sa naučili v predošlých úlohách - necháme si v scéne objekt kocky, prepneme sa do režimu "Scripting" a vytvoríme si tam súbor, do ktorého budeme písať kód.</li> | ||
</ol> | </ol> | ||
</div> | </div> |
Verzia z 09:17, 6. máj 2024
Viacúčelová optimalizácia 3D modelov
V predošlých úlohách sme sa naučili pracovať s prostredím Blender s použitím Pyhtonu. Teraz prechádzame do konceptu viacúčelovej optimalizácie, ktorú si vysvetlme a ukážeme. Definciou postačujúcou pre nás bude v tomto prípade, že viacúčelová optimalizácia je proces hľadania najlepších možných riešení pre viacero súčasne sledovaných cieľov alebo kritérií. Cieľom je nájsť také riešenia, ktoré predstavujú tzv. Pareto-optimálnu množinu, kde nie je možné zlepšiť jedno kritérium bez zhoršenia niektorého z ostatných kritérií. Ide o vyhľadávanie riešení pomocou kompormisu, ktoré vyvažujú protichodné požiadavky rôznych cieľov. Vo viacúčelovej optimalizácii nie je jedno jednoznačne najlepšie riešenie, ale skupina riešení, nazývaná Pareto-optimálna fronta, medzi ktorými musí rozhodovať užívateľ na základe preferencií alebo ďalších kritérií.
Zadanie úlohy
Cieľom tejto úlohy je oboznámiť sa s knižnicou platypus pre prácu s optimalizáciou, zistiť ako funguje taká optimalizácia, čo všetko na to potrebujeme, ktorá aspekty pri ladení musíme zohľadňovať, uvažovať o tom ako by sa takáto optimalizácia dala zovšeobecňovať. Taktiež si vo väčšom precvičíme prácu s Blenderom a Pythonom a načíme sa nové programátorksé praktiky. V našom prípade nám pôjde o to definovať takú optimalizáciu, ktorá by vyhovovala naším požiadavkám. V prípade optimalizácie 3D modelu pomocou ich modifikácie nám ide o hľadanie tých najoptimálnejších parametrov, ktoré nám umožnia objekt meniť tak aby spĺňal kritériá, ktoré naň kladieme.
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:
- Teória - rozcestník stručnej teórie pre koncepty, ktoré potrebujeme
- Rozcestník dokumentácií Blendera - nájdete tu dokumentáciu pre vývojárov, používateľskú ríručku a aj Python API dokumentáciu
- Python syntax - tu nájdete syntax a použitie jazyka Python s ukážkami použitia
- Blender Python API - dokumentácia Python API v Blenderi - nájdete tu všetko čo sa týka programovania s Python API (s knižnicou bpy) v Blenderi
- Platypus - dokumentácia knižnice platypus s ukážkami použitia
Inštrukcie
- Zapneme si nástroj Blender a nastavíme si prostredie ako sme sa naučili v predošlých úlohách - necháme si v scéne objekt kocky, prepneme sa do režimu "Scripting" a vytvoríme si tam súbor, do ktorého budeme písať kód.
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:
- vyskúšajte si aj iné modifikároti, prehoďte poradia existujúcich alebo meňte parametre a sledujte ako sa výsledný objekt mení
- vytvorte vlastné funkcie, ktoré zmenia daný objekt podľa vašich predstáv
- pokúste sa implementovať kontrolu modifikátorov - napríklad: rozsahy daných parametrov, kontrolu existujúcich modifikátorov a podobne
- vyskúšajte si importovať vlastný objekt do scény a následne aplikovať vaše modifikátori naň, mimo iné tak zistíte aké dôležité je odhadnúť rozsahy parametrov pre rozlišné objekty
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.
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
Týmto cvičením sme si prešli základy Blendera, Pythonu a ako dokážu spolupracovať. Zistili sme, že modifikovať objekty priamo z kódu v sofistikovanejších nástrojoch akým je Blender je po implementácii omnoho efektívnejšie a rýchlejšie ako v OpenSCADe. Cvičením sme si otvorili dvere k mnohým možnostiam parametrického a generatívneho dizajnu a základu jednému z mnohých prístupov k modifikácii objektov. Následne budeme chcieť implementovať algoritmy, ktoré nám umožnia generovanie viacerých verzii objektu naraz.