Csernetics László
 [   Home  |  CV  |  Scientific work  |  Teaching  |  Software  |  Photo gallery  |  Links  |  CUNY mirror   ]

 

Számítógépes grafika gyakorlat 06/07 ősz

 

Kuba Attilára emlékezünk.

 

Általános tudnivalók a gyakorlattal kapcsolatban

Kötelező programok leírásai

ZH-kal kapcsolatos tudnivalók

Eredmények

Példaprogramok

Segédanyagok

!! The Hall of Fame !!

OpenGL konfigurációja

 


 

Gyakorlatok időpontjai és helyei:

Hétfő

12-13

IR222
13-14 IR223

14-15

IR223

17-18

IR226
18-19 IR226
Kedd 12-13 IR224
13-14 IR224
17-18 IR222
18-19  IR222
Szerda 9-10 IR224
10-11 IR224

 

Fogadóóra:

Hétfő 15-16, egyelőre a demonstrátori szobában, az Árpád tér 2. alatt, a 2. emeleten.

Egyéb elérhetőségem: cslaszlo@inf.u-szeged.hu

 

Általános tudnivalók nappalisoknak (kurzuskód, kredit, tematika, ajánlott irodalom, a teljesítés feltételei):

http://www.inf.u-szeged.hu/oktatas/kurzusleirasok/I504.xml

 

Kötelező programok specifikációi nappalisoknak:

Kötelező feladat I:

A feladat: a saját szoba 3D-s modelljének megvalósítása OpenGL-ben a következőképpen:

    - a tantárgyi követelményekben leírtaknak megfeleljen:

Legalább 2 különböző 3D-s objektum egymástól független mozgása,

interaktivitás (szoba forgatása ÉS billentyű lenyomásra objektumok mozgatása) 3D transzformáció segítségével,

szöveg megjelenítés (saját név, szak, tanév)

    - legalább 3 komplex (legalább 5 testből álló) tárgy megvalósítása (pl: ágy, asztal, szekrény)

    - a tárgyak egy sík lapon legyenek elhelyezve (padló)

    - menü készítése (drótvázas és kitöltött közötti váltás)

Plusz pont a következő esetekben szerezhető:

    - igényes kivitelezésű (megjelenés és kódolás),

    - speciális GLUT függvények (pl. overlay, több ablak használata, ablak felosztása, stb.),

    - parametrikus felszín,

    - deformálható objektum,

    - tükröződés,

    - speciális effektek,

    - vetett árnyék.

A kötelező feladat beadásának módja:

    - Linux operációs rendszer alatt

Készíts egy könyvtárat, amelynek neve a saját neved, ékezetek nélkül (pl.: CserneticsLaszlo).

Ebbe a könyvtárba másold be a szükséges forrás file-okat (.c, .cxx, .h), és a Makefile-t, FUTTATHATÓ ÁLLOMÁNYT NE!

Csomagold be a könyvtárat úgy, hogy a tömörített állományban szerepeljen a könyvtár információ is (kicsomagoláskor automatikusan létrejöjjön egy alkönyvtár, és abban a kért file-ok). Javaslom a zip parancs használatát (pl.: zip -r CserneticsLaszlo.zip CserneticsLaszlo/).

A file neve jelezze azt is, hogy Linux-os a program (pl.: CserneticsLaszlo_linux.zip).

    - Ezt a tömörített állományt töltsd fel a biro-ra!

Beküldendő: október 15. 23:59:59-ig.


Kötelező feladat II:

A feladat (az I. kötelező feladat folytatása):

    - a tantárgyi követelményekben leírtaknak megfeleljen:

         megvilágítás,

        textúra (a tárgyaknak megfelelő textúrák használata),

        átlátszóság (legalább egy tárgy),

        köd 

    - legalább +1 (komplex) tárgy megvalósítása (az előző kötelező feladathoz képest)

    - az alap fény (ambiens) fénybeállításon túl legalább 2 különböző fényforrás megvalósítása (általános diffúz fény + egy spekuláris fény)

Plusz pont a következő esetekben szerezhető:

    - igényes kivitelezésű (megjelenés és kódolás),

    - speciális GLUT függvények (pl. overlay, több ablak használata, ablak felosztása, stb.),

    - parametrikus felszín,

    - deformálható objektum,

    - tükröződés,

    - speciális effektek,

    - vetett árnyék.

