Féléves feladat¶
Minimális elvárások az elkészített programmal szemben¶
Kamerakezelés: A virtuális teret az egér és/vagy billentyűzet segítségével be kell tudni járni.
Objektumok: Térbeli objektumok legyenek. Ezeket, mint modelleket külön fájlból lehessen betölteni.
Animáció, mozgatás: A program legyen interaktív. A modelleket, fényeket billentyűzettel, egérrel lehessen mozgatni; legyenek animált részek.
Textúrák: A modelleknek legyen textúrája.
Fények: A programban a fényeket a
+
és-
billentyűk segítségével lehessen állítani (vagy egyéb kézenfekvő módon a program leírása alapján).Használati útmutató: Az
F1
gomb megnyomására (vagy egyéb kézenfekvő módon) jelenjen megy egy leírás a programról, annak használatáról, kezelési módjáról.
Az elkészített programnak jól strukturáltnak, következetesnek kell lennie. Törekedni kell arra, hogy a modellek, a kezelés kidolgozott, a megjelenítés esztétikus legyen. Ezek a minimális elvárások a programmal szemben. Amennyiben ezek teljesülnek, úgy a feladat már elégséges.
Többlet funkciók¶
A jobb jegyért például az alábbi dolgokat lehet a programban megvalósítani.
Bonyolultabb animációk: Például karakterek animálása, görbék mentén mozgatás.
Fizika: Például ingák, rugózás, szövet, víz.
Részecskerendszerek: Például Tűz, füst, eső, hóesés.
AI: Táblás játékok esetén kézenfekvő, egyéb játékoknál ellenfelek vezérlése például.
Köd: Köd hatás megvalósítása, dinamikus változtatása.
Átlátszóság: Átlátszó részeket tartalmazó textúrák alkalmazása, félig áttetsző részek a megjelenített objektumokon.
Árnyék: Árnyékszerű hatások létrehozása.
Ütközésvizsgálat: Bounding-box implementáció valamilyen formája.
Stencil buffer használata: Nem téglalap alakú képterületek megvalósításához.
Felhasználói felület: A paraméterek állításához külön felületi elemek.
Objektumok kijelölése egérrel: A megjelenített objektumok kijelölése.
Térkép kezelése: Például magasságmező betöltése képfájlból úgy, hogy adott modellek helyét is meg lehessen adni rajta.
Procedurális geometria, textúrák: Modellek létrehozása valamilyen algoritmus segítségével.
LOD: Level of Details a hatékonyabb megjelenítéshez.
Bump mapping, displacement mapping: Képek használata a felületi érdesség tárolásához, megjelenítéséhez.
Environment mapping: Környezetről készített kép használata textúraként, az ahhoz tartozó transzformációk megvalósítása.
Sztereoszkópia: Például renderelés valamilyen 3D-s megjelenítő eszközhöz.
Minden így elkészített plusz funkció 1-gyel növeli az érdemjegyet (5-ben maximálva). Mindenkinek javaslom, hogy legalább 3 plusz dolgot építsen be a programjába.
Programmal és beküldésével kapcsolatos észrevételek¶
A program forráskódjának
make
paranccsal lefordítható formában kell szerepelnie a repository-ban.A programhoz tartozó adatokat egy
assets
nevű jegyzékbe kell elhelyezni.Az
assets
jegyzéket tömörítve valahová fel kellene tenni (például: saját weboldal, DropBox, OneDrive), nem pedig csatolmányként küldeni. Ennek a linkjét aREADME.md
fájlban kell feltüntetni.A project mérete kitömörítést követően a 200 MByte-ot lehetőleg ne haladja meg.
A textúrákhoz PNG vagy JPEG formátumú fájlokat érdemes használni.
A
main
függvényt tartalmazó fájl nevemain.c
legyen.A forráskódban az elnevezéseknek angolul kell szerepelni.
Minimális számú globális változót kell használni.
A fejléc állományokba dokumentált formában kerüljön az interfészek leírása. A forrásállományba ideális esetben nem szükségesek megjegyzések.
A kódban a repeptitív, adattárolásra emlékeztető kódrészeket külön adatszerkezetbe, adatfájlba kell kiszervezni (például CSV fájlokba).
Törekedni kell arra, hogy a program figyelmeztetések (warning) nélkül forduljon.
Ha a forráskódhoz tartozik valamilyen külső forrásból származó kódrész, akkor azt a megfelelő licensz feltüntetése mellett lehet használni!
Gyakori hibák¶
Nem került kiválasztásra a feladat. Először egy részletes, konkrétumokat tartalmazó, szöveges leírásnak kell készülnie a féléves feladathoz, ami hogy ha az egyeztetéseket követően rendben van, akkor kellene egyáltalán hozzákezdeni a feladat elkészítéséhez.
A kiválasztandó feladat mögött nincs koncepció. Néhány, a semmi, vagy egy textúrázott kocka közepén mozgó, forgó objektum önmagában még nem egy túl átgondolt, kiforrott témára utal.
A program és a repozitórium szerkezete nem megfelelő.
Nem a modellbetöltő statikus függvénykönyvtár került felhasználásra.
Túlságosan sok a globális változó.
A program szerkezete, a forráskódhoz tartozó állományok nem tükrözik, hogy konkrétan miről szólna a választott feladat. (A programoknak OOP szemlélettel kellene készülniük.)
A program ablakát nem lehet átméretezni az arányok megtartása mellett.
A program azt az
Actions
struktúrát tartalmazza, amire vonatkozóan már rendszeresen említésre került, hogy az nem jó megoldás.A programban az objektumokon indokolatlan helyeken át lehet menni.
Az animáció nem idő függvényében, hanem a kirajzolás számának megfelelően változik.
A betöltött modellek, textúrák esetében az útvonalak nem átvihetőek. (A backslash és a kis-nagybetű különbségek szoktak ilyen problémát okozni.)
A program túlságosan sok repetitív részt tartalmaz. Azokat modellek betöltésével,
for
ciklus használatával lehet tipikusan orvosolni.Nem látszanak a programban a fényhatások.
Nem megfelelő a programban a fények átállítása. Úgy néz ki, mint hogy ha csak a monitor fényerejét állítgatná a felhasználó.
Nem került bemutatásra a program. Hogy ha minden előzmény, korábbi bemutatás nélkül érkezik be egy feladat, az olyan formában még nem fogadható el. (A feladat elkészítésének az a célja, hogy az illető bizonyítsa, hogy a grafikus programozásban gyakorlatot szerzett, az annak kapcsán felmerülő kérdéseket érdemben meg tudja válaszolni.)