Mesh Generation/pl

Siatki są sposobem modelowania kształtów 3D jako zestawu podstawowych ścian, ograniczonych krawędziami i punktami. Zwykle nie jest to standardowa reprezentacja kształtów w systemach CAD 3D, ponieważ nie pozwala na modelowanie dokładnych geometrii w postaci parametrycznych krzywych i powierzchni (takie reprezentacje nazywane są B-rep). Niemniej jednak ich prostota (do reprezentacji kształtu używa się jedynie punktów, odcinków i prostych ścian) sprawiła, że siatki stały się preferowaną reprezentacją w wielu zastosowaniach, takich jak renderowanie, cięcie na warstwy do druku 3D itp. Celowo nie wspomnieliśmy o wykorzystaniu siatek do analiz MES (Metoda Elementów Skończonych), ponieważ w tym przypadku siatki nie są już używane ze względu na swoją prostotę, lecz ze względu na zdolność przenoszenia i propagowania informacji w obrębie brył.

Większość parametrycznych programów CAD oferuje możliwości generowania i manipulowania siatkami, a FreeCAD nie jest tu wyjątkiem. FreeCAD zawiera środowisko pracy przeznaczone do pracy z siatkami, które oferuje wiele użytecznych narzędzi i funkcjonalności; my skupimy się na tym, które umożliwia generowanie siatek z kształtów FreeCAD: Siatka z kształtu środowiska Część.

Narzędzie umożliwia użycie czterech różnych algorytmów generowania siatek, a mianowicie: Standard, GMSH, NetGen oraz Mefisto. Skupimy się na pierwszym z nich, ponieważ trzy pozostałe są przeznaczone do siatek analiz MES i nie są rozwiązaniami wbudowanymi.

Standardowy algorytm

Celem tej strony jest przedstawienie ogólnego wglądu w to, jak działa generowanie siatek i jak można je konfigurować z wysokopoziomowego punktu widzenia, bez wchodzenia w szczegóły złożonych operacji zachodzących podczas tworzenia siatek. Algorytm standardowy oznacza algorytm generowania siatek dostarczany przez OCCT, geometryczne jądro modelowania FreeCAD. Algorytm ten generuje niestrukturalne siatki powierzchniowe i w zasadzie działa w dwóch krokach:

  1. Krawędzie kształtów są najpierw dyskretyzowane, co oznacza, że krzywe są przekształcane w polilinie (a więc zamknięte kontury stają się wielokątami),
  2. Następnie powierzchnie są teselowane, co oznacza, że są pokrywane figurami geometrycznymi — w naszym przypadku trójkątami.

Generowanie siatki z kształtu jest operacją złożoną i wiąże się z ukrytymi działaniami oraz parametrami, które mogą prowadzić do zachowań niełatwych do zrozumienia, w szczególności w odniesieniu do ustawiania trzech parametrów, do których mamy dostęp. Przyjrzyjmy się ich wpływowi na praktycznych przykładach, aby lepiej zrozumieć, jak definiować dobre konfiguracje i ostatecznie generować dobre siatki.

Odchylenie kątowe

Odchylenie kątowe jest wykorzystywane głównie na etapie dyskretyzacji krawędzi. Parametr ten pomaga zapewnić gładkość polilinii reprezentujących krzywe, zapobiegając powstawaniu ostrych kątów pomiędzy kolejnymi odcinkami linii. Dyskretyzacja krawędzi ma duży wpływ na ogólne generowanie siatek kształtów, ponieważ punkty (w miejscach przejścia między odcinkami), wygenerowane na tym etapie, służą jako węzły bazowe do budowy trójkątów, które następnie są wykorzystywane do teselacji powierzchni ograniczonych przez krawędzie.

Odchylenie kątowe i liniowe jak przedstawione w dokumentacji OCCT
Odchylenie kątowe i liniowe jak przedstawione w dokumentacji OCCT

