T.C. Ýstanbul Ticaret Üniversitesi

Bilgisayar Mühendisliði Bölümü

Bilgisayar Grafiklerine Giriþ (Introduction to Computer Graphics)

Dersi Veren: Þadi Evren ÞEKER (Yük. Müh.)

Dersin Web Sitesi: www.sadievrenseker.com/graf

Dersin Öðrenci Ýletiþim Sitesi : www.sesders.com

Email Adresi:graf [at] sesders.com

Dersin Amacý:

Bu dersin amacý 3 boyutlu bilgisayar grafiklerine tatbiki ve nazari bir giriþ yapmak ve derste uygulama yapabilecek edinimleri kazandýrmaktýr. Dersi alan öðrencilerin bu ders sayesinde 3 boyutlu etkileþimli grafik uygulamalarýný yapabilecek seviyeye gelmeleri beklenmektedir. Derste iþlenecek konular kabaca grafik modelleri ve sistemleri, geometrik gösterimler, transformasyonlar (þekil deðiþtirme), grafik programlama, giriþ çýkýþ ve etkileþim özellikleri, görüntüleme teknikleri (viewing and projections), aydýnlatma ve renklendirme, gölgelendirme ve kaplama teknikleri, animasyonlar ve nesne yönelimli modelleme olarak sayýlabilir.

Yukarýdaki görüntü bilgisayar grafikleri ile ilgili çok sayýda yazý içeren http://collgran.wordpress.com/ adresindeki blog’dan alýnmýþtýr.

Olasý Ders Ýçeriði

·         Bilgisayar Grafiklerine giriþ ve temel kavramlar

·         Basit bilgisayar grafiði algoritmalarý ve þekil çizme yöntemleri

o   Doðrudan Çizim Algoritmasý (Direct Draw Algorithm , DDA)

o   Bresenham Doðru Çizim Algoritmasý (Bresenham’s Algorithm)

o   Pisagor Yöntemi Ýle Çember (Pythagorean Theorem in Circle Drawing)

o   Kutup Koordintalarý ile Çember Çizimi (Circle Drawing with Polar Coordinates)

o   Ortanokta Çember Çizimi (Circle Drawing with Midpoint Algorithm)

o   Yumuþatma (Antialiasing)

 

·         OpenGL (Lütfen aþaðýdaki örnek kodlara bakýnýz)

·         Çokgenler (polygons)

o   Çokgen (Poligon, Polygon)

o   Çokgenlerin Üçgensel Gösterimi

o   Çokgenlerin Doldurulmasý

o   Sýnýr Doldurma Algoritmasý

o   Taþýrarak Doldurma Algoritmasý

o   Çokgenler ve OpenGL

·         Kullanýcý Ýletiþim (User Interaction)

o   Kullanýcý girdisi ve etkileþim (Input and interaction)

o   Menü ve alt menü oluþturulmasý ve fareye baðlanmasý

·         Þekil Deðiþtirmeler (Transformations)

o   2 Boyutlu þekil deðiþtirmeler (Transformations)

o   Þekil Taþýma (Translation)

o   Döndürme (Rotation)

o   Ölçekleme (Scaling)

·         Geometrik nesneler (Geometric objects )

·         Ýzdüþüm (projection) ve yansýmalar

·         Kamera, Perspektif ve görüntü iþlemleri

o   Kamera açýsý ve görüntü noktasý

o   Redbook üzerinde kamera ve görüntüleme iþlemleri

o   Örnek Þablon Kod

·         Fog ve Backface uygulamalarý (Visible Surface Detection)

o   Arkayüz algýlama (Backface Detection)

o   Derinlik Hafýzalama (Z-Buffering)

o   A-Buffering

o   Hat Tarama Algoritmasý (Scanline Algorithm)

o   Derinlik Vurgusu (Depth Cueing)

o   OpenGL ile Arkayüz iþleme


Quiz 1 soru ve çözümleri
Vize 1 soru ve çözümleri

·         Gölgelendirme (Shading)

·         3B model inþasý (Building 3D models)

·         Hafýzalama ve Desen giydirme (Buffers & Texture mapping)

·         Birleþtirme ve bütünleme (Compositing and blending)

·         API uygulama örnekleri (API implementation examples)

·         Hiyerarþik ve nesne yönelimli modelleme (Hierachical and object-oriented modeling)

