Zbierka - Generovanie objektov - Blender

Zo stránky Parametrické a Generatívne 3D modelovanie
Verzia z 11:06, 29. apríl 2024, ktorú vytvoril Admin (diskusia | príspevky)

Voronoiove objekty - časť: Blender

Generátor objektov
Trvanie:
1 hod
Náročnosť:
pokročilý
Zručnosti:
cykly, podmienky, funkcie, práca s knižnicou bpy
Nástroj:
Blender

Jendným z hlavných metodík parametrického a generatívneho dizajnu je potrebné vedieť generovať mnoho objektov a vedieť ich rýchlo upravovať. Preto sme zahrnuli aj toto cvičenie, kde si ukážeme ako vieme rýchlo v Blenderi generovať objekty a apliklovať na ne viaceré zmeny.


Zadanie úlohy

Cieľom je predstaviť si bázové programovacie koncepty v Pythone, ktoré potrebujeme ak chceme generovať v Blenderi veľa objektov rýchlo a modifikovať ich za behu.

Inštrukcie

  1. Zapneme si nástroj Blender a z horných tabov si vyberieme ten s názvom "Scripting" pre otvorenie okna na písanie programu.
    Blender scripting.png
  2. Klikneme na ikonku "New," ktorou si vytvoríme nový súbor.
    Blender new script.png
  3. Uistíme sa, že v druhom okne máme otvorenú časť "3D viewport" s módom "Object Mode." Naše rozloženie okien by malo vyzerať nasledovne:
    Blender setup.png
  4. S takto nastaveným prostredím môžeme začať písať kód. Prvým krokom je importovať si knižnice, ktoré budeme potrebovať, hlavnou je knižnica bpy, ktorá nám sprostredkúva funkcionality pre prácu s Blenderom. Importujeme a použijeme ju nasledovne:
    Blender bpy import.png
    Takýmto volaním vieme získať objekt, ktorý máme aktuálne v scéne, kde pomocou "print" si dávame do konzoly vypísať jeho meno. Aby sme videli tento výstup v konzole, musíme si ju otvoriť v okne a to spravíme nasledovne:
    Blender system console.png
    Ak sa nám to podarilo, tak môžeme vidieť výpis mena objektu v konzole a ako sa nám tento objekt zorbazuje aj vo vyčítaní objektov z kolekcie scény:
    Blender system console print.png
    Spúšťať skript budeme pomocou vyznačeného tlačidla "Run script" alebo skratkou alt + P
  5. Pre pokračovanie je potrebné naštudovať si Blender Python API, aby sme vedeli používať funkcie, ktoré potrebujeme.
  6. Hlavným princípom, ktorý budeme využívať pre vytvorenie voronoiovho objektu je aplikácia modifikátorov, ktoré nám Blender ponúka. Viac as o ních dozvieme v časti Blender moodifiers.
  7. V tejto časti máme kód, ktorým importujeme knižnicu bpy, získame náš objekt, vytvoríme mu modifikátor WIREFRAME a nastavíme mu niektoré z hodnôť:
    import bpy
    
    cube_object = bpy.context.scene.objects[0]
    
    wireframe_modifier = cube_object.modifiers.new(name="My wireframe", type='WIREFRAME')
    wireframe_modifier.thickness = 0.2 # Thickness  # <0; 1>
    wireframe_modifier.offset = 0      # Offset     # <-1; 1>

    Keď skript spustíme, okrem zmeny na objekte v hlavnej scéne si všimneme, že objektu sa aj v časti modifikátorov pridal konkrétny modifikátor aj s hodnotami, ktré sme mu pridali:

    Blender modifier.png
  8. Skúste si naštudovať rôzne modifikátori a vyskúšať si ako fungujú.
  9. Ďalej pomocou podobných príkazov vytvoríme modifikátor "Subdivision surface" typu 'SUBSURF' a modifikátor "Solidify" typu 'SOLIDIFY'. Dajte si ale pozor aby ste nepridávali jeden modifikátor k danému objektu viac krát, ak sa vám to stane, stačí ho v okne s modifikátormi vymazať, prípadne si to viete ošetriť v kóde kontrolou modifikátorov.
  10. Pre implementovanie dierovosti objektu si potrebujeme pridať viac modifikátorov, pamätajte na to, že záleží na poradí pridania modifikátorov a nakoniec ich potrebujeme všetky aplikovať, aby sa nám na danom objekte skutočne prejavili. Taktiež je niekedy výhodné použiť modifikátor opakovane. Napríklad pre takýto objekt:
    Blender multiple modifiers.png
    Sme využili kombináciu modifikátorov SUBSURF, DECIMATE, WIREFRAME, znovu SUBSURF a nakoniec SOLIDIFY.
  11. Vyskúšajte si kombinovať tieto modifikátori a upravujte ich parametre v nástrojoch priamo v Blenderi a pokúste sa ich prepísať do Python skriptu.

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.

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:

  • 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
  • Blendere 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

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.