Temat 10: Tworzenie brył obrotowych poprzez obrót krzywych (lathe). W poprzednim temacie wymodelowaliśmy kieliszek obracając krzywą Beziera wokół osi Y. Zastosowaliśmy w tym celu polecenie lathe. Krzywa Beziera (bezier_spline) jest najbardziej złożoną postacią krzywej mogącą wystąpić w tym poleceniu. Najprostszym typem krzywej jest łamana łącząca dane punkty (linear_spline). Zapis polecenia tworzącego bryłę obrotową ma postać: lathe { ilość_punktów lista_punktów_krzywej własności_materiału } Punkty tworzące krzywą leżą w płaszczyźnie XY, zatem ich współrzędne z są zerami i nie uwzględniamy ich w zapisie. Ćwiczenie 059 W ćwiczeniu tym utworzymy krzywą powstałą poprzez obrót łamanej łączącej punkty: (0,0), (2,1), (5,4), (5,5), (1,7), (1,10) wokół osi Y (patrz rysunek po prawej). Wpisz poniższy kod i zrenderuj scenę: (0,0) (1,10) (1,7) (2,1) (5,5) (5,4) Grafika 3D program POV-Ray - 73 -
Nasza krzywa (a co za tym idzie również bryła) jest nieco kanciasta. Aby ją trochę wygładzić zamiast parametru linear_spline można użyć parametru quadratic_spline (krzywa łącząca punkty będzie przybliżana krzywymi stopnia drugiego). Ćwiczenie 060 W kodzie poprzedniego ćwiczenia zastąp parametr linear_spline przez quadratic_spline i zrenderuj scenę: Zauważ, że nasze naczynie pozbawione jest dna. Stało się tak dlatego, że pierwszy punkt stał się punktem kontrolnym i początek obracanej linii jest teraz w punkcie (2,1). Aby tego uniknąć wystarczy przed punkt początkowy (1,1) wstawić punkt kontrolny (tym razem (0,-1)) i oczywiście zwiększyć podaną liczbę punktów do 7: Grafika 3D program POV-Ray - 74 -
Wektor łączący dodany punkt kontrolny (0,-1) z punktem początkowym (0,0) jest styczny do tworzonej krzywej w punkcie (0,0). Ponieważ położony jest on w pionie, więc u dołu bryły pojawił się czubek. Aby wygładzić dół naczynia wstawmy punkt leżący na tym samym poziomie, co punkt początkowy (0,0). Niech to będzie (-2,0): Ćwiczenie 061 Można jeszcze bardziej wygładzić krzywą stosując parametr cubic_spline, czyli krzywe stopnia trzeciego: Tym razem obcięło nam szyjkę: krzywa łączy punkty od drugiego do przedostatniego, zatem punkt (1,10) nie został wykorzystany (stał się drugim punktem kontrolnym). Grafika 3D program POV-Ray - 75 -
Aby odzyskać szyjkę musimy na końcu listy punktów dodać jeszcze jeden punkt. Niech to będzie punkt (1,12). Oczywiście liczba punktów zwiększy się do 8: Wybór innego punktu kontrolnego (np. (5,12)) może zmienić nieco kształt szyjki: Oczywiście najgładsze linie i najbardziej dokładne kształty uzyskamy stosując krzywe Beziera, jak to miało miejsce przy modelowaniu kieliszka. Grafika 3D program POV-Ray - 76 -
Ćwiczenie 062 Nieco inaczej sprawa przedstawia się w przypadku obrotu krzywych zamkniętych (to jest takich, w których koniec pokrywa się z początkiem) Przy nieco zmienionych ustawieniach kamery dokonajmy obrotu kwadratu (patrz rysunek) wokół osi Y: (4,7) (2,5) (6,5) (4,3) (0,0) Również tym razem przy zmianie parametru linear_spline na quadratic_spline lub cubic_spline trzeba dodać dodatkowe punkty kontrolne: quadratic_spline cubic_spline W tym przypadku krzywa stała się gładsza, a bryła bardziej zbliżona do torusa. Grafika 3D program POV-Ray - 77 -
Ćwiczenie 063 Nadszedł właściwy moment, aby wymodelować kieliszek i napełnić go płynem. Kieliszek utworzymy podobnie, jak w ćwiczeniu 058, ale tym razem ważne będzie od którego punktu zaczniemy rysowanie krzywej Beziera. Uruchom program KrzywaBeziera. Kliknij drugi przycisk na belce narzędziowej i zaznacz opcję Ustaw punkt <0,0>. Kliknij w białym obszarze roboczym. Ukaże się układ współrzędnych. Zaznacz opcję Ustaw punkt <1,1> i kliknij w I ćwiartce tego układu. Masz zaznaczony kwadrat o boku 1 (por. ćw. 58). Teraz kliknij pierwszą ikonę i przycisk [Utwórz Krzywą]. W trybie pracy Edycja klikaj dwukrotnie kolejno w każdym punkcie kontrolnym tworzącym krzywą. Pierwszy musi być punkt dna czaszy kieliszka położony na osi Y (ten w kolorze zielonym). Ułatwi to nam wygenerowanie kodu zawartości kieliszka. Kształt krzywej możesz dopasować przeciągając czerwone punkty kontrolne. Postaraj się osiągnąć efekt zbliżony do poniższego: Kliknij trzeci przycisk na belce narzędziowej. Zaznacz opcję Utwórz całą scenę oraz Lathe i kliknij przycisk [Do schowka]. Kod sceny zostanie skopiowany. Wklej go do nowego pliku POV-Ray a i zapisz scenę. Nie zamykaj programu KrzyweBeziera. Kliknij ponownie pierwszy przycisk na belce narzędziowej i wybierz tryb pracy Usuwanie punktu. Usuń wszystkie punkty oprócz tych, które wyznaczają zawartość kieliszka (na naszym rysunku są to pierwsze trzy wstawione punkty): Grafika 3D program POV-Ray - 78 -
Teraz wybierz ponownie tryb pracy Edycja i zamknij krzywą (najlepiej tak, aby ciecz tworzyła menisk): Kliknij trzeci przycisk na belce narzędziowej. Odznacz opcję Utwórz całą scenę oraz Lathe i kliknij przycisk [Do schowka]. Kod zawartości kieliszka zostanie skopiowany. Wklej go do nowego pliku POV-Ray a pod poprzednim kodem i zapisz scenę. Usuń stary numer wersji i dokonaj zmian w kodzie tak, aby widoczny był cały kieliszek: Grafika 3D program POV-Ray - 79 -
Teraz ustalamy własności materiału kieliszka tak, aby miał on wygląd szkła: Grafika 3D program POV-Ray - 80 -
Ponieważ bryła odpowiadająca cieczy w kieliszku ściśle przylega do jego ścianek, więc nie jest widoczna (oprócz górnej powierzchni). Najniżej położonym punktem tej bryły jest punkt (0,1) (pierwszy na liście). Musimy zatem przesunąć bryłę w dół o 1 (do punktu (0,0)), przeskalować tak, by bryła w sposób niewidoczny się zmniejszyła i przesunąć o 1 w górę (we właściwe położenie): Wystarczy teraz zamiast koloru ustalić odpowiednie właściwości materiału dla cieczy w kieliszku: Grafika 3D program POV-Ray - 81 -
Na koniec wstawmy do naszej sceny cienki walec symbolizujący słomkę włożoną do cieczy w kieliszku: Ćwiczenie 064 Wzorując się na poprzednim ćwiczeniu utwórz scenę ze szklanym dzbankiem napełnionym wodą, po powierzchni której pływa lekka plastikowa piłeczka: Grafika 3D program POV-Ray - 82 -