Grafika komputerowa: Wyświetlanie obiektów grafiki wektorowej (EK:La3/La4), Lista 6 1) Druk 3D Zakres 2) Post-processing materiału: 3) Addony Autor : Dominik Drabik Charakter tej listy jest odrobinkę inny od poprzednich zamiast skupiać się na opisie konkretnego narzędzia i jego zastosowania, opisywane są ogólnie pewne dostępne narzędzia, byście mieli Państwo świadomość ich istnienia w razie potrzeby ich wykorzystania. 1) Eksport obiektów do druku 3D Większość programów do generowania kodu maszynowego z wymodelowanych obiektów 3D wykorzystuje format pliku *.stl. Jeśli chcemy wykorzystać Blender do stworzenia takiego obiektu, oznacza to, że będzie trzeba skonwertować domyślny typ pliku *.blend na *.stl. Ma to kilka konsekwencji. Po pierwsze wszelkie narzędzia natywne dla programu Blender (takie jak chociażby modyfikatory, materiały, tekstury) zostaną zignorowane przy konwersji. Po drugie stosowany typ silnika (blender render lub cycles render) nie ma znaczenia, gdyż są one i tak wykorzystywane do renderingu sceny, a nie do modelowania. Po trzecie wszystkie istniejące osobne obiekty przy konwersji zostaną połączone w jeden. Dodatkowo warto włączyć wymiary, by móc łatwiej zaprojektować drukowany przedmiot. Włączenia wymiarów dokonuje się w oknie Sceny w zakładce Units. By włączyć jednostki metryczne wystarczy wybrać taką opcję w Length. Ustawi to domyślną arbitralną jednostkę Blendera na 1 metr. W przypadku, gdy istnieje potrzeba projektowania znacznie mniejszych obiektów (a w druku 3D przeważnie taka właśnie potrzeba istnieje) można wykorzystać Unit Scale do zmniejszenia bazowej jednostki (na przykład ustawienie Unit Scale na 0.01 zmieni natywną jednostkę na 1 cm). Należy jednak pamiętać, że jednostki obiektu to jedno, ale krok siatki widoczny na oknie podglądu to drugie i dla własnej wygody warto również zmienić wartość tego parametru. Można tego dokonać wywołując prawy boczny pasek (klawisz N) i odszukać zakładkę Display. Tam zmiana parametru Scale na podobną jak w jednostce zmniejszy rozmiar siatki i ułatwi odnalezienie się w przestrzeni 3D. Następnym etapem jest naturalnie wymodelowanie bryły. Dobrym pomysłem przed rozpoczęciem tworzenia obiektu jest usunięcie wszystkiego ze sceny. Podczas modelowania powinny być zachowane pewne zasady. Przede wszystkim obiekt powinien być w miarę zamkniętą bryłą. Napisałem w miarę, bo tak naprawdę wszystko zależy od tego jak obiekt zostanie wczytany przez oprogramowanie generujące kod maszynowy. Ponadto warto pamiętać o czymś takim jak fizyka i ogólnych zasadach druku 3D. W druku 3D warstwa jest nakładana po warstwie od dołu do góry. W przypadku poniższego obiektu przy natywnym ułożeniu bez żadnych rusztowań wydruk nie zostanie dobrze wykonany, gdyż w pewnym momencie nastąpi druk w powietrzu. Z kolei dodanie rusztowań (3 rysunek od lewej, zielona otoczka) nie tylko oznacza stratę dużej ilości materiału, ale także dużo zabawy przy usuwaniu tego rusztowania (co nie jest wcale takie łatwe ). Z kolei mając to na uwadze można tak zaplanować położenie bryły, że samo rusztowanie jest łatwe w usunięciu i straty materiału nie są duże (4 rysunek od lewej). Jest to oczywiście skrajnie przerysowany przypadek, ale chodzi o pokazanie pewnej zasady.
Po skończeniu modelowania bryły konieczne jest jej wyeksportowanie do formatu STL. W tym celu z górnego menu wystarczy wybrać Export i STL (ostatni na liście). Przed zapisaniem w lewym dolnym rogu powinny być opcje eksportu. Warto zaznaczyć Scene Unit, gdyż w przeciwnym razie zastosowana skala jednostek może nie być przeniesiona do nowego pliku. Tak wyeksportowany plik wczytujemy następnie oprogramowaniem do druku 3D najpowszechniejszymi są Cura oraz Repetier. Oczywiście nie będziemy na tych zajęciach uruchamiać żadnego oprogramowania, gdyż wymagałoby to skonfigurowania parametrów do danej posiadanej drukarki 3D. Z perspektywy modelowania 3D jest to jednak już zakończony proces, dalej pozostaje aspekt techniczny wydruku. 2) Post-processing renderingu Post-processing służy do końcowej edycji obrazowej nałożonej po zakończeniu renderowania sceny do obrazu 2D. Może zostać wykorzystany do dodawania efektów (odblaski jak widoczne na grafice poniżej), poprawiania obrazu (usunięcia szumu, zmiana nasycenia kolorów, poprawienie jasności) oraz łączenia elementów. W jego skład wchodzą filtry, histrogramy i obróbka numeryczna / konwersje na samym obrazie 2D bez całego bagażu związanego z renderingiem. Post-processing (compositing) Raczej nie będzie szczególnym zaskoczeniem stwierdzenie, że edycji obrazów dokonuje się za pomocą węzłów. Po zrenderowaniu obrazu wystarczy przejść do edytora węzłów (lub wybrać układ okienek Compositing z górnego paska), a następnie upewnić się, że ma się zaznaczony tryb Composing i zaznaczyć opcję Use Nodes. Spowoduje to wyświetlenie dwóch węzłów Render Layers oraz Composite. Węzeł Render Layers pozwala na zaznaczenie interesującej nas warstwy do dalszej obróbki i w domyśle stanowi produkt wyjściowy po renderingu (wyjście z tego węzła to właśnie wyrenderowany obraz). Z kolei węzeł Composite to końcowy proces obróbki obrazu i jest obrazem końcowym. Wszystkie węzły umieszczone pomiędzy tymi dwoma węzłami stanowią post-processing. Dodając dodatkowe okno UV/Image Editor można obserwować zmiany na bieżąco przy założeniu, że ustawi się obraz wyjściowy na Render Results. Podobny efekt można uzyskać dodając węzeł Viewer (w Outputs) i, podłączywszy do niego image, włączyć opcję Backdrop obok Use Nodes. RGB2BW Jest to prosty konwerter służący do zamiany obrazu kolorowego na czarnobiały. Sam z siebie na potrzeby finalnego renderingu nie jest szczególnie potrzebny, ale może być wykorzystany do dodawania efektów poprzez połączenie z innymi filtrami.
Blur Filt wykorzystywany do rozmywania obrazu. Posiada kilka typów rozmycia: flat (proste rozmycie wszystkiego jednakowo), tent (zachowuje maksima i minima), quadratic, cubic, Gaussian, fast Gaussian (aproksymacja filtru Gaussianowego), Catmull-Rom (zachowuje ostre krawędzie) i Mitch (rozmywa ostre krawędzie). Poniżej zestawione są efekty poszczególnych typów. Defocus Działanie tego węzła jest poniekąd zbliżone do poprzedniego, gdyż także jest wykorzystywane do rozmywania obrazu. Znaczącą różnicą jednak jest to, że ten węzeł rozmywa tylko obszar obrazu bazując na załączonej masce/mapie. Węzeł jest wykorzystywany przeważnie do emulowania głębi ostrości (rozmycia obiektów przed i za obiektem, na którym jest focus obiektywu). ColorRamp Jest to węzeł wykorzystywany do mapowania wartości do kolorów z wykorzystaniem gradientu. Usuwanie szumu w post-processingu Post-processing można wykorzystać do usuwania szumu z wyrenderowanego obrazu. Jest kilka sposobów na osiągnięcie tego, na potrzeby tych zajęć zostanie omówiony tylko ten najprostszy. W zakładce filtrów istnieją dwa potężne narzędzia do usuwania szumu. Jeden z nich jest nazywany despeckle i jest wykorzystywany do wygładzania obszarów obrazu w których szum jest zauważalny przy jednoczesnym pozostawieniu złożonych obszarów nienaruszonych. Działa na zasadzie odchylenia standardowego każdego z pikseli w porównaniu do jego sąsiedztwa, które jest wykorzystywane do określenia złożoności. Jeśli złożoność jest niższa niż próg (threshold) to obszar jest wygładzany przy wykorzystaniu prostego filtru uśredniającego. Jest to dosyć prosty filtr. Bardziej zaawansowane metody usuwania szumu uwzględniają wykorzystanie Pythona i opis krok po kroku znajduje się w linku.
Zadanie nr 1 na zaliczenie listy Aspekt medyczny W celu wykonania odlewu konieczne jest najpierw wczytanie pliku z modelem ręki. Plik ten jest do pobrania na stronie pod listą jako materiały. Przypuśćmy, że doszło do złamania kości promieniowej, więc konieczne jest usztywnienie dwóch okolicznych stawów (podobnie jak na załączonej obok grafice). Samo stworzenie odlewu jest stosunkowo proste jeśli posiadamy zwymiarowaną kończynę w oprogramowaniu. Po otwarciu pliku blend z ramieniem należy przejść do trybu edycji i zaznaczyć fragment ramienia, na którym chcemy wykonać odlew. Po jego zaznaczeniu wystarczy powielić zaznaczenie (shift+d), a następnie oddzielić obiekt (klawisz P). W trybie obiektowym zaznaczmy wydzielony obiekt i zmieniając wymiary szerokości i wysokości odlewu (Y i Z, X odpowiada długości ramienia) zwiększmy odlew tak, by nie zahaczał o ramię. Po zrobieniu tego wystarczy zaaplikować modyfikator Wireframe. Druk 3D jest coraz częściej wykorzystywany do tworzenia implantów medycznych i dentystycznych. Ich ogromną zaletą jest to, że wprawny modeler potrafi dopasować go idealnie do potrzeb, a sam koszt wydruku takiego implantu nie jest duży przy zestawionym układzie. Obecnie technologia jest już tak dopracowana, że można w czasie rzeczywistym zeskanować i odwzorować elementy pacjenta i dostosować wydruk do bieżącego zapotrzebowania. Poniżej przedstawiono metodę leczenia nowotworu kości uwzględniającą wycinek fragmentu kostnego z mutacją i zastąpienie go zeskanowanym i wydrukowanym implantem kostnym. Jako zaliczenie wystarczy wysłać render stworzonego gipsu.
Zadanie nr 2 na zaliczenie listy Aspekt biologiczny Inżynieria biomedyczna to nie tylko implanty medyczne, ale także tworzenie obrazów 3D molekuł i wizualizacje procesów molekularnych. I także tutaj modelowanie 3D znajduje zastosowanie. Istnieje addon pozwalający na wczytanie danych z PDB (protein data bank). Jest to baza, w której znajdują się trójwymiarowe struktury dużych molekuł biologicznych (np. białek, lipidów, kanałów jonowych). Struktury te są wykorzystywane do różnego zakresu badań ze szczególnym uwzględnieniem virtual screeningu i dynamiki molekularnej. Virtual screening jest to numeryczna analiza dużej puli cząsteczek mająca na celu wybranie kilku najbardziej pasujących do eksperymentu na bazie wyliczonych parametrów fizykochemicznych. Dynamika molekularna jest techniką symulacji zachowania cząsteczek z wykorzystaniem równań Newtonowskich w mikroskali pozwalająca na wgląd w poziom molekularny. Na grafice po prawej stronie znajduje się wczytana cząsteczka ludzkiej albuminy skompleksowanej z aspiryną i kwasem mirystynowym. Wczytana cząsteczka jest dzielona na typ atomów i jako obiekt może być poddana dalszej obróbce w celu chociażby prostych animacji. Aby wczytać strukturę do Blendera musimy najpierw mieć strukturę do wczytania. W tym celu najlepiej udać się na stronę Protein Data Bank (link) i w wyszukiwarce w prawym górnym rogu wyszukać interesującą nas cząsteczkę. Następnym krokiem będzie włączenie addonu, który pozwoli na import pdb. Addony to dodatkowe usprawnienia programu pozwalające na optymalizację pracy. Aby włączyć szukany przez nas addon wystarczy wybrać User Preferences z górnego paska, a następnie w zakładce Add-ons odszukać Import-Export: Atomic Blender PDB i zaznaczyć go. Pozornie nic się nie zmieni, natomiast po wybraniu zakładki Import z menu File będzie tam widoczna opcja Protein Data Bank. Wystarczy znaleźć ściągnięty plik i go importować. Przed samym importem warto przyjrzeć się opcjom importu dostępnym w lewym dolnym pasku zwłaszcza typowi obiektów (domyślnie ustawione NURBS) oraz (po wybraniu meshy) możliwości zdefiniowania promieni wczytywanych sfer. Wizualizacje białek i lipidów mogą być wykorzystane nie tylko do obserwowania struktur. Chociaż nie dla Blendera, istnieje specjalny toolkit stworzony do celów wizualizacji procesów biologicznych w mikroskali mmaya, a efekty są dostępne pod linkiem. Tego typu animacje mogą być wykorzystane nie tylko w celach wizualizacyjnych, ale stanowić efektowny dodatek do prezentacji. Jako zaliczenie należy wysłać render zainportowanego białka/lipidu/kryształu.
Zadanie nr 3 na zaliczenie listy Aspekt inżynierski Jednym ze sposobów łączenia obiektów są śrubki. Śrubki jednak mają różne kształty i różne wymiary. Na szczęście Blender posiada wbudowany addon, który pozwala na tworzenie śrubek (bolts) i nakrętek (nuts) do nich. W celu stworzenia śrubki wystarczy włączyć addon (analogicznie jak w poprzednim zadaniu) o nazwie BoltFactory. Włączenie tego addona doda do zakładki tworzenia obiektów nową opcję Bolt. Po stworzeniu obiektu typu Bolt w oknie właściwości obiektu (w tym samym oknie w którym w przypadku sfery definiowało się ilość południków i równoleżników) będzie szereg opcji do wyboru. Można wybrać typ obiektu w Model albo srubkę (bolt) albo nakrętkę (nut). W przypadku śrubek można określić czy jej łeb ma zakończenie na śrubokręt krzyżak, gwiazdkę czy bez określonych wgłębień, określić ich rozmiar i wgłębienie, zdefiniować kształt łba śrubki oraz wszystkie parametry związane z gwintem. Wykorzystując chociażby logikę booleanowską można w ten sposób tworzyć projekty obiektów z gotowymi gwintami, co pozwoli na łatwe wkręcenie weń śrubek. Jako zaliczenie należy wysłać render sceny, na której będą znajdować się 4 różne śrubki z pasującymi do nich nakrętkami.
Zadanie nr 4 na zaliczenie listy Trochę dalszego treningu z modelowania obiektów W ramach zadania wymodeluj i nałóż materiały/tekstury by odwzorować jeden z wybranych poniżej obiektów. Pamiętaj, że obiekt nie musi być jedną bryłą.
Poznane klawisze skrótowe Skrót Opis numpad 7/1/3 widok z góry/boku/prawej strony numpad 0 widok kamery numpad 5 przełączanie się między widokiem ortogonalnym i perspektywą numpad 2/4/6/8 obrót po przestrzeni 3D ctrl+n7/1/3 widok z dołu/tyłu/lewej strony ctrl+n2/4/6/8 przesunięcie po 2D w danym kierunku scroll+lpm swobodny obrót po przestrzeni 3D shift+scroll+lpm swobodne przesunięcie po 2D Z włączenie/wyłączenie widoku szkieletowego T przywołanie/schowanie zakładki narzędzi N przywołanie/schowanie zakładki transformacji shift+s dodatkowe opcje precyzyjnego umieszczenia kursora 3D shift+a przywołanie okienka tworzenia obiektów Tab przełączanie między trybem obiektowym a edycyjnym G przesuwanie obiektu S skalowanie/rozciąganie obiektu R obracanie obiektu shift+d duplikowanie obiektu ctrl+z cofnięcie wykonanego kroku ctrl+shift+z cofnięcie cofnięcia shift+ppm zaznaczanie wielu wierzchołków/krawędzi/ścian w trybie edycyjnym B w trybie edycyjnym : wyrysowanie okna do zaznaczenia wierzchołków C w trybie edycyjnym : zaznaczanie wierzchołków w danym okręgu (wyjście z trybu - ESC) E w trybie edycyjnym : ekstruzja zaznaczonych wierzchołków O włączenie/wyłączenie edycji proporcjonalnej K w trybie edycyjnym : narzędzie knife (potwierdzenie cięć Spacja) F w trybie edycyjnym : łączenie wierzchołków/punktów/krzywych ctrl+j przy zaznaczeniu dwóch obiektów siatkowych : łączenie obiektów w jeden P w trybie edycyjnym : rozdzielenie wierzchołków od obiektu siatkowego F12 renderowanie sceny F3 wywołanie okna do zapisywania obrazu po wyrenderowaniu U w trybie edycyjnym : wyświetla okno mapowania UV obiektu (umożliwia m.in. unwrapping) A w trybie edycyjnym : zaznaczenie/odznaczenie wszystkich wierzchołków ctrl+0 zaznaczywszy kamerę : uczynienie zaznaczonej kamery aktywną shift+spacja rozszerzenie bieżącego widoku na cały ekran F ustawienie rozmiaru pędzla shift+f ustawienie siły pędzla alt+c konwersja obiektu do innego obiektu (np. tekstu do obiektu siatkowego) Materiały dodatkowe do listy 6 Materiały: 1) https://wiki.blender.org/index.php/extensions:2.6/py/scripts Poradniki online: Usuwanie szumu z Pythonem - http://www.blenderdiplom.com/en/tutorials/all-tutorials/551-using-python-toquickly-setup-nodes.html