Tematy specjalne
Tematy specjalne wymagają poświęcenia dodatkowego czasu na douczenie się dodatkowych tematów we własnym zakresie. Nagroda obecnie jeszcze nie jest ustalona i może się okazać, że jedyną nagrodą jest satysfakcja ;). Ideą tematów specjalnych jest zaproponowanie własnego tematu wybiegającego poza zakres omawiany na zajęciach. Poniżej wymieniono kilka tematów specjalnych, które realizowano w poprzednich latach. Należy je traktować jako przykład stopnia trudności. Konieczne jest jednak wymyślenie
czegoś nowego.
- Optymalizator siatki (1 osoba)
Z pliku 3d o zadanym formacie wczytywany jest model 3d. Model ten powinien być następnie uproszczony poprzez usunięcie nadmiarowych wierzchołków i ewentualne zastąpienie ich innymi. Program powinien również zawierać wizualizację wyników.
- Generator łańcuchów trójkątów (1 osoba)
Szybkość rysowania modeli 3d można optymalizować łącząc trójkąty składające się na model w „łańcuchy”. Łańcuchy te składają się z trójkątów, z których każdy kolejny ma jeden bok wspólny (a zatem dwa wierzchołki) z poprzednim. Aby zatem narysować kolejny trójkąt w łańcuchu wystarczy podać jeden wierzchołek, a nie trzy, jakby to było w sytuacji gdyby trójkąty nie były połączone w łańcuchy. Istnieją algorytmy heurystyczne, które łączą trójkąty w zadanym modelu w możliwie długie łańcuchy. Projekt polega na implementacji takiego algorytmu.
- Implementacja techniki „oszustów” (2-3 osoby)
Technika ta polega na zastepowaniu odleglych modeli przez odpowiednie prostokąty, pokryte teksturą na ktorą wyrenderowano te własnie odległe modele. Dla dużych scen z duzą liczbą statycznych modeli pozwala to na znaczne skrócenie czasu generowania sceny, przy niewielkim jedynie pogorszeniu jej jakości. Gdy kamera sie zbliza do takiego prostokątu w pewnym momecie trzeba zamiast niego renderować oryginalne modele, tak by to oszustwo bylo jak najmniej widoczne. Jednym z problemów, które należy tutaj rozwiązać, jest ocena kiedy odswieżyć teksturę oszusta, lub kiedy renderować oryginalne modele. Projekt polega na: implementacji techniki oszustów, zaproponowaniu własnych funkcji oceny, oraz wizualizacji sceny wykorzystującej tą technikę. Warto przeczytać sobie ten artykuł.
- Galeria szkła (2 osoby)
Używajac języka Cg, lub Glsl, należy stworzyć pomieszczenie, galerię, w której znajdować się będą szyby o różnych kształtach. Zasymuluj refrakcję i refleksy + jako opcja rozproszenie chromatyczne.
- Implementacja programu do Raytracingu w egzotycznym środowiku (2 osoby)
Wybierz jakieś egzotyczne środowisko uruchomieniowe, np. smartwatch, smartphone, przeglądarka internetowa. Zaimplementuj w tym środowisku prosty algorytm do raytracingu. Uwzględniane powinny być: światło otoczenia, światło rozproszone, światło odbite (oba rodzaje) i opcjonalnie światło załamane. Schemat klas powinien być tak zaprojektowany, aby możliwe było w przyszłości rozszerzanie funkcjonalności tej aplikacji (np. o nowe kształty obiektów, bardziej skomplikowane modele oświetlenia itp.).
- Inverse Kinematics (2 osoby)
Kinematyka odwrotna jest metodą pozwalającą na ustalanie przestrzennego ułożenia hierarchicznych modeli 2d i 3d, na podstawie pożądanego ułożenia niektórych z części tego modelu (patrz: http://en.wikipedia.org/wiki/Inverse_kinematics, http://cg.skeelogy.com/projects-IK.php). W wyniku projektu ma powstać: raport opisujący problem i użyty algorytm rozwiązania oraz aplikacja pozwalająca na animację ręki robota (przedramię, ramię, dłoń, 5 palców) poprzez wybieranie palca, oraz punktu, który ma być przez ten palec dotknięty. Program powinien obliczać kilka stanów pośrednich pomiędzy stanem początkowym a końcowym, aby możliwe było wyświetlenie animacji.