Wartość tego parametru jest względna w stosunku do rozmiaru kształtu poddawanego generowaniu siatki: niezależnie od wielkości kształtu, duża wartość kąta może prowadzić do ostrych przejść między kolejnymi odcinkami linii, natomiast niska wartość zapewni płynniejsze przejścia.

Aby zilustrować zachowanie algorytmu standardowego w odniesieniu do odchylenia kątowego, zmieńmy wartość tego parametru podczas generowania siatki dla prostej powierzchni kołowej. Ponieważ parametr odchylenia powierzchni również odgrywa rolę w tym procesie, został on ustawiony na wartość wystarczająco wysoką, aby uniknąć jakiejkolwiek interferencji z naszą demonstracją: średnica naszego koła wynosi 50 mm i taka sama jest wartość odchylenia powierzchni.

Na górze: Oryginalna okrągła ścian Brep (niebieska) ograniczona zewnętrznym okręgiem (czerwony)

Na dole: Górny lewy detal

Odchylenie powierzchni: 50 mm

Odchylenie kątowe: 90°

Odchylenie powierzchni: 50 mm

Odchylenie kątowe: 30°

Odchylenie powierzchni: 50 mm

Odchylenie kątowe: 5°

Zmniejszenie odchylenia kątowego ma istotny wpływ na wygląd siatki, ograniczając ostre kąty przy reprezentacji konturu ściany. Choć pozwala to zwiększyć wierność siatki względem oryginalnego kształtu, nie zapewnia bezwzględnej wartości maksymalnego dopuszczalnego odchylenia pomiędzy nimi.

Odchylenie powierzchni

W tym celu lepszym wyborem jest odchylenie powierzchni. Parametr ten pozwala określić maksymalne odchylenie, jakie siatka może mieć w porównaniu z oryginalnym kształtem. Wróćmy do naszej powierzchni kołowej, aby zrozumieć jego wpływ.

Odchylenie powierzchni: 50 mm

Odchylenie kątowe: 90°

Odchylenie powierzchni: 10 mm

Odchylenie kątowe: 90°

Odchylenie powierzchni: 1 mm

Odchylenie kątowe: 90°

Odchylenie powierzchni: 0.1 mm

Odchylenie kątowe: 90°

Wpływ odchylenia powierzchni jest wyraźnie widoczny i łatwy do zrozumienia na naszym przykładzie, ze względu na jego charakter bezwzględny. Jest szczególnie zauważalny w pobliżu krawędzi: duże wartości (50 mm - 10 mm) nie mają wpływu, natomiast przy wartości 0,1 mm dodawanych jest wiele trójkątów, aby zapewnić wymaganą tolerancję.

Połączony wpływ odchylenia kątowego i powierzchni

Zmniejszenie zarówno odchylenia kątowego, jak i odchylenia powierzchniowego ma podobny wpływ na siatkę. Ta nadmiarowość może prowadzić do niepożądanych zachowań przy użyciu niewłaściwych kombinacji parametrów: poniższy przykład pokazuje generowanie zbędnych, dziwnie ukształtowanych trójkątów, gdy zarówno odchylenie kątowe, jak i odchylenie powierzchni ustawione są na niskie wartości.

Odchylenie powierzchni: 10 mm

Odchylenie kątowe: 30°

Odchylenie powierzchni: 3 mm

Odchylenie kątowe: 7°

Odchylenie powierzchni: 1 mm

Odchylenie kątowe: 5°

Odchylenie powierzchni: 0.1 mm

Odchylenie kątowe: 1°

Pierwsza synteza

Powyższe przykłady pokazują, że dzięki parametrom odchylenia kątowego i odchylenia powierzchni można uzyskać siatki mieszczące się w wymaganej tolerancji względem oryginalnego kształtu oraz osiągnąć pożądaną gładkość przy odwzorowywaniu krzywych. Wskazują one również na znaczenie odpowiedniej konfiguracji parametrów i to, że samo ustawienie niskich wartości niekoniecznie prowadzi do najlepszych siatek.