A kötelező feladat beadásának módja:

    - Linux operációs rendszer alatt

Készíts egy könyvtárat, amelynek neve a saját neved, ékezetek nélkül (pl.: CserneticsLaszlo).

Ebbe a könyvtárba másold be a szükséges forrás file-okat (.c, .cxx, .h), és a Makefile-t, FUTTATHATÓ ÁLLOMÁNYT NE!

Csomagold be a könyvtárat úgy, hogy a tömörített állományban szerepeljen a könyvtár információ is (kicsomagoláskor automatikusan létrejöjjön egy alkönyvtár, és abban a kért file-ok). Javaslom a zip parancs használatát (pl.: zip -r CserneticsLaszlo.zip CserneticsLaszlo/).

A file neve jelezze azt is, hogy Linux-os a program (pl.: CserneticsLaszlo_linux.zip).

    - Ezt a tömörített állományt töltsd fel a biro-ra!

Beküldendő: december 3. 23:59:59-ig.

A feladatokat a biro rendszer segítségével kell beküldeni. Ehhez regisztrálni kell a biro-ba, majd www.inf.u-szeged.hu/biro oldalon beléphetsz a rendszerbe. Itt megtekintheted a pontos feladatkiírást (feladat bővíthetőség plusz-pontért megtalálható), beleértve a beküldendő állomány elkészítési módját (zip specifikáció), továbbá feltöltheted az elkészített állományt. Egy feltöltési lehetőség van, úgyhogy a véglegesnek ítélt programmal érdemes próbálkozni.

 

Zárthelyi dolgozatok specifikációi nappalisoknak:

1. Zh: október 16-20 héten

Zh feladatok:

1. Fordulatszámmérő

2. Kilóméter óra

3. Óra

4. Propeller

5. Metronóm 1

6. Inga 1

7. Kerék

8. Iránytű

9. Metronóm 2

10. Inga 2

11. Helikopter

12. Szitakötő

 

2. Zh: december 4-8 héten

Zh alapfeladatok (szükséges a bitmap.h és bitmap.c a fordításukhoz):

1. Fordulatszámmérő:

        alapZH2_feladat1.c  Makefile

2. Kilóméter óra:

        alapZH2_feladat2.c  Makefile

3. Óra:

        alapZH2_feladat3.c  Makefile

4. Propeller:

        alapZH2_feladat4.c  Makefile

5. Metronóm 1:

        alapZH2_feladat5.c  Makefile

6. Inga 1:

        alapZH2_feladat6.c  Makefile

7. Kerék:

        alapZH2_feladat7.c  Makefile

8. Iránytű:

        alapZH2_feladat8.c  Makefile

9. Metronóm 2:

        alapZH2_feladat9.c  Makefile

10. Inga 2:

        alapZH2_feladat10.c  Makefile

11. Helikopter:

        alapZH2_feladat11.c  Makefile

12. Szitakötő:

        alapZH2_feladat12.c  Makefile

 

Eredmények:

Mind a kötelező programok, mind a ZH-k eredményeit a saját csoportodhoz kapcsolt link alatt találod meg. (Az eredmények feltöltése folyamatos lesz, legyetek türelmesek!)

Hétfő  12-13

Hétfő  13-14

Hétfő  14-15

Hétfő  17-18

Hétfő  18-19

Kedd  12-13

Kedd  13-14

Kedd  17-18

Kedd  18-19

Szerda  9-10

Szerda  10-11

 

Példaprogramok:

1. OpenGL alapprogram (vázprogram):

        simple.c  Makefile

2. Teáskanna kirajzolása (glut kínálta magasszintű objektum):

        teapot.c  Makefile

3. Pontok kirajzolása:

        points.c  Makefile

4. Kölünböző méretű pontok kirajzolása:

        pointsz.c  Makefile

5. Egyenesek kirajzolása:

        lines.c  Makefile

6. Kölünböző vastagságú egyenesek kirajzolása:

        linesw.c  Makefile

7. Kölünböző típusú egyenesek kirajzolása:

        lstipple.c  Makefile

8. Háromszögek kirajzolása:

        triangle.c  Makefile

