projektowanie parametryczne, parametric design
Home > Grasshopper, O co chodzi > Grasshopper ? Podstawy cz. 1

Grasshopper ? Podstawy cz. 1

W statystykach odwiedzin widzę, że ten tutorial jest najczęściej odwiedzanym spośród poradników nt. Grasshopper’a. Prosiłbym czytelników, o wpisanie w komentarzach powodu dla którego nie przechodzą do tutoriala 2 3 i 4. Pomoże mi to lepiej dostosować poziom trudności następnych poradników.

Z góry dzięki,
MZ

Grasshopper ? Podstawy cz. 1



Grasshopper ? Podstawy cz. 2
Grasshopper ? Podstawy cz. 3
Grasshopper ? Poradnik cz. 1 ? Atraktory /średnio zaawansowany/

Czym jest grasshopper ?

Grasshopper to plug-in dla Rhino stworzony w celu wprowadzenia ?pod strzechy?
tego programu możliwość projektowania parametrycznego. Wtyczka jest darmowa (w przeciwieństwie do samego Rhino) i jest do pobrania na oficjalnej stronie Grasshopper’a

Więcej na temat samego projektowania parametrycznego (lub inaczej komputacyjnego) znajdziecie w poście kolegi Przemka Jaworskiego


Interface ? czyli do czego służą te wszystkie komponenty ?

Po uprzednim zainstalowaniu Grasshopper’a, włączamy Rhino, wpisujemy w wiersz poleceń komendę ?Grasshopper?. Otwiera się nowe okno ? to podstawowe okno wtyczki. Na obrazku widzimy : po lewej puste ?płótno? (tłumaczenie z angielskiego ?canvas?, dalej będę się posługiwać słowem ?płótno? do określania pola roboczego w Grasshopperze), po prawej pusty projekt w Rhino. Nie będę się rozpisywał na temat samego Rhino i jego funkcji, niemniej jednak jeśli byście chcieli się czegoś dowiedzieć, pytajcie w komentarzach.

GHtut1il1Podstawowe okno wtyczki (po lewej)
GHtut1il1Narzędzia w programie


Pod paskiem menu znajdziemy :

Kategorie komponentów

  • Params ? komponenty przedstawiające obiekty, przedziały liczb, itp.
  • Math ? działania matematyczne
  • Sets ? działania na listach danych
  • Vector ? wektory i działania na wekorach
  • Curve ? kreślenie krzywych i działania na krzywych
  • Surface ? płaszczyzny
  • Mesh ? siatki (triangulacje, diagram Woronoja itp.)
  • Intersect ? komponenty analizujące obiekty przecinające/przenikające się
  • Xform ? przekształcenia obiektów [obrót (praktycznie zawsze wyrażany w radianach), skalowanie, odbicia lustrzane]
  • Extra ? dodatkowe, często tworzone przez samych użytkowników (standardowo jest tam pusto, wgrać je można za pomocą plików z rozszerzeniem .gha)

U mnie, jak widzicie na obrazku jest jeszcze gHowl ? jest to zestaw darmowych komponentów służących interakcji z innymi programami (m.in. Excel i OpenOffice Calc)

Komponenty wg rodzaju

Nie będę opisywał wszystkich kompontentów (jest ich sporo jak na jeden tutorial), często wystarczy sama nazwa żeby się zorientować do czego służy dany komponent. Jeśli nie ? polecam słownik, wikipedię lub ewentualnie po umieszczeniu na ?płótnie? komponentu, kliknąć prawym klawiszem i na dole znaleźć Help :)

GHtut1il1Po kliknięciu prawym klawiszem na komponent możemy zawsze skorzystać z pomocy, która opisuje pokrótce działanie tego komponentu


Pasek funkcji podstawowych

Na tym pasku znajdują się przyciski służące do : opisywania projektu bezpośrednio na płótnie, skalowania widoku, włączania i wyłączania komponentów (enable i disable), włączania i wyłączania podglądu działania komponentu (standardowo włączony), ponownego uruchomienia obliczania algorytmu, blokowania obliczania, zmiany podglądu, zmiany kolorystyki podglądu i klawisz który najbardziej lubimy używać (z reguły sygnalizuje koniec pracy :) ) – ?Bake?. Większość tych funkcji znajdziemy także po kliknięciu na dany komponent prawym klawiszem.