Diabeł tkwi w szczegółach

Choć nasz kształt kołowy dobrze ilustrował wpływ parametrów na generowanie siatki, jest on niestety zbyt prosty w porównaniu z rzeczywistymi wyzwaniami związanymi z siatkowaniem. Częstym przypadkiem jest obecność drobnych detali na większych kształtach. Dodajmy więc detal do naszego kształtu kołowego: mniejszą krawędź kołową u góry.

Okrągła ściana BRep (niebieska) z okrągłym detalem na górze
Okrągła ściana BRep (niebieska) z okrągłym detalem na górze
Zbliżenie na okrągły detal
Zbliżenie na okrągły detal

Odchylenie kątowe /

Odchylenie powierzchni

90° 30°
5 mm
Liczba trójkątów 10 32 149
1 mm
Liczba trójkątów 18 34 188
0.1 mm
Liczba trójkątów 53 59 207

Odchylenie kątowe /

Odchylenie powierzchni

90° 30°
5 mm
Liczba trójkątów 10 32 149
1 mm
Liczba trójkątów 18 34 188
0.1 mm
Liczba trójkątów 53 59 207

Zmniejszenie odchylenia kątowego skutkuje szybkim wzrostem wierności siatki względem oryginalnego kształtu. Odbywa się to kosztem szybkiego wzrostu liczby trójkątów. Z kolei zmniejszenie odchylenia powierzchni pozwala generować siatki spełniające jedynie wymaganą tolerancję, używając tyle trójkątów, ile potrzeba, lecz gładkość odwzorowania krzywych może być przy tym prymitywna.

Ponownie można zauważyć nadmiarowość między wpływem odchylenia kątowego i odchylenia powierzchni oraz fakt, że pewien rodzaj zbieżności względem wierności siatki jest osiągany, nawet przy dodawaniu większej liczby trójkątów, szczególnie przy zmniejszaniu odchylenia kątowego. Podkreśla to po raz kolejny, że lepiej jest znaleźć odpowiednią konfigurację parametrów niż po prostu ustawiać niskie wartości.

Przykład ukrytego parametru

Wysokie wartości odchylenia powierzchni i kątowego nie prowadzą do utraty detalu u góry naszego kształtu podczas generowania siatki. Jest to przykład efektu ukrytych operacji i parametrów w algorytmach generowania siatek: niektóre typy krawędzi, w tym krawędzie kołowe, mają dolny limit punktów w swojej reprezentacji poliliniowej. W tym przypadku minimalna liczba 4 punktów skutkuje przynajmniej trzema odcinkami w polilinii. Można to zobaczyć, generując siatkę dla podobnego kształtu, ale zamiast krzywej kołowej użyto splajnu do modelowania detalu u góry. Wówczas minimalna liczba punktów nie obowiązuje i detal jest całkowicie pomijany przy użyciu wysokich wartości odchylenia powierzchni.

Geometryczna natura detalu Kształt Siatka Zbliżenie
Łuk okręgu
Krzywa splajnu

Druga synteza

Te przykłady, w tym detale w obrębie większych kształtów, które są bardzo częste w rzeczywistości, pokazują, że dostosowanie precyzji dyskretyzacji do rozmiaru obiektów podlegających siatkowaniu może prowadzić do lepszego kompromisu między dokładnością siatki a jej złożonością. Czasami może to być wręcz konieczne, na przykład przy wykonywaniu zautomatyzowanych operacji siatkowania, gdy użytkownik nie może samodzielnie ustawić odchylenia powierzchni w zależności od wielkości kształtu.

Względne odchylenie powierzchni