9. Egyenes rajzolása a felezőpont algoritmussal:

        feladat leírása  MidpointLine1.c  Makefile

        MidpointLine2.c  Makefile

        MidpointLine3.c  Makefile

        MidpointLine4.c  Makefile

10. Szabályos sokszögek közelítése vonal-csík segítségével:

        feladat leírása  circleapprox.c  Makefile

11. Tüzijáték készítése:

        feladat leírása  fireworks.c  Makefile

12. Poligonok kitöltése:

        pstipple.c  Makefile

13. Nem konvex poligonok előállítása:

        star.c  Makefile

14. GLUT magasabbszintű objektumok:     

        Függvények leírása - http://www.opengl.org/resources/libraries/glut/spec3/node80.html

        GLUTObjects.c  Makefile

15. Időzítés, mátrix vermek, transzformációk:

        atom.c  Makefile

16. Párhuzamos és perspektív vetítés:

        ortho.c  Makefile

        perspect.c  Makefile

17. Nap, Föld és Hold modellezése:

        solar.c  Makefile

18. Oszlop rajzolása (csonkakúpok segítségével):

        oszlop.c  Makefile

19. Tank forgatható csővel:

        tank.c  Makefile

20. Kocka készítése a megadott specifikáció szerint: 

        feladat leírása  cube.c  Makefile

21. Betűkészítés illusztrációja:

        text.c  Makefile

22. Dobókocka készítése:

        dobokocka.c  Makefile

23. Próba ZH:

        probaZH.pdf  probaZH.c  Makefile

24. Ambiens fény:

        ambient.c  Makefile

25. Jet alapprogram:

        jet.c  Makefile

26. Jet megvilágítással:

        litjet.c  Makefile

27. Jet tükröződő fényhatással:

        shinyjet.c  Makefile

28. Reflektor illusztrációja:

        spot.c  Makefile

29. Átlátszó kocka:

        blendcube.c  Makefile

30. Kocka ködben:

        fogcube.c  Makefile

31. Megvilágított háromszög készítése, látható normálisokkal:

        feladat leírása  haromszog.c  Makefile

32. Megvilágított kocka készítése, látható normálisokkal:

        feladat leírása  kocka.c  Makefile

33. Megvilágított hengerpalást:

        cylinder_spot.c  Makefile

34. Textúrázott teáskanna:

        tex2d.c  Makefile  pot.bmp

35. Több textúra egy négyzeten:

        BTex.c  Makefile  WOOL.bmp  MARBLE.bmp  WOOD.bmp

36. Kör-alakú textúra:

        CTex.c  Makefile  DONOTENT.bmp

37. Kúp-palást textúra:

        kupTextura.c  Makefile  texture.h  texture.c  kup_textura2.bmp

38. Füves terep-textúra:

        terrain1.c  Makefile  texture.h  texture.c  land.bmp  sky.bmp

39. Próba ZH 2:

        probaZH2.pdf  probaZH2alap.c  probaZH2.c  Makefile  BRONZE.bmp  TILE.bmp

 

Segédanyag:

Az órákon használt PPT prezentáció PDF formátumban letölthető az alábbi linkről:

        szam_graf_2006_c.pdf

Geometriai primitívek létrehozását illusztráló tutorial program Nate Robins-tól:

        Windows-ra  shapes.exe  glut32.dll

        Linux-ra  /pub/szgrafika/szamitogepes_grafika/Tutors.linux/shapes

Geometriai transzformációkat illusztráló tutorial program Nate Robins-tól:

        Windows-ra (nem futtatható helyből)  transformation.zip

        Linux-ra  /pub/szgrafika/szamitogepes_grafika/Tutors.linux/transformation

Viewing és vetítési transzformációkat illusztráló tutorial program Nate Robins-tól:

        Windows-ra (nem futtatható helyből)  projection.zip

        Linux-ra  /pub/szgrafika/szamitogepes_grafika/Tutors.linux/projection

Fény- és anyagtulajdonságok beállítását illusztráló tutorial program Nate Robins-tól:

        Windows-ra (nem futtatható helyből)  lightmaterial.zip

        Linux-ra  /pub/szgrafika/szamitogepes_grafika/Tutors.linux/lightmaterial

