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