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


Quiz 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ı

    Ö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.

    Dersin Projesi

  • 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.