Fényforrás és kamera pozícionálását illusztráló tutorial program Nate Robins-tól:

        Windows-ra (nem futtatható helyből)  lightposition.zip

        Linux-ra  /pub/szgrafika/szamitogepes_grafika/Tutors.linux/lightposition

Köd effektus beállítását illusztráló tutorial program Nate Robins-tól:

        Windows-ra (nem futtatható helyből)  fog.zip

        Linux-ra  /pub/szgrafika/szamitogepes_grafika/Tutors.linux/fog

Textúrázást illusztráló tutorial program Nate Robins-tól:

        Windows-ra (nem futtatható helyből)  texture.zip

        Linux-ra  /pub/szgrafika/szamitogepes_grafika/Tutors.linux/texture

Kibővített OpenGL alapprogramok, eseményekre és interaktivitásra felkészítve:

        2D-s OpenGL program készítéséhez használd ezt (párhuzamos vetítés)  alap2D.c

        3D-s OpenGL program készítéséhez használd ezt (perspektív vetítés)  alap3D.c

        alap3D.c  +  Mélységellenőrzés + Keyboard + Timer + Idle + Kamera  alap3D_2.c

        alap3D_2.c  +  Menükezelés  alap3D_3.c

        ZH-alapprogram, alap3D_3.c módosítása, mely tartalmaz betűkészítő rutint  alapZH.c

Kép-beolvasó osztályok textúrázáshoz:

        Bitmap képek beolvasásához (.bmp)  bitmap.h  bitmap.c

            Használat:  

		BITMAPINFO *texInfo; 
		GLubyte    *texBits;
		texBits = LoadDIBitmap("image.bmp", &texInfo);

        Targa képek beolvasásához - C++ (.tga)  CTargaImage.h  CTargaImage.cpp

            Használat:  

		CTargaImage *m_textureOne;
		m_textureOne = new CTargaImage;
		m_textureOne->Load("image.tga");

 

The Hall of Fame:

Itt találhatók a legszorgalmasabb és legügyesebb hallgatók munkáiból szüretelt csemegék:

    Virtual Rose  (Árvai Zoltán)

    Liquid Particle  (Paulik Róbert)

    Mélytenger  (Vincze István)

    Destinations of War (~200Mb!) - Screenshots  (Lovag Tamás)

    Kötelező program  (Paulik Róbert)

    Kötelező program  (Lovag Tamás)

    Kötelező program (~20Mb!)  (Udvari Tibor)

    Kötelező program  (Vetési Zoltán)

    Kötelező program  (Árvai Zoltán)

    Kötelező program  (Laczó Péter)

    Kötelező program  (Gárdonyi Péter)

 

OpenGL használata Windows alatt:

Ahhoz hogy OpenGL-ben programozz Windows alatt (gondolom többeteket is érint ez a téma a kötelező programok miatt), az alábbi feltételeknek kell eleget tenni:

-  kell valamilyen szövegszerkesztő vagy C/C++ fejlesztői környezet (MS Visual C++, Borland C++ Builder, tetszőleges text-editor parancssori fordító esetén)

-  győződj meg róla, hogy a rendszered támogatja az OpenGL-t:

     -  a C/C++ fordító Include\GL alkönyvtára tartalmazza a gl.h és glu.h fájlokat (esetleg még a glaux.h fájlt is) 

     -  a C/C++ fordító Lib alkönyvtára tartalmazza a glu32.lib és opengl32.lib fájlokat

     -  a Windows\System32 (régebbi OS esetén Windows\System) könyvtár tartalmazza a glu32.dll és opengl32.dll fájlokat