Rozwiązaniem jest ustawienie odchylenia powierzchni jako funkcji długości krawędzi, co realizuje się przy użyciu parametru względnego odchylenia powierzchni. Zasada polega na skalowaniu dopuszczalnej tolerancji między siatką a oryginalnym kształtem w zależności od rozmiaru obiektu. Na przykład wartość 0,1 spowoduje odchylenie powierzchni wynoszące 10 cm dla krawędzi o długości 1 m oraz 1 m dla krawędzi o długości 10 m. Spójrzmy na wyniki dla naszego kształtu testowego.

Parametry względnego odchylenia powierzchni
Parametry względnego odchylenia powierzchni

Odchylenie powierzchni (względne)

& Odchylenie kątowe

Siatka Zbliżenie Większe zbliżenie
0.1 - 30°
0.001 - 30°

Ewolucja parametru odchylenia powierzchni (który jest teraz parametrem względnym, więc jednostka ‘mm‘ przy jego ustawianiu w FreeCAD może być myląca) działa w ten sam sposób zarówno dla długich, jak i krótkich krawędzi. Skutkiem ubocznym stosowania względnego odchylenia powierzchni jest to, że nie gwarantuje ono bezwzględnego maksymalnego odchylenia między siatką a oryginalnym kształtem.

Teselacja powierzchni

Nasze pierwsze rozważania koncentrowały się na kształtach i konturach, ponieważ są to pierwsze obiekty poddawane dyskretyzacji i mają znaczący wpływ na generowanie siatek powierzchni. Zagłębmy się teraz nieco bardziej w teselację powierzchni przy użyciu algorytmu standardowego. Algorytm ten stosuje triangulację Delaunaya, wykorzystując algorytm Watsona. Triangulacja Delaunaya (nazwana na cześć rosyjskiego matematyka) to sposób generowania punktów na powierzchni w taki sposób, aby trójkąty utworzone z tych punktów nie przecinały się nawzajem.

Dodatkowo algorytm optymalizuje generowanie trójkątów tak, aby kąty nie były zbyt małe, dzięki czemu trójkąty mają odpowiedni kształt. Należy jednak pamiętać, że, jak często bywa, praktyczna implementacja w celu rozwiązywania rzeczywistych problemów jest skomplikowana i wiąże się z wieloma wyzwaniami. Algorytmy generowania siatek w OCCT zostały zaprojektowane do siatkowania kształtów tworzonych przez modeler BRep, najczęściej projektów mechanicznych i inżynierskich, które były pierwotnymi przypadkami użycia, dla których geometryczny modeler został opracowany.

Dlatego do najczęściej spotykanych typów powierzchni w projektach mechanicznych, np. płaskich, cylindrycznych, stożkowych, sferycznych itp., stosuje się dedykowane procedury teselacji powierzchni, aby zapewnić wydajność i optymalną teselację. Skoro ustawienia parametrów wpływają na wszystkie typy powierzchni, przyjrzyjmy się ich oddziaływaniu na teselację powierzchni B-spline, aby uniknąć uprzedzeń wynikających z wcześniej ustalonych strategii teselacji.

[[File:3D_orig_vignette.png none|alt=Kształt BRep z powierzchniami BSpline|Kształt BRep z powierzchniami BSpline]]

Odchylenie kątowe /

Odchylenie powierzchni

90° 30°
5 mm
Liczba trójkątów 196 666 9730
1 mm
Liczba trójkątów 376 790 26128
0.1 mm
Liczba trójkątów 3002 3262 36366

Wnioski są zgodne z tym, co zaobserwowaliśmy w przypadku ścian: odchylenie kątowe ma znaczący wpływ na wygląd siatki, natomiast odchylenie powierzchni gwarantuje określony poziom wierności przy najniższym koszcie pod względem złożoności siatki, ale generuje widoczne płaszczyzny. Dlatego konieczne jest znalezienie kompromisu między jakością siatki pod kątem wierności i gładkości a rozmiarem siatki wyrażonym liczbą trójkątów.