Na pasku znajduje się także przycisk ?Cluster?, który na razie (build 0.8.0004) jest w fazie eksperymentalnej, w skrócie mówiąc ? służy grupowaniu wielu komponentów w jeden ?megakomponent?.

Umieszczanie komponentów na płótnie; rodzaje obiektów


Aby cokolwiek zacząć projektować w Grasshopperze musimy umieścić potrzebny komponent na płótnie. Możemy to zrobić w dwojaki sposób : znaleźć komponent pod paskiem menu wertując kategoriami, lub lewym dwuklikiem na płótnie wywołać okienko wyszukiwarki w którym wpisując np. ?point? otrzymujemy komponenty związane z punktami. Ten drugi sposób jest oczywiście dużo szybszy i łatwiejszy, jednak na początek proponuję wyszukiwać komponenty samemu ? da nam to pojęcie o strukturze programu, a także poznamy wszystkie możliwości jakie daje nam Grasshopper.

Obiekty którymi operujemy w Grasshoperze mogą być dwojakiej natury : referencyjne lub parametryczne.

Obiekty referencyjne to obiekty zapisane w Rhino, Grasshopper nie ma możliwości wpływania na te obiekty, czerpie jedynie informacje na ich temat (położenie, kształt, krzywizna itp.) powołując w swoim środowisku ich instancje. Korzystając z obiektów referencyjnych, nie zapominajmy zapisywać naszych projektów w Rhino ? bez obiektów z Rhino Grasshopper nic nie zdziała.

Obiekty parametryczne to obiekty ?naturalne? dla Grasshopper’a, informacje o nich zapisywane są w plikach ghx tworzonych przez wtyczkę. W wypadku kiedy korzystamy tylko z takich obiektów, nie musimy zapisywać efektu naszej pracy w Rhino. Wszystkie dane są przechowywane w pliku ghx.

Zdecydowanie polecam tak kombinować, aby nie musieć korzystać z obiektów referencyjnych. Dzięki temu nasz algorytm będzie bardziej elastyczny i elegancki.

GHtut1il2Komenda ?Bake? : Na obrazku widać jak z punktu parametrycznego(czerwony krzyżyk) w Grasshopperze można zrobić punkt w Rhino (który można przywołać w Grasshopperze komponentem odnoszącym się do niego, tworząc punkt referencyjny)



Pierwsze kroki


Po tym krótkim wstępie możemy zająć się tworzeniem pierwszego projektu parametrycznego w Grasshopperze.

Ćwiczenie nr 1 : Tworzenie krzywej (polilinii?) z danych punktów.


Na płótnie umieszczamy komponent ?point?. Klikamy prawym klawiszem na niego, wybieramy ?Manage point collection?. W oknie, które się pojawiło klikamy na znak ?+? aby dodać kolejne punkty. Kiedy już będzie parę punktów na liście, zaznaczamy drugi na liście i edytujemy jego współrzędne (pierwszy możemy pozostawić ze współrzędnymi 0;0;0). Tak samo robimy z kolejnymi punktami. W ten sposób stworzyliśmy punkty parametryczne. Klikamy ?OK? i obserwujemy w Rhino efekt tego działania. Następnie znajdujemy w zakładce curve->spline komponent polyline. Wrzucamy go na płótno i łączymy z punktami(przeciągając lewym klawiszem myszki z wyjścia komponentu point do wejścia ?v? komponentu polyline). W tym momencie zobaczysz, że w Rhino oprócz krzyżyków (naszych punktów) będzie krzywa łącząca punkty. Kolejność w jakiej je wpisywałeś wcześniej ma wpływ na kolejność ich łączenia. Na moim obrazku widać, że krzywa jest krzywą zamkniętą (bez końców), aby tak zrobić ze swoją, kliknij prawym klawiszem na parametr ?c? polilinii i zaznacz ?set boolean? ? true.

