Module also offered within study programmes:
General information:
Name:
3D Graphics
Course of study:
2018/2019
Code:
JIS-1-021-s
Faculty of:
Physics and Applied Computer Science
Study level:
First-cycle studies
Specialty:
-
Field of study:
Applied Computer Science
Semester:
0
Profile of education:
Academic (A)
Lecture language:
Polish
Form and type of study:
Full-time studies
Course homepage:
 
Responsible teacher:
dr inż. Malinowski Janusz (malinowski@fis.agh.edu.pl)
Academic teachers:
dr inż. Malinowski Janusz (malinowski@fis.agh.edu.pl)
Module summary

W ramach wykładu przedstawione zostaną podstawy programowania grafiki 3D. Kanwę dla opisywanych zagadnień stanowić będzie biblioteka OpenGL.

Description of learning outcomes for module
MLO code Student after module completion has the knowledge/ knows how to/is able to Connections with FLO Method of learning outcomes verification (form of completion)
Social competence
M_K001 Student potrafi pracować w zespole programistycznym IS1A_K01 Execution of a project
Skills
M_U001 Student potrafi stworzyć aplikację 3D uruchamianą w systemie Windows. IS1A_U05 Execution of a project,
Execution of laboratory classes
M_U002 Student potrafi od podstaw zaimplementować najważniejsze elementy sceny 3D. IS1A_U06 Execution of a project,
Execution of laboratory classes
M_U003 Student potrafi korzystać z programowalnego potoku przetwarzania 3D. IS1A_U06 Examination,
Execution of a project,
Execution of laboratory classes
M_U004 Student umie przygotować dokumentację wykonanego projektu. IS1A_U01, IS1A_U04 Execution of a project
Knowledge
M_W001 Student zna i rozumie podstawowe pojęcia i opis matematyczny wykorzystywany w grafice 3D. IS1A_W01 Activity during classes,
Examination,
Participation in a discussion,
Execution of laboratory classes
M_W002 Student zna i rozumie podstawowe algorytmy wykorzystywane w grafice 3D. IS1A_W02 Activity during classes,
Examination,
Participation in a discussion,
Execution of laboratory classes
FLO matrix in relation to forms of classes
MLO code Student after module completion has the knowledge/ knows how to/is able to Form of classes
Lecture
Audit. classes
Lab. classes
Project classes
Conv. seminar
Seminar classes
Pract. classes
Zaj. terenowe
Zaj. warsztatowe
Others
E-learning
Social competence
M_K001 Student potrafi pracować w zespole programistycznym - - + - - - - - - - -
Skills
M_U001 Student potrafi stworzyć aplikację 3D uruchamianą w systemie Windows. + - + - - - - - - - -
M_U002 Student potrafi od podstaw zaimplementować najważniejsze elementy sceny 3D. - - + - - - - - - - -
M_U003 Student potrafi korzystać z programowalnego potoku przetwarzania 3D. - - + - - - - - - - -
M_U004 Student umie przygotować dokumentację wykonanego projektu. - - + - - - - - - - -
Knowledge
M_W001 Student zna i rozumie podstawowe pojęcia i opis matematyczny wykorzystywany w grafice 3D. + - + - - - - - - - -
M_W002 Student zna i rozumie podstawowe algorytmy wykorzystywane w grafice 3D. + - + - - - - - - - -
Module content
Lectures:
  1. Wprowadzenie. Podstawowe pojęcia i definicje.

    Czym jest OpenGL? Założenia i konwencje. Biblioteka GLUT. Pierwszy program z wykorzystaniem OpenGL. Prymitywy w OpenGL.

  2. Podstawy OpenGL. Część pierwsza.

    Operacje na macierzach. Podstawowe transformacje w przestrzeni trójwymiarowej. Ograniczanie, okrawanie i obcinanie sceny. Prymitywy biblioteki GLUT.

  3. Podstawy OpenGL. Część druga.

    Kolory i cieniowanie. Krawędzie i powierzchnie prymitywów. Bufor głębokości. Oświetlenie. Wektory normalne.

  4. Podstawowe właściwości obiektów.

    Materiały. Mieszanie kolorów. Efekt mgły. Antyaliasing.

  5. Kompilacja i bufory.

    Listy wyświetlania. Bufor szablonowy. Bufor akumulacyjny.

  6. Grafika rastrowa i przetwarzanie obrazów.

    Mapy bitowe. Mapy pikselowe. Przetwarzanie obrazów (ARB_imaging).

  7. Tekstury.

    Tworzenie tekstur. Mipmapy. Kontrolowanie własności tekstur. Kontrolowanie środowiska tekstur. Wieloteksturowanie. Inne własności tekstur.

  8. Selekcja i sprzężenia zwrotne.

    Selekcja objektów. Sprzężenie zwrotne. Testy zasłaniania.

  9. Tablice wierzchołków.

    Tablice wierzchołków. Systemy cząstek.

  10. Krzywe i powierzchnie parametryczne.

    Powierzchnie Beziera. Non-Uniform Rational B-Spline (NURBS). Kwadryki.

  11. Obiekty buforowane i mapowanie wypukłości.

    Obiekty buforowane. Wytłaczane mapowanie wypukłości. Mapowanie wektorów normalnych.

  12. Cienie

    Tworzenie cieni: rzutowanie cieni płaskich, bryły cieni, mapy cieni.

  13. Programy cieniowania.

    Programy cieniowania: obiekt programu cieniowania, zmienne jednorodne i atrybuty wierzchołków, język cieniowania (GLSL – OpenGL Shading Language).

