matf-racunarska-grafika

View on GitHub

Projekat

Projekat neobavezan deo kursa koji nosi ukupno 20 (+10 bonus) bodova. Projekat se smatra položenim ako je ocenjen sa barem 10 bodova i radi se individualno.

Nesamostalan rad na projektu, plagiranje, kao i direktno preuzimanje delova koda iz drugih studentskih projekata smatra se kršenjem pravila polaganja ispita prema pravilniku fakulteta i povlači automatsko pokretanje disciplinskog postupka i zabranu polaganja ispita Računarske grafike u trenutnoj školskoj godini.

Molimo Vas, detaljno pročitajte i ispratite uputstva u daljem tekstu.
Projekti koji odstupaju od šablona datog u uputstvu neće biti pregledani.
Ukoliko budete imali poteškoća u bilo kom koraku slobodno se javite mejlom.

Sav koda iz repozitorijuma sa primerima sa časa možete slobodno koristiti u projektu bez ikakvih restrikcija i navođenja.

Korišćenje razvojnog okruženja (CLion, QTCreator…) nije obavezno, ali može olakšati rad na projektu.

Kako da započnem projekat?

  1. Napraviti nalog na platformi Github i dodajte SSH ključ (Uputstva -> Github)
  2. Forkovati skelet projekta (Dugme Fork na stranici)
  3. Na forkovanom projektu promeniti naziv u podešavanjima (Settings -> Repository name)
  4. Klonirati projekat na svoj računar: git clone --recursive git@github.com:{USER_NAME}/{REPOSITORY_NAME}.git (link preuzeti preko zelenog dugmeta Clone na stranici forkovanog projekta)
  5. cd {REPOSITORY_NAME}
  6. Pokrenuti ./setup.sh za instalaciju potrebnih biblioteka
  7. Pokrenuti doxygen Doxyfile za generisanje dokumentacije
  8. Napraviti granu sa vašim brojem indeksa: git checkout -b {miXXXXX}.
  9. Pokrenuti CLion i otvoriti projekat: File -> Open -> path/to/{REPOSITORY_NAME}

Praviti male, logične promene u kodu i redovno komitovati sa porukama koje sažeto opisuju dodatu promenu. Izbegavati dodavanje velike količine koda od jednom.

Dokumentaciji se može pristupiti lokalno otvaranjem: path/to/{REPOSITORY_NAME}/engine/docs/html/index.html u veb pretraživaču ili preko stranice kursa https://matf-racunarska-grafika.github.io/matf-rg-project-2024/.

Stil pisanja koda koji projekat treba da prati nalazi se u README.md dokumentu kloniranog repozitorijuma. Pre svakog pokretanja procesa prevođenja projekta, pokreće se skripta koja verifikuje da je kod napisan prema pravilima u dokumentu README.md. Eventualne greške kao i smernice za ispravljanje grešaka biće ispisani u CMake podprozoru okruženja CLion (jedan od podprozora koji se može uključiti pritiskom na CMake dugme u donjem levom uglu okruženja CLion).

CLion podešavanja

  1. Učitati stil formatiranja koda: Settings -> Editor -> Code Style -> Schema (Wheel icon) -> Import scheema -> path/to/{REPOSITORY_NAME}/clion-code-style.xml
  2. Uključiti automatsko formatiranje koda: Settings -> Tools -> Actions on Save -> Reformat code
  3. Uključiti izuzetke za formatiranje koda: Settings -> Tools -> Editor -> Code Style -> Check Turn formatter on/off with markers in code comments -> Off: @formatter:off, On: @formatter:on
  4. [Opciono] Instalirati dodatak GLSL za bojenje sintakse: Settings -> Plugins -> Marketplace -> search GLSL -> Install.
  5. [Opciono] Instalirati dodatak GitToolBox za bolju git integraciju: Settings -> Plugins -> Marketplace -> search GitToolBox -> Install.

Sadržaj projekta

Osnova

Jedna lekcija iz grupe A:

