Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Blender/Boolean - Jak dopasować do siebie dwa elementy wydruku STL

p.kaczmarek2 20 Sep 2021 00:44 1236 3
  • Blender/Boolean - Jak dopasować do siebie dwa elementy wydruku STL
    Witajcie moi drodzy.
    Zaprezentuję tutaj prosty sposób na dopasowanie do siebie dwóch dowolnych obiektów 3D, przykładowo zaimportowanych z formatu STL. Dopasowanie odbywać się będzie automatycznie i pozwoli wydrukować nam elementy które można ze sobą skleić i/lub zamontować na ścisk. Dopasowanie wykonam w programie Blender w oparciu o modyfikator boolean, w tym przypadku użyję różnicy booleowskiej kształtów.

    Skąd pomysł na temat?
    Pomysł by ten temat napisać wziął się gdy sam trafiłem na problem dopasowania do siebie dwóch elementów. Drukowałem dla kogoś ozdobny domek z filamentu PLA, który składa się osobno z daszku i bazy:
    Blender/Boolean - Jak dopasować do siebie dwa elementy wydruku STL
    To jest gotowy model, więc wszystko powinno do siebie pasować, prawda?
    Blender/Boolean - Jak dopasować do siebie dwa elementy wydruku STL
    Blender/Boolean - Jak dopasować do siebie dwa elementy wydruku STL
    Niestety po pobraniu STLi i wydrukowaniu ich bez zmieniania skali okazało się, że rzeczywistość jest bardziej problematyczna:
    Blender/Boolean - Jak dopasować do siebie dwa elementy wydruku STL Blender/Boolean - Jak dopasować do siebie dwa elementy wydruku STL
    (na zdjęciu wydruk nie jest jeszcze oczyszczony w pełni z supportów i z rafta, ale to nie jest cel tego tematu)
    Wiem, że zdjęcia tego nie oddają, ale te elementy nijak do siebie nie pasują. I nie jest to kwestia precyzji wydruku, czy tam wciśnięcia ich do siebie, margines błędu jest za duży, po prostu wygląda to tak jakby autor modelu zapomniał dać ostatnią wersję jednego z elementów....
    Pora to naprawić.

    Poprawka STLi w Blenderze
    Blender bez problemu może importować i eksportować STL. STL to zasadniczo tylko zbiór wierzchołków i wielokątów (stworzonych na bazie właśnie tych wierzchołków) i nic więcej.
    Obiekty np. z Thingiverse są też w tym formacie.
    Zaimportowałem oba modele by sprawdzić czy naprawdę się nie zgadzają:
    Blender/Boolean - Jak dopasować do siebie dwa elementy wydruku STL
    Jasne, że nie:
    Blender/Boolean - Jak dopasować do siebie dwa elementy wydruku STL
    Można by to ręcznie poprawiać w pełni modyfikując siatkę, ale lepsze są automatyczne rozwiązania.
    Wystarczy użyć modyfikatora boolean. W Blenderze on działa na wręcz dowolnych kształtach, nawet przy dużej ilości trójkatów:
    Blender/Boolean - Jak dopasować do siebie dwa elementy wydruku STL
    W nowszym Blenderze to wygląda tak:
    Blender/Boolean - Jak dopasować do siebie dwa elementy wydruku STL
    Boolean wykonuje operację booleowską na dwóch kształtach. Dodaje, odejmuje lub łączy bieżący obiekt z danym wybranym obiektem.
    Blender/Boolean - Jak dopasować do siebie dwa elementy wydruku STL
    Rezultat (po chwili pracy Blendera):
    Blender/Boolean - Jak dopasować do siebie dwa elementy wydruku STL
    Blender/Boolean - Jak dopasować do siebie dwa elementy wydruku STL
    (dla porównania, bez booleana):
    Blender/Boolean - Jak dopasować do siebie dwa elementy wydruku STL
    Potem można ew. zaakceptować booleana (zamienić modifiera tak by jego zmiany zapisały się na stałe w meshu, wtedy sam modifier z listy znika):
    Blender/Boolean - Jak dopasować do siebie dwa elementy wydruku STL
    I ewentualnie jeszcze zrobić ręczne poprawki (zaznaczamy ręcznie dwie scianki a potem opcja Select Linked Faces i gotowe).
    Blender/Boolean - Jak dopasować do siebie dwa elementy wydruku STL
    i jeszcze np. przeskalować (zmniejszyć) zaznaczenie.
    Swoją drogą, przetworzony obiekt ma prawie pół miliona trójkątów a Boolean i tak go ogarnia.
    Blender/Boolean - Jak dopasować do siebie dwa elementy wydruku STL




    Końcowa przymiarka
    Po mojej poprawce wszystko pasuje do siebie bez zarzutów. Pasuje na ścisk, nie trzeba w sumie nawet kleić. Rewelacja, szkoda, że oryginalne STLe nie są dobrze przygotowane...
    Blender/Boolean - Jak dopasować do siebie dwa elementy wydruku STL Blender/Boolean - Jak dopasować do siebie dwa elementy wydruku STL

    Demonstracja trzech trybów boolean
    Myślę, że jeszcze warto pokazać na prostych kształtach czym są te trzy tryby boolean.
    UWAGA: na przykładach użyłem tylko sześcianu (cube) i kuli (sphere), to są bryły wypukłe, ale w Blenderze boolean działa też na innych kształtach, nie muszę być wypukłe!
    Dwa obiekty:
    Blender/Boolean - Jak dopasować do siebie dwa elementy wydruku STL
    Ich suma:
    Blender/Boolean - Jak dopasować do siebie dwa elementy wydruku STL
    Część wspólna:
    Blender/Boolean - Jak dopasować do siebie dwa elementy wydruku STL
    Różnica (cube odjęte od sphere):
    Blender/Boolean - Jak dopasować do siebie dwa elementy wydruku STL
    Myślę, że to dobrze ilustruje działanie Boolean w Blenderze (i nie tylko).


    Rozwiązywanie problemów
    Boolean nie zawsze może jednak działać zgodnie z oczekiwaniami, mimo iż w bieżącej wersji radzi sobie z naprawdę różnorodnymi kształtami. Poniżej daję kilka wskazówek które pozwolą rozwiązać większość problemów z booleanem.
    1. czy obiekt jest szczelny, 'watertight', czy ma otwory w siatce? Otwory powinny zostać zamknięte, to też popsuć może Slicer np Cura:
    Blender/Boolean - Jak dopasować do siebie dwa elementy wydruku STL
    2. czy wektory normalne ścianek są konsystentne, czy nie ma odwróconych ścianek? W Blenderze warto zaznaczyć całość i wykonać "make normals consistent".
    Ale odwrócone ścianki też widać wizualnie w Blenderze (inny odcień):
    Blender/Boolean - Jak dopasować do siebie dwa elementy wydruku STL
    UWAGA: jeśli natomiast mamy włączony 'backface culling' to z kolei tylna strona ścianki nie będzie wcale widoczna, ścianka będzie widoczna z jednej strony tylko a z drugiej strony zobaczymy po prostu brak w geometrii.
    3. w razie problemów można usunąć duplikaty wierzchołków (Remove Doubles)
    4. warto spróbować obu implementacji booleana (BMesh i Carve) oraz zmienić overlap threshold:
    Blender/Boolean - Jak dopasować do siebie dwa elementy wydruku STL
    5. w przypadku skomplikowanej bądź nieszczelnej geometrii boolean może 'odwracać' działanie swoich trybów, np. zamiast intersekcji robić różnicę, itp. Warto po prostu na próbę wybrać inny tryb booleana i zobaczyć jakie daje rezultaty (choć to raczej leczenie skutków a nie przyczyn, lepiej poprawić siatkę)
    6. Jeśli siatka jest bardzo gęsta (ma dużo trójkątów) to można ją zredukować (modifier decimate).
    7. jeśli rezultat operacji boolean po eksporcie do Cura lub innego slicera z jakiego korzystacie, generuje dziwny wydruk już po daniu "Preview" (podglądu wydruku), to znaczy że pewnie źródłowe kształty nie były szczelne, tj. miały otwory w siatce i wygenerowany obiekt też ma otwory w siatce, co psuje slicer.
    8. aby lepiej widzieć stan siatki obiektów, polecam w Blenderze włączyć "backface culling" (wtedy 'tylne' strony ścianek, np. te od środka cube, nie będą widoczne)

    Podsumowanie
    Program Blender pozwala bardzo łatwo modyfikować i poprawiać dowolne modele STL, na przykład takie ściągnięte z Thingiverse. Dodatkowo w Blenderze można robić operacje booleowskie na zaimportowanych modelach a modyfikator boolean wspiera nawet skomplikowane kształty, jak również radzi sobie z dużymi ilościami trójkątów. Pozwala to szybko dopasować do siebie dwa obiekty, tak że np. po wydrukowaniu pasują do siebie na wcisk.
    W przypadku opisanym w tym temacie zasadniczo tylko zastosowałem raz boolean a potem przeskalowałem w dół fragment modelu i wszystko do siebie pasowało idealnie za pierwszym razem. To tylko dwie operacje, których można nauczyć się w kilka minut a jak widać rzeczywiście wręcz uratowały wydruk i model.

    Cool! Ranking DIY
    About Author
    p.kaczmarek2
    Level 25  
    Offline 
  • #3
    p.kaczmarek2
    Level 25  
    Jest 'Fill Holes', musicie sobie sprawdzić w zależności od wersji jaki na to skrót jest, ja to włączam wciskając spację i wpisując nazwę operacji (niezawodny sposób jak nie pamiętamy skrótu).
    W celu demonstracji Fill Holes usunę te ścianki:
    Blender/Boolean - Jak dopasować do siebie dwa elementy wydruku STL
    By zostały takie otwory:
    Blender/Boolean - Jak dopasować do siebie dwa elementy wydruku STL
    Operacja:
    Blender/Boolean - Jak dopasować do siebie dwa elementy wydruku STL
    Wygenerowane poprawki:
    Blender/Boolean - Jak dopasować do siebie dwa elementy wydruku STL
    Jeszcze można by zrobić im Triangulate by zamienić polygony na trójkąty, ale nie jest tak źle...
    chociaż jeśli chcemy mieć naprawdę dobrą siatkę to bym jednak polecam ręcznie sprawdzać.
    Po triangulacji:
    Blender/Boolean - Jak dopasować do siebie dwa elementy wydruku STL

    Siatka ogólnie powinna być szczelna, watertight, tzn. że jak sobie wyobrazimy, że do środka wlewamy wodę to woda "nie ma jak się wylać".

    PS: w ogóle ten obiekt domku z daszkiem na bazie którego zademonstrowałem booleana (i teraz fill holes) ma zbyt gęstą siatkę jak na wydruk 3D, nie potrzeba tylu trójkątów aż, to niepotrzebnie spowalnia slicer i resztę operacji w Blenderze, wszystko wolno działa. Można by zrobić automatycznie zmniejszyć ilość trójkątów (decimate) i by wyglądało tak samo. Ale już nie redukowałem tej ilości trójkątów wcześniej bo chciałem się przekonać, czy boolean da radę, i jak widać dał rade bez problemów.
  • #4
    VIGOR_PICTURES
    Level 20  
    Odnośnie automatycznego uzupełniania otworów w siatce: Po instalacji dodatku związanego z wydrukiem 3D, w przyborniku "3D Print" (dostępne z paska narzędzi - klawisz n na klawiaturze) jest guzik zwany "Make manifold". Działa to czasem lepiej czasem gorzej. Nic w każdym razie nie zastąpi "ludzia", który wie co robi i ręcznie zaceruje otwór.
    A do autora, jak zwykle bardzo porządny poradnik związany z Blenderem i wydrukiem 3D.
    Myślałeś o zaczęciu nagrywania swoich poczynań? Dla początkujących może być dodatkową pomocą obejrzenie materiału wideo.