Laboratory classes:
  1. Inicjalizacja OpenGL, obsługa klawiatury, ustawienia kamery, układ współrzędnych, linie trójkąty.

    Efekty kształcenia:
    - student potrafi skompilować i uruchomić prosty program graficzny wykorzystujący bibliotekę OpenGL, student rozumie czym w OpenGL jest macierz modelowania,
    - student potrafi ustawiać podstawowe parametry prymitywów (grubość lini, kolor)

  2. Transformacje, macierz widoku.

    Efekty kształcenia:
    - student potrafi manipulować macierzą modelowania w taki sposób by obiekty na scenie podlegały przesunięciu, obrotom lub skalowaniu
    - student rozumie czym jest macierz widoku, potrafi zmienić ją tak by reprezentowała ona rzut perspektywiczny bądź ortogonalny

  3. Bufor głębokości, wektory normalne i oświetlenie – wstęp

    Efekty kształcenia:
    - student potrafi zainicjować i korzystać z bufora głębokości,
    - student potrafi diagnozować problemy które występują przy niedziałającym buforze głębokości,
    - student potrafi włączyć obliczenia związane z oświetleniem sceny,
    - student rozumie znaczenie wektorów normalnych w grafice 3D i potrafi je obliczać,

  4. Materiały

    Efekty kształcenia:
    - student potrafi przypisać obiektom materiał o realistycznych właściwościach,
    - student rozumie jak działa mechanizm mieszania kolorów
    - student potrafi rysować wygładzone obiekty

  5. Bufor szablonowy i listy wyświetlania

    Efekty kształcenia:
    - student potrafi tworzyć i korzystać z list wyświetlania
    - student umie wykorzystać bufor szablonowy do uzyskania efektu lustrzanego odbicia

  6. Teksturowanie

    Efekty kształcenia:
    - student potrafi wczytać teksturę z pliku i nałożyć ją na obiekt
    - student potrafi ustawiać najważniejsze parametry środowiska tekstur

  7. Selekcja

    Efekty kształcenia:
    - student zidentyfikować który z obiektów na trójwymiarowej scenie został kliknięty przez użytkownika

  8. Powierzchnie i mapowanie wypukłości

    Efekty kształcenia:
    - student potrafi rysować powierzchnie parametryczne, nałożyć na nie teksturę i uzyskać efekt mapowania wypukłości

  9. Programy cieniowania cz.1

    Efekty kształcenia:
    - student potrafi wczytać i dołączyć do programu program GLSL
    - student rozumie czym jest programowalny potok przetwarzania wierzchołków i fragmentów
    - student potrafi przekazać z programu głównego zmienne do programów cieniowania wierzchołków oraz umie przekazywać wartości pomiędzy programem cieniowania wierzchołków a fragmentów

  10. Programy cieniowania cz.2

    Efekty kształcenia:
    - student potrafi korzystać ze środowiska tekstur wewnątrz programów cieniowania

  11. Projekt

    W trakcie semestru student realizuje projekt. Temat projektu wybiera student po konsultacji z prowadzącym laboratorium. W ramach projektu należy stworzyć działającą aplikację wyświetlającą grafikę 3D generowaną w czasie rzeczywistym.

    Efekty kształcenia:
    - student potrafi samodzielnie opracować aplikację wyświetlającą grafikę 3D,
    - student potrafi opracować logiczną strukturę aplikacji,
    - student potrafi opracować dokumentację opisującą proces tworzenia aplikacji, dokumentację użytkownika oraz dokumentację techniczną umożliwiającą rozbudowę opracowanego projektu.