-  ha minden felsorolt fájl megtalálható a megfelelő könyvtárakban, akkor (elméletileg) a GLUT bővítmény nélküli OpenGL már meg van. A GLUT beállításához a következőket kell tenned:

     -  töltsd le a GLUT-ot a lap legalsó linkjét követve (Nate Robbins féle oldal, első letöltési link - glut-3.7.6-bin.zip (117 KB)). Csomagold ki, majd másold a megfelelő fájlokat a megfelelő helyre:

           -  a glut.h fájlt másold a C/C++ fordító Include\GL alkönyvtárába

           -  a glut32.lib fájlt másold a C/C++ fordító Lib alkönyvtárába

           -  a glut32.dll fájlt másold a Windows\System32 (régebbi OS esetén Windows\System) könyvtárba (ha ott már szerepel, akkor előbb készíts biztonsági másolatot a régi fájlról, majd (ne a másolatot) írd felül az újjal)

     -  kapcsold össze a megfelelő lib-eket és dll-eket. Ezt Borland fordító esetén így teheted meg:

           -  lépj be a C/C++ fordító Lib alkönyvtárába (parancssor-ban), majd írd be (Windows\System legyen régi OS esetén):

                 -  IMPLIB glut32.lib c:\Windows\System32\glut32.dll

                 -  IMPLIB glu32.lib c:\Windows\System32\glu32.dll

                 -  IMPLIB opengl32.lib c:\Windows\System32\opengl32.dll

     -  ha nem Borland fordítód van, akkor olvasd el a README-win32.txt fájlt, melyet a GLUT-tal együtt töltöttél le

-  ha mindent megcsináltál, akkor lehet kezdeni

-  az alábbi 2 linkről a simple.c program 2 változatát mentheted le; az első a Linux-os verzió, a második windows-ban fordítható:

        simple.c  simple2.c

Ingyenesen letölthető Borland C++ Compiler 5.5 parancssori fordító az alábbi linkről (ingyenes, de végig kell menni egy sor regisztráción):

http://www.borland.com/downloads/download_cbuilder.html


GLUT telepítése és használata Microsoft Visual Studio .NET alatt (köszönettel):

1. GLUT letöltése, a benne lévő fájlok bemásolása a megfelelő helyre
	- glut32.dll --> C:\Windows\system32
	- glut32.lib --> C:\Program Files\Microsoft Visual Studio\VC\lib
	- glut.h --> C:\Program Files\Microsoft Visual Studio\VC\include
Megjegyzés: a Visual Studio telepítési könyvtára és verziója alapján kis mértékben más is lehet az elérési útvonal (pl. VC helyett VC7, VC8... stb.).
2. Új Visual Studio project létrehozása
	- New/Project...
	- Win32 Console Application (Win32 Console Project) kiválasztása
	- a megjelenő varázslóban a végén pipáljuk ki az "Empty Project" checkboxot, hogy üres projectet hozzon létre
3. Forrásfájl hozzáadása
	- vagy adjunk hozzá egy új, üres C++ file-t (Project/Add New Item...), és szerkesszük kedvünkre
	- vagy Project/Add Existing Item... menüponton adjuk hozzá a már megírt forrást
4. Project tulajdonságok módosítása
	- Project/Properties... menüpont
	- A bal felső sarokba a Configuration legördülő menüből válasszuk az "All Configurations"-t
	- Configuration Properties/Linker/Input --> Additional Dependencies mezőbe írjuk be: "opengl32.lib glu32.lib glut32.lib" (idézőjelek nélkül!)
	- Configuration Properties/Linker/Command Line --> Additional Options szövegdobozba írjuk be: "/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup"
	- "OK"-val mentsük el a változásokat
5. Fordítás, futtatás
	- Fordítás, linkelés a szokásos módon (pl. Build/Build Solution ...)
	- Futtatás a szokásos módon (pl. Debug/Start Debugging)

Letölthető OpenGL header fájlok és könyvtárak Borland fordítóhoz (nem garantálható a működésük a rendszerbeli eltérések miatt, kérheti még a WINMM.dll-t, amelyet ingyenesen letölthetsz):

        gl.h  glu.h  glut.h

        glu32.lib  glut32.lib  opengl32.lib

        glu32.dll  glut32.dll  opengl32.dll

Letölthető OpenGL header fájlok és könyvtárak DEV C++ fordítóhoz (szintén nem garantálható rendszerfüggetlen működés) - köszönettel:

-  "Include\GL"-be:

        gl.h  glu.h  glut.h  glaux.h  glext.h

-  "Lib"-be:

        libglu32.a  libglut32.a  libopengl32.a  libglaux.a  libglut.a

-  továbbá:

        glut32.dll

 

 [   Home  |  CV  |  Scientific work  |  Teaching  |  Software  |  Photo gallery  |  Links  |  CUNY mirror   ]

Last modified:   April 05, 2007