Jedna lekcija iz grupe B:

Lekcije grupe A i B implementiraju se kao komponente modula engine koje bi svaka instanca aplikacije mogla da koristi, na sličan način kako je implementirana lekcija skybox. Lekcije grupe A i grupe B koje nisu implementirane kao komponenta modula engine neće biti bodovane.

Obratiti pažnju na svrhu i primenu lekcija iz grupe A i grupe B. Implementirane lekcije koje se na sceni ne primećuju neće biti bodovane. Primer:

[Bonus (+10 bodova)] Dodatna engine funkcionalnost i lekcija (10 bodova)

U projektu se takođe boduje:

Primeri scena i bodova

Projekat neće biti pregledan ako:

Kako da koristim Git i Github?

Napraviti baznu granu za projekat prema upustvu: [Kako da započnem projekat?].
Za svaku lekciju od grane {miXXXXX} napraviti odvojenu granu {lesson-name-implemntation} i promene postavljati na toj grani kako bi pregledanje, poređenje i testiranje bilo lakše.
Kada je lekcija implementirana, granu sa lekcijom {lesson-name-implemntation} spojiti sa granom {miXXXXX}.

Kompletan primer rada na implementaciji osvetljenja:

# Napraviti granu
git checkout -b miXXXXX
# ... dodati osnovne, zatim za svaku funkcionalnost projekta napraviti granu
git checkout -b lighting-implementation
# ... implementirati svetlo
git add Lighting.cpp light.glsl
git commit -m 'Implemented basic Point light.'
# ... podesiti svetlo
git add Lighting.cpp light.glsl MainController.cpp
git commit -m 'Fine tune Point light.'
# if (implementacija svetla završena) {
    git checkout miXXXXX
    git merge lighting-implementation
# } else if (implementacija svetla ima problem) {
    git push -u origin HEAD
    # Pogledati upustvo [Implementation] ispod
# }

[Implementation] Imam problem/poteškoću prilikom implementacije lekcije koju ne mogu da rešim?