Student workload (ECTS credits balance)
Student activity form Student workload
Summary student workload 150 h
Module ECTS credits 6 ECTS
Participation in lectures 30 h
Realization of independently performed tasks 68 h
Preparation for classes 10 h
Participation in laboratory classes 0 h
Contact hours 10 h
Completion of a project 30 h
Examination or Final test 2 h
Additional information
Method of calculating the final grade:

W ramach laboratorium studenci samodzielnie rozwiązują zadania. Oceniana jest aktywność studenta i poprawność wykonania zadania.
Dodatkowo na koniec semestru każdy student wykonuje samodzielnie projekt programistyczny.
Egzamin odbywa się po oddaniu projektu. Ocena końcowa obliczana jest jako średnia ważona wg wzoru:

OK = 0.1 x L + 0.4 x P + 0.5 x E

Uzyskanie pozytywnej oceny końcowej (OK) wymaga uzyskania pozytywnej oceny z ćwiczeń laboratoryjnych (L), projektu (P) i egzaminu (E).

Ocena wyliczana po zaliczeniu w drugim terminie:
X = 0.3*(pierwszy termin)0.7*(drugi termin)
ocena wyliczana po zaliczeniu w trzecim terminie:
X = 0.2*(pierwszy termin)0.3*(drugi termin)+0.5*(trzeci termin)

X == L, P lub E

Prerequisites and additional requirements:

- Znajomość podstaw algebry liniowej (operacje na wektorach i macierzach)
- Podstawowa umiejętność programowania w C/C++

Recommended literature and teaching resources:

D. Shreiner, M. Woo, J. Neider, T.Davis. „The OpenGL Programming Guide – The Redbook”, Toronto, Addison-Wesley Professional, 2007

R.S. Wright, N. Haemel, G. Sellers, B. Lipchak “OpenGL SuperBible: Comprehensive Tutorial and Reference (5th Edition)”, Toronto, Addison-Wesley Professional, 2010

D. Shreiner “OpenGL Programming Guide: The Official Guide to Learning OpenGL, Versions 3.0 and 3.1 (7th Edition)”, Toronto, Addison-Wesley Professional, 2009

J.Ganczarski “OpenGL w praktyce”, Legionowo, Wydawnictwo BTC, 2008

Scientific publications of module course instructors related to the topic of the module:

Jakub KAMIŃSKI, Maciej ŚNIECHOWSKI, Sebastian WROŃSKI, Janusz MALINOWSKI, Jacek TARASIUK, Bone tissue engineering using combined additive manufacturing and microtomography with FEM verification , proc of 27th European conference on Biomaterials : 30 August – 3 September, Kraków, Poland, ESB 2015

Jakub KAMIŃSKI, Maciej ŚNIECHOWSKI, Sebastian WROŃSKI, Janusz MALINOWSKI, Jacek TARASIUK, Bone tissue engineering using combined additive manufacturing and microtomography with Finite Element Method verification, proc. Of Innovative technologies in biomedicine, 2nd international conference : October 12–14, 2015, Krakow, Poland

Additional information:

I – Sposób i tryb wyrównania zaległości powstałych wskutek nieobecności studenta na zajęciach:

Nieobecność na jednych ćwiczeniach/zajęciach wymaga od studenta samodzielnego opanowania przerabianego na tych zajęciach materiału. Nieobecność na więcej niż jednych 20% zajęć wymaga od studenta samodzielnego opanowania przerabianego na tych zajęciach materiału i jego zaliczenia w formie pisemnej w wyznaczonym przez prowadzącego terminie lecz nie później jak w ostatnim tygodniu trwania zajęć. Student który bez usprawiedliwienia opuścił więcej niż 20% zajęć i jego cząstkowe wyniki w nauce były negatywne może zostać pozbawiony, przez prowadzącego zajęcia, możliwości wyrównania zaległości.

Obecność na wykładzie: zgodnie z Regulaminem Studiów AGH.

II – Zasady zaliczania zajęć:

ćwiczenia audytoryjnych (dawniej rachunkowych), lab. komputerowych, projektowych itp.: Podstawowym terminem uzyskania zaliczenia jest koniec zajęć w danym semestrze. Student może dwukrotnie przystąpić do poprawkowego zaliczania.
Student który bez usprawiedliwienia opuścił więcej niż 20% zajęć i jego cząstkowe wyniki w nauce były negatywne może zostać pozbawiony, przez prowadzącego zajęcia, możliwości poprawkowego zaliczania zajęć. Od takiej decyzji prowadzącego zajęcia student może się odwołać do prowadzącego przedmiot (moduł) lub Dziekana.

Warunkiem przystąpienie do egzaminu jest wcześniejsze uzyskanie zaliczenia z ćwiczeń.