Możesz teraz poeksperymentować z opcjami z paska funkcji podstawowych, np. zaznacz komponent ?point? i kliknij ?disable preview? (ta głowa z czarną przepaską na oczach). Spróbuj też oczywiście wyeksportować krzywą do Rhino ? zaznacz komponent ?polyline? i kliknij na pasku funkcji podstawowych ?bake? (jajko na patelni).


Ćwiczenie 2 : Wprowadzenie do list danych (prawdopodobny temat następnego tutoriala)

Przy skomplikowanych obiektach 90% czasu zajmuje ?posortowanie? list danych, tak aby efekt finalny był tym czego oczekujemy, przy okazji optymalizując algorytm tak żeby zużywał jak najmniej mocy obliczeniowej procesora (a ten potrafi się dobrze ?zamulić?, kiedy ma do obliczenia np. diagram Woronoja dla kilkuset punktów na powierzchni sfery).

Mając nieraz i po parę setek czy nawet tysięcy obiektów (punkty, linie, bryły) musimy dobrze panować nad tym jak je widzi Grasshopper. W tym ćwiczeniu zilustruję na czym “mniej więcej” polega zarządzanie listami danych.

  1. Wrzucamy na płótno dwa komponenty ?point?. Żeby nie ?bawić się? w wypisywanie ich współrzędnych, stwórzmy dwa rzędy punktów bezpośrednio w Rhino (komenda points); w jednym rzędzie 4, w drugim 5.
  2. Teraz klikamy prawym klawiszem na jeden z komponentów ?pt? (point) i zaznaczamy ?set multiple points?. Zaznaczamy po kolei w oknie Rhino 4 punkty w pierwszym rzędzie. Tak samo robimy z drugim komponentem zaznaczając tym razem pięć punktów w drugim rzędzie.
  3. Umieszczamy na płótnie Grasshopper’a komponent ?line? (curve->primitive->line); następnie łączymy wejście ?a? z wyjściem pierwszego ?pt? , a wejście ?b? z wyjściem drugiego ?pt?.
  4. Otrzymaliśmy w ten sposób pięć linii, z tym że dwie z tych linii łączą się w ostatnim punkcie pierwszego rzędu. Tu dochodzimy do meritum tego ćwiczenia, bowiem chcemy żeby punkty łączyły się na zasadzie ?każdy z pierwszego rzędu z każdym z drugiego rzędu(i na odwrót)?… co zrobić ?
  5. Klikamy prawym klawiszem na komponent ?line?, znajdujemy opcję ?cross reference? i klikamy w nią.
  6. Teraz mamy połączone punkty w sposób w jaki chcieliśmy.
GHtut1il2Poszczególne etapy ćwiczenia

Oprócz ?cross reference? są też inne opcje :

?longest list?(standardowy) łączy elementy pierwszego zbioru z drugim zbiorem tyle razy ile jest obiektów w większym zbiorze (przy czym łączy elementy drugiego zbioru bez odpowiadającej ?pary? w mniejszym zbiorze z ostatnim elementem mniejszego zbioru). Nie ma zasadniczo znaczenia czy w zbiorach są punkty czy inne obiekty.

?shortest list? łączy obiekty mniejszego zbioru z większym, tylko do momentu kiedy w mniejszym zbiorze są jeszcze elementy odpowiadające tylko jednemu elementowi większego zbioru.

Nie spodziewałem się napisać kiedykolwiek regułek brzmiących jak te z podręcznika do matematyki (ble). Ulży Wam jednak w cierpieniu wypróbowanie tego na własną rękę, jest to jedna z najważniejszych rzeczy w Grasshopperze. (99% tego co zrobicie kiedykolwiek w tym programie, da się na 100% zrobić w inny sposób, jednak te podstawy są wyjątkiem od tej reguły)


Podsumowanie


Mam nadzieję, że pomógł Wam mój pierwszy tutorial, wprowadzający w świat ?konika polnego?. Piszcie w komentarzach co chcielibyście zobaczyć w następnym. Może podwyższyć poziom trudności ? Dołączyć wideo ? Więcej zdjęć, mniej tekstu ?

Pozdrawiam,

MZ