Obavezno ispratiti upustvo iznad: [## Kako da efektivno koristim Git i Github?]. Implementacije lekcija držati u odvojenim granama.

Ako ništa od toga ne uspe:

  1. U podešavanjima sa GitHub stranice Vašeg projekta dodati korisničko ime: @spaske00 u Contributors: : Settings -> Collaborators and teams -> Add people type @spaske00. Za role staviti write.
  2. Komitovati promene i postaviti granu na GitHub: git push -u origin {lesson-name-implementation}
  3. Napravite Pull Request sa stranice Vašeg projekta: Pull Requests -> New pull request -> base postaviti {YOUR_REPOSITORY_NAME}:miXXXXX, za compare odabrati {YOUR_REPOSITORY_NAME}:{lesson-name-implementation} -> Create pull request
  4. U opisu ostaviti pitanja
  5. Sidebar desno Reviewers -> wheel icon -> add @spaske00.
  6. Poslati mejl sa naslovom: [RG][Implementation] i u sadržaju ostaviti samo link do pull requesta: https://github.com/{YOUR_USER_NAME}/{YOUR_REPOSITORY_NAME}/pulls/{NUMBER}.
To: {asistent} _At__ @math.rs
Subject: [RG][Implementation]
Content:

https://github.com/{YOUR_USER_NAME}/{YOUR_REPOSITORY_NAME}/pulls/{NUMBER}

[Question] Imam opšte pitanje u vezi projekta/lekcije?

Ukoliko imate opšte pitanje u vezi lekcije ili projekta, koje nema prateći kod, prvo barem 1-2 sata probajte sami da pronađete odgovor u materijalima kursa.
Ako ne uspete:

  1. Uključiti opciju Issues: Settings -> Features -> Enable Issues
  2. Na stranici Vašeg repozitorijuma napraviti novi issue: https://github.com:{YOUR_USER_NAME}/{YOUR_REPOSITORY_NAME}/issues
  3. Naslov [Issue] postavite da bude tekst pitanja
  4. U opisu [Issue] opisati koje ste materijale pogledali i eventualno detaljnije pojasnite pitanje.
  5. U opisu problema tagovati korisničko ime: @spaske00.

Jedan [Issue] treba sadržati tačno jedno pitanje, ukoliko imate više pitanja, slobodno napravite više [Issue] tiketa.

Komentari

Radi lakše organizacije i određivanja prioriteta rada na projektu, komentari koji budu ostavljeni na platformi Github mogu imati sledeće dve oznake:

Svaki nerazrešen komentar, koji nije CRITICAL, nosi negativne bodove u konačnom zbiru bodova na projektu.
Ako kod ispravljen predlogom iz komentar, u odgovoru na komentar ostaviti kratak opis promene.
Ako niste sigurni kako da implementirate predlog, odgovoriti na komentar pitanjem za dodatno pojašnjenje.
Ako predlog nije implementiran, ne razrešavati komentar dok ne bude obrađen radi lakšeg praćenja izmena.

Prijava i ocenjivanje projekata

Koraci za prijavu projekta:

  1. U podešavanjima dodati korisničko ime: @spaske00 u Contributors: sa stranice Vašeg projekta: Settings -> Collaborators and teams -> Add people type @spaske00. Za role staviti write.
  2. Postaviti granu na Github: git push -u origin {miXXXXX}
  3. Napraviti Pull Request sa stranice projekta: Pull Requests -> New pull request -> base ostaviti {YOUR_REPOSITORY_NAME}:main, za compare odabrati {YOUR_REPOSITORY_NAME}:{miXXXXX} -> Create pull request. (Obratiti pažnju da umesto {YOUR_REPOSITORY_NAME} Github ponekad ostavi matf-rg-project-2024, zameniti sa granom main na Vašem repozitorijumu)
  4. Sidebar desno Reviewers -> wheel icon -> add @spaske00.
  5. Prijaviti projekat popunjavanjem formulara.

Projekat će biti pregledan, po potrebi zakazana odbrana, i bodovi objavljeni na stranici kursa.
Student može biti pozvan na usmenu odbranu projekta. Usmena odbrana projekta se sastoji od:

Važno: Konsultacije, Question, i Issue projekata se ne održavaju od početka prijave projekata do dana ispitnog roka.

Da li mogu da uradim projekat nakon položenog teorijskog i praktičnog testa?

Ocena iz predmeta računarske grafike formira se kao zbir bodova na projektu, praktičnog i teorijskog testa. Ako želite da uradite projekat nakon položenog praktičnog i teorijskog testa potrebno je da nam odmah nakon objavljivanja rezultata ispitnog roka javite mejlom:

To: {profesorka} _At_ math.rs, 
CC: {asistent} _at_ math.rs
Subject:  [RG][Projekat]
Content:  
Poštovana, 

Želim da uradim projekat u nekom od narednih rokova.

S` poštovanjem,
{Ime} {Prezime}
{brINDEKSA}

Gde mogu pronaći modele za projekat?

Modele možete preuzeti sa:

Sinhronizacija forka projekta

Fork projekta je kopija originalnog projekta nastala od stanja originala u trenutku forkovanja i od tog trenutka promene na oba su međusobno nezavisne.
Ukoliko originalni projekta dobije nove komitove nakon trenutka forkovanja, fork projekta se može sinhronzivaoti sa originalnom na sledeći način:

cd my/project/directory

# Prebaciti se na main granu
git checkout main

# Dodati upstream originalnog projekta
git remote add upstream git@github.com:matf-racunarska-grafika/matf-rg-project-2024.git

# Preuzeti grane sa originalnog projekta
git fetch upstream

# Prebaciti sve nove kommitve sa main grane originala na lokalnu main granu
git rebase upstream/main

# Postaviti novu main granu na forkovan repozitorijum
git push origin main --force

# Sinhronizovati granu za rad sa glavnom granom
git checkout miGGXXXX && git rebase main