Jeśli jesteś ciekawy wpływu zwiększania liczby trójkątów, możesz się o tym przekonać, eksperymentując z parametrem Minimalne odchylenie kątowe w swoim ulubionym oprogramowaniu (Edycja → Preferencje → Część/Projekt Części → Widok kształtu), który określa wierność siatek używanych do wizualizacji. Zbyt niska wartość spowoduje wydłużenie czasu ładowania i szarpane manipulowanie złożonymi kształtami.

Innym sposobem na ocenę wpływu parametrów jest przekształcenie naszych siatek w rzeczywiste obiekty za pomocą druku 3D. Drukowanie żywicą (SLA) z wysokością warstwy 0.05 mm ujawni niektóre detale.

Odchylenie powierzchni &

Odchylenie kątowe

0.1mm - 90° 5mm - 5° 0.1mm - 5°
Obraz powierzchni
Obraz powierzchni
Liczba trójkątów 3002 9730 36366

Te zdjęcia zbliżeniowe pokazują, że skupienie się wyłącznie na odchyleniu powierzchni, nawet przy niskich wartościach, może prowadzić do widocznych artefaktów na powierzchni części (ze względu na wysoki poziom powiększenia, wpływ siatkowania nie powinien być mylony z warstwami druku, które również są widoczne na zdjęciach jako linie izometryczne). Trudno jest odróżnić wizualnie siatkę z 9730 trójkątów od tej z 36366 trójkątów. Jeśli kryterium stanowi wygląd, należy preferować lżejszą siatkę (487 kB vs 1.8 MB), podczas gdy druga zapewnia, że tolerancja 0.1 mm jest zachowana we wszystkich miejscach części.

Ostatnia synteza

Jako synteza, algorytmy generowania siatek są z natury skomplikowane, a odchylenie kątowe i odchylenie powierzchni współdziałają w sposób złożony, trudny do pełnego zrozumienia. Można by ulec pokusie, aby zmniejszyć te parametry tak, aby siatka idealnie dopasowała się do oryginalnego kształtu BRep. Doprowadziłoby to do powstania siatek złożonych z wielu trójkątów, które będą czasochłonne w generowaniu, przetwarzaniu w dalszych aplikacjach oraz będą skutkować dużymi plikami.

Podejścia do ustawiania parametrów

Z tego, co zaobserwowaliśmy, typowe podejście przy ustawianiu parametrów polega na tym, aby najpierw ustawić odchylenie powierzchni w zależności od wymaganej wierności siatki względem oryginalnego kształtu, jeśli taka istnieje. Następnie parametr odchylenia kątowego można wykorzystać do dostosowania gładkości dyskretyzowanych powierzchni do wymaganego poziomu, na przykład pod kątem wizualnym lub dotykowym. Innym podejściem jest ustawienie wystarczająco niskiego odchylenia kątowego w celu osiągnięcia pożądanej gładkości, bez gwarancji spełnienia bezwzględnej tolerancji geometrycznej, często kosztem bardziej złożonej siatki. W przypadkach, gdy nie jest wymagana żadna tolerancja wierności, opcją jest zastosowanie względnego odchylenia powierzchni, które dostosuje rozmiar elementów siatki do oryginalnego kształtu oraz wielkości detali.

Ustawienie własnej konfiguracji generowania siatek jako domyślnej we FreeCAD

Jak wyjaśniono w sekcji Preferencje na wiki funkcji, możesz zdefiniować swoje preferowane wartości odchylenia powierzchni, odchylenia kątowego oraz względnego odchylenia powierzchni jako domyślne, dzięki czemu większość kształtów możesz siatkować bez zastanawiania się nad tym!

Domyślne ustawienia dla standardowych parametrów algorytmu
Domyślne ustawienia dla standardowych parametrów algorytmu

Eksportuj swoje siatki

Gdy siatki zostaną wygenerowane przy użyciu odpowiednich parametrów, możesz je ostatecznie wyeksportować za pomocą narzędzia Eksport siatki do pliku w wybranym formacie spośród wielu opcji oferowanych przez FreeCAD!