Sprawozdanie Kreator brył elementarnych
Transkrypt
Sprawozdanie Kreator brył elementarnych
Politechnika Wrocławska Wydział Elektroniki Kierunek Automatyka i Robotyka Sprawozdanie Kreator brył elementarnych Autor: Tomasz Płatek Nr albumu: 163056 [email protected] Prowadzący: dr inż Bogdan Kreczmer 6 czerwca 2010 Wrocław 1 Cel projektu Celem projektu było stworzenie oprogramowania umożliwiającego modelowanie brył trójwymiarowych. 2 Założenia projektowe Aplikacja umożliwia tworzenie skomplikowanych obiektów trójwymiarowych na podstawie zestawu brył podstawowych lub wcześniej wygenerowanych. Efekty pracy mogą być zapisywane i odczytywane z plików. Program obsługiwany jest poprzez graficzny interfejs użytkownika. Aby uzyskać te efekty wybrano rozwiązania przedstawione w następnych podrozdziałach. 2.1 Graficzny interfejs użytkownika Graficzny interfejs użytkownika został zrealizowany przy użyciu biblioteki Qt4. Zaletami tego rozwiązania, które zdecydowały o wyborze, są: • Przenośność oprogramowanie między różnymi systemami operacyjnymi • Dobra dokumentacja i łatwy dostęp do dodatkowych materiałów szkoleniowych • Implementacja w języku c++ • Rozbudowany zestaw narzędzi wspomagający tworzenie GUI 2.2 Grafika trójwymiarowa Wszystkie aspekty programu związane z manipulację i wizualizacją obiektów trójwymiarowych zostały zrealizowane przy pomocy biblioteki vtk. Wybór tego rozwiązania był spowodowany następującymi zaletami: • Przenośność oprogramowanie między różnymi systemami operacyjnymi • Implementacja w języku C++ • Możliwość operowania na typach plików zgodnych z tą biblioteką 2.3 Sposób modelowania brył Metodą modelowania brył została wybrana technika CSG (ang. Constructive Solid Geometry). Polega ona na tworzeniu nowych brył poprzez operacje boolowskie na obiektach już istniejących. Wybrano ten sposób ponieważ wydaje się on najbardziej intuicyjny, przypominający pracę rzeźbiarza. Przykład zastosowania tej metody ilustruje rysunek 1. 1 Rysunek 1: Przykład zastosowania metody CSG.(Źródło: www.wikipedia.pl) 2.4 Sposób reprezentacji danych Do reprezentowania grafiki trójwymiarowej zostały wykorzystane voksle (odpowiednik pikseli w trójwymiarze). Wybór ten został podyktowany łatwością wykonywania operacji boolowskich na tym typie danych, pociąga jednak za sobą problem z wyświetlaniem grafiki w czasie rzeczywistym dla złożonych obiektów. Dodatkową zaletą jest obecność struktur danych tego typu w bibliotece vtk. 3 Implementacja Program został zaimplementowany w języku C++. Podstawowym obiektem jest bryła, która zawiera w sobie informacje o swojej wielkości i kształcie. Bryłą jest również narzędzie, jednak posiada ono dodatkowe funkcjonalności. Narzędzie może zmienić swój kształt oraz wykonać operacje na innej bryle. Następnym obiektem jest edytor, umożliwiający wykonywanie operacji na konkretnej bryle konkretnym narzędziem. Obiekt okno główne zapewnia graficzny interfejs użytkownika. Szczegółowa dokumentacja oraz diagram klas znajduje się w załączniku. 2 4 Funkcjonalność i interfejs Rozdział ten prezentuje opis graficznego interfejsu użytkownika wraz z przypisanymi funkcjami. Rysunek 2: Okno aplikacji po jej uruchomieniu. 4.1 Pole ”Przyciski Główne” Pole ”Przyciski Główne” zawiera następujące kontrolki: ”Suma”,”Różnica” oraz ”Iloczyn”. Naciśnięcie wybranego pola spowoduje wykonanie odpowiadającej mu operacji logicznej na zbiorach zajmowanych przez wybrane narzędzie oraz dotychczas stworzoną bryłę. 4.2 Zakładka ”Plik” Zakładka ”Plik” zawiera następujące przyciski: ”Otwórz”, ”Zapisz” oraz ”Zakończ”. Kontrolka ”Otwórz” powoduje wyświetlenie okna dialogowego wyboru pliku. Możliwe jest otwarcie pliku w formacie ”VTK XML image data” w postaci ”*.vti”. Pliki o innych rozszerzeniach nie są wyświetlane. Kontrolka ”Zapisz” powoduje wyświetlenie okna dialogowego wyboru pliku. Możliwe jest zapis pliku wyłącznie w formacie ”VTK XML image data”. Naciśnięcia przycisku ”Zakończ” kończy działanie programu bez zapisywania zmian. 3 4.3 Zakładka ”Bryła” Zakładka bryła zawiera trzy pola umożliwiające zmianę ich zawartości. Liczby te odpowiadają rozmiarowi obszaru roboczego (maksymalnym rozmiarom bryły). Pola umożliwiają wpisanie liczb całkowitych z zakresu od 0 do 99. 4.4 Zakładka ”Narzędzie” Zakładka narzędzie składa się z czterech pól: ”Rozmiar”, ”Położenie”, ”Typ” oraz ”Rotacja”. Pola te umożliwiają zmianę odpowiednich współrzędnych lub kształtu narzędzia. Pole ”Rotacja” przyjmuje wartości z zakresu od 0 do 360, a jednostką jest stopień. Pozostałe pola przyjmują wartości z zakresu od 0 do 99. Wybranie typu na ”Własne” spowoduje otwarcie okna dialogowego wyboru pliku w formacie ”VTK XML image data” z własnym kształtem narzędzia. Okno z otwartą zakładką narzędzie prezentuje rysunek 3 Rysunek 3: Zakładka narzędzie. 4.5 Okno widoku 3D Po uruchomieniu programu otwiera się również drugie okno prezentujące aktualny kształt bryły (kolor czerwony) oraz narzędzie (kolor zielony). Kliknięcie i przytrzymanie lewego przycisku myszki umożliwia obrót widoku, natomiast dla prawego przycisku efektem będzie przybliżanie lub oddalanie. 4 5 Przykłady uzyskanych efektów W tym rozdziale zaprezentowane zostaną przykładowe efekty pracy z aplikacją. Rysunek 4 prezentuje proste operacje wykonane na bryłach. Mianowicie, od sześcianu został odjęty mniejszy walec. Następnie w środku umieszczone zostało narzędzie w kształcie kuli. Kolejny rysunek 5 jest przykładem na to, jak w prosty sposób otrzymać ciekawy efekt. Prezentowany krasnoludek jest połączeniem dwóch stożków (ramiona i czapka), elipsoid (głowa i oczy) oraz sześcianu (nos). Ostatni rysunek 6 pokazuje możliwość wykorzystania zapisanego wcześniej własnego narzędzia. Rysunek 4: Przykład podstawowych operacji. Rysunek 5: Krasnoludek wykonany przy pomocy opisywanej aplikacji. 5 Rysunek 6: Prezentacja możliwości dodawania własnego narzędzia. 6 Podsumowanie Program spełnia w pełni postawione założenia. Umożliwia modelowanie brył w intuicyjny sposób, a praca z aplikacją jest stabilna. Program ma również duże możliwości rozszerzania funkcjonalności m.in. dodanie funkcji cofania ostatnich działań oraz eksportowania plików do innych formatów. Ważnym aspektem może być optymalizacja algorytmu konwertującego reprezentację danych z voksli na siatkę wielokątów. Sposób w jaki aplikacja została zaimplementowana powoduje, że dalszy rozwój nie wymaga zmian w jej strukturze. 6