Örnek OpenGL kodlarý

  • Basit bir OpenGL penceresi açan program
  • Ekrana 3 adet üçgen ve bir döngü ile quadlardan çizgi çizen kod
  • Ekrana basit þekilleri basit özellikler ile çizen kodYukarýdaki kodlar DEV-CPP ile yazýlmýþ proje kodlarýdýr.

    Sýnýf Çalýþmalarý

    Classwork 1 Çözümü (sabah)

    Classwork 1 Çözümü (öðle) [line_sayisi isimli deðiþkeni deðiþtirerek deneyebilirsiniz]

    Örnek kullanýcý iletiþim programý

    Örnek transformation matrix kullanan (Birden fazla kere push eden) kod. Daha detaylý bilgi için Çoklu þekil deðiþtirmeler baþlýklý yazýyý okumanýzý tavsiye ederim.

    Kamera dolaþma çalýþmasý

    Kamera Dolaþmasýna ilave olarak Fog ve Backface uygulamasý

    Kaplama (Texture) ve aydýnlatma örneði Iþýk kaynaðýný tam olarak anlayamayanlar Bu örneðe bakabilirler

    Ödevler

  • 1. Ödev: Ekrana çizgi ve çember çizen kod (çember ve çizgi için derste anlatýlan algoritmalardan bir tanesi kullanýlacak. Ayrýca kodunuzdaki koordinat, yarýçap gibi bilgiler deðiþtiðinde kodunuz doðru çalýþacaktýr)
  • 2. Ödev: Detaylar için týklayýnýz.
  • 3. Ödev: Ekrana OpenGL'de temel objeyi menüden seçerek çizdirebilen ve bu objelerin rengini ve çizim modunu (GL_FILL, GL_LINE) deðiþtirebilen bir kod yazýnýz. OpenGL objelerine Buradan eriþebilirsiniz. (Sadece sabah grubu için)
    Sabah Grubu Ödev GüncellemesiÖðle Grubu Ödev Güncellemesi
    3. Ödev ve açýklamasý
    Robot Kol Odevi
    Rubiks Cube Odevi ( basitçe bir rubiks küpünü ekranda gösterin ve istediðiniz kullanýcý kontrolleri ile rubiks küp üstünde yapýlan iþlemleri kullanýcýnýn yapmasýna izin verin. (Kullanýcý rubiks küp üstüne yapýlamayan iþlemleri sizin kodunuzda da yapamayacak)
    3. Ödev ve açýklamasý
    Robot Kol Odevi
    Rubiks Cube Odevi ( basitçe bir rubiks küpünü ekranda gösterin ve istediðiniz kullanýcý kontrolleri ile rubiks küp üstünde yapýlan iþlemleri kullanýcýnýn yapmasýna izin verin. (Kullanýcý rubiks küp üstüne yapýlamayan iþlemleri sizin kodunuzda da yapamayacak)
    Yukarýdaki bütün ödevler 18 kasým 2008 son teslim tarihlidir. Sesders sitesinde tek bir dosya olarak 3 ödevi de gönderiniz.
    Tarih 02 Aralýk 2008 olarak deðiþtirilmiþ, teslimler vizeden sonraki haftaya ertelenmiþtir.

    13 Ocak Salý günü, her iki section için de, sonraki hafta proje sunumlarý yapýlacaðý için ders yapýlmayacaktýr.



    Projeleriniz Duyurulmuþtur

    Dersin Projesi


    Örnek satranç projesini inceleyebilirsiniz dosyanýn þifresi sesders.com adresinde sorucevap bölümünde bulunuyor.
  • Projelerinizin teklif mektubunu en geç 19 Aralýk 2008 (Cuma günü) gece yarýsýna kadar yollayabilirsiniz.
  • Teklif mektubunuzda projenizi tanýtýnýz, projede izlemeyi düþündüðünüz adýmlarý yazýnýz. Karþýlaþmayý tahmin ettiðiniz problemleri ve tasarladýðýnýz çözümleri yazýnýz. Ve hepsinden önemlisi derste iþlenen hangi konuyu nasýl kullanacaðýnýzý açýkça belirtiniz.
  • Teklif mektubunuzu yollamanýz baþlayabileceðiniz anlamýna gelmez, size belirli bir incelemeden sonra uygun olup olmamasý ile ilgili cevap gelecektir. Ancak uygun bulundu mesajýndan sonra projenize baþlayabilirsiniz.
  • Teklif mektubu onaylanmayanlar verilen tarihe (19 aralýk) kadar farklý proje önerilerinde bulunabilirler.
  • 19 Aralýk tarihine kadar projesi belirlenmeyen veya hiç teklifte bulunmayanlara sistem tarafýndan otomatik olarak havuzdan proje atanacaktýr.
  • Gerek proje teklifi ile gerekse otomatik atama ile proje alanlarýn 19 Aralýktan sonra proje deðiþtirmeleri kesinlikle mümkün deðildir.
  • 16 Ocak 2009 tarihi gece yarýsýna kadar projenizin dökümanýný (aþaðýda açýklanacaktýr) ve kodunu yollayýnýz. Bu tarihten sonra yollanan rapor ve kodlar deðerlendirmeye alýnmayacaktýr. Mümkünse bu tarihe kadar býrakmayýp daha önce yollayýnýz.
  • Final tarihleri içerisinde uygun olan zamanlarda sunum için randevü sistemi, tarih yaklaþýnca sesders.com adresinde açýlacaktýr, bu adresten size uygun bir tarih seçip randevü alýnýz. Bu randevüda projenizin demosunu yapacaksýnýz.
  • Projenizin rapor ve kod yollanmasý iþlemi sesders.com adresinden yapýlacaktýr. Teklif mektuplarýnýzý dersin email adresine yollamanýz gerekmektedir.
  • Her projeyi tek kiþi alabilir, grup projelerine izin verilmemektedir.
  • Bir proje, bir kiþi tarafýdan seçildiyse ikinci bir kiþi bu projeyi alamaz, burada ilk gelen alýr algoritmasý kullanýlacaktýr.
  • Örnek Proje dökümanlarý için týklayýnýz. Bu dökümanlar derste de söylediðim gibi tamamen fikir vermesi içindir bunlarýn dýþýnda eklemeniz gereken þeyler varsa ekleyebilirsiniz. ayrýca analiz ve tasarým için daha önceden vermiþ olduðum ders notlarýna bakabilirsiniz:
  • analiz notlarý
  • tasarým notlarý

    Kaynaklar

    Derste aþaðýdaki kitap esas alýnacaktýr:

    Edward Angel, Interactive Computer Graphics : A Top-Down Approach With

    OpenGL (4th Edition), Addison-Wesley 2006.

    Ayrýca,

    OpenGL Programming Guide, The Official Guide to Learning OpenGL, Woo,

    Neider, Davis, and Shreiner

    3D computer graphics, Alan Watt, Addison-Wesley, 2000.

    Computer Graphics with Java, G.W. Rowe, 2001.

    Kitaplarý da ders içeriðine uygun kaynak kitaplardýr.

    Bunun dýþýnda OpenGL için The OpenGL Programming Guide - The Redbook Kitabýný öðrencilerin okumasý önemle tavsiye edilmektedir

    Uygulama Gereksinimleri

    Dersin tatbiki kýsmý için OpenGL üzerinde kod geliþtirilecektir. Kod geliþtirme ortamý olarak DEV C++ kullanýlacaktýr. Ayrýca bazý örnekler için Visual Studio ve JAVA üzerinde de kod geliþtirme ile ilgili bilgi verilecektir.

    Bu ortamýn kurlumu ve kullanýmý konusunda derslerde bilgi verilecektir ancak öðrenciler farklý ortam ve dilleri ve geliþtirme ortamlarýný kullanabilirler. Bu farklý ortam ve dillerin ve ortamlarýn ödev veya proje gibi not karþýlýðý olan teslimler sýrasýnda kullanýlmasý için ise önceden izin alýnmasý gerekmektedir.

    Ders saati ve yeri

    Salý günleri saat 10-13.00  arasý ve yine Salý günleri 14-17.00 arasý  224 numaralý derslik.

    Dersin deðerlendirmesi:

    ·         Ödevler %10

    ·         Quizler&Classwork %10

    ·         Arasýnav %20

    ·         Dönem Projesi %20

    ·         Final %40

    Uyulmasý gereken önemli kurallar:

    1.       Öðrencilerin dersin web sitesini takip etme zorunluluðu vardýr. Ders ile ilgili duyurular, ders notlarý ve gerekli olan materyaller bu site üzerinden saðlanacaktýr.

    2.      Öðrencilerin ödev, proje ve sunum teslimi ve bu teslimler sýrasýnda gereken saatlerin belirlenmesi gibi dersin iþletilmesine iliþkin iþlemler, dersin öðrenci iletiþim sitesi üzerinden yapýlacaktýr. Her öðrenci derse geldiði ilk günden itibaren bu site üzerinden bir kullanýcý oluþturmak ve ders boyunca yapacaðý teslimleri bu site üzerinden yapmak zorundadýr.

    3.      Teslim edilen çalýþmalar veya öðrencinin baþarý notu ile sonuçlanacak herhangi bir çalýþmada dersi alan diðer öðrenciler veya internet üzerindeki herhangi bir kaynak veya basýlý herhangi bir kaynak ile akademik kurallar çerçevesinde uygun atýf verilmediði taktirde teslim edilen bu çalýþma kopya kapsamýnda deðerlendirmeye alýnacak ve ilgili disiplin maddesi iþletilecektir.