EGE ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ LİSANS TEZİ BİLGİ FORMU 1. TEZ PROJESİNE İLİŞKİN GENEL BİLGİLER 1.1 Tezin Adı Grafik Yazılımlarına Yönelik Bir Çatının Tasarlanması ve Gerçekleştirimi 1.2 Tez Danışmanı ve Yürütücüleri Danışman Yürüten : Yrd. Doç. Dr Aybars UĞUR : Onur Dayıbaşı e-posta : dayibasi@bilmuh.ege.edu.tr 1.3 Tezin Konusu Bilgisayar Grafikleri Yazılım Mühendisliği 1.4 Tezin Yürütülmesinde İşbirliği Yapılacak Kuruluş veya Şirketler 1.5 Tezin Başlangıç ve Bitiş Tarihleri (Ay/Yıl) Ekim 2001 – Haziran 2002 Danışmanı İmzası 2. TEZ PROJESİ GEREKÇELERİ ve PLANI 2.1 Tez Projesinin Amacı Tez projesinin amacı, bilgisayar grafikleri alanında yazılım geliştiren kişilere temel oluşturacak bir Çatı "Framework" tasarlamak ve gerçekleştirimini yapmaktır. Bu amaçla, bilgisayar grafikleri donanımları, yazılımları, programlama dilleri ve yazılım geliştirme araçları incelenecektir. İnceleme ve araştırmanın ardından bilgisayar grafiklerindeki temel kavramlar anlatılacak ve örnek programlar geliştirilecektir. Yazılımlar değişik işletim sistemleri ve programlama dilleri üzerinde farklı API'ler kullanılarak yazılacak ve karşılaştırılacaklardır. Bilgisayar grafikleri alanındaki incelenen programlar ve yazılımlar, algoritmik açıdan sınıflara ayrılacak ve alt alanlarına göre hangi kavramların ağırlıklı olarak kullanıldığı belirlenecektir. Değişik tiplerde grafik yazılımları için, aynı tipte uygulamaların hazırlanmasını, geliştirilmesini sağlayacak bir “Framework” tasarımı ve gerçekleştirimi yapılacaktır. Bilgisayar Grafiklerinde yazılım geliştiren kişilerin yararlanabilecekleri bir web sayfası hazırlanacaktır. 2.2 Tez Projesinin Önemi Bu tez projesinde geliştirilecek olan “Framework”, bilgisayar grafiklerinde yazılım geliştirme sürecini hızlandıracak, yazılım geliştirmeyi kolaylaştırarak maliyetleri düşürecek, yazılım kalitesini arttıracaktır. Grafik yazılım geliştiricilerinin yazılım geliştirme sürecini kısaltarak daha kısa sürede ve daha az sorunlarla karşılaşarak hedefe ulaşmalarını sağlayacaktır. Bilgisayar grafiklerinde yazılım geliştiren kişilere kaynaklık edecek, etkin yazılımlar geliştirmelerini sağlayacaktır. Hazırlanacak “Tutorial”, deneyimsiz programcıların kod yazmalarını kolaylaştıracaktır. Bilgisayar grafiklerinde yazılım geliştiren kişilerin geliştirecekleri uygulamalarda, yazılım geliştiricinin düzeyine ve yazılımın türüne bağlı olarak en etkin donanımları, en etkin "Api"leri ve en etkin yöntemleri seçebilmelerini sağlayacaktır. Böylece, bilgisayar grafikleri gibi hızlı gelişen bir alanda, sayıları giderek artan ve sürümleri çıkan çok sayıda donanımın ve yazılım geliştirme aracının bulunduğu günümüzde, yazılım geliştirme alanındaki önemli bir boşluk doldurulmuş olacaktır. 2.3 Kullanılacak Materyal ve Yöntemler Kullanılacak Materyal (donanım, yazılım, işletim sistemi, programlama dili, API vs.) Donanım İşletim Sistemi Programlama Dili API Ortam 1 PC (Grafik Hızlandırıcı kart ile) Win98/NT VC ++, Java Direct3D, OpenGL, Java2D, Java3D Donanım İşletim Sistemi Programlama Dili API Ortam 2 Sun İş İstasyonu Solaris C++, Java OpenGL, Open Inventor, Java2D, Java3D Kullanılacak Yöntemler Bilgisayar grafiklerindeki temel ve yeni algoritmalar (görünen yüzeyleri belirleme yöntemleri, B-rep gibi üç boyutlu nesneleri temsil yöntemleri) 2.4 Tez Projesi Planı 1. ADIM (Bilgisayar Grafiklerine Ait Temel Kavramların Araştırılması ve İncelenmesi, Konulara İlişkin Küçük Uygulamalar Geliştirilmesi) Bu aşamada bilgisayar grafiklerindeki temel kavramlar incelenerek anlatılacak ve konulara ilişkin örnek programlar hazırlanacaktır. Bilgisayar grafikleri alanının, bilgisayar grafiklerinin kullanıldığı alanların, en yeni grafik donanım, yazılım ve yöntemlerinin araştırılması. Yazılımlar konusunda, işletim sistemlerinin, programlama dillerinin ve "API"lerin incelenmesi. 2D ekranda “Primitive”ler çizmek için bilinmesi gereken temel 2D “raster” grafik kavramlarının ve algoritmalarının mantıksal olarak açıklanması. 2D “Primitive”lerin özelliklerinin anlatılması. 2D geometrik dönüşümlerin (taşıma, boyutlandırma, döndürme, vb.) mantıksal olarak nasıl gerçekleştiğinin anlatılması. 3 Boyutlu dünyaların nasıl iki boyuta aktarıldığı, hangi aşamalardan geçtiğinin anlatılması. Yapısal ve hiyerarşik modellemenin nasıl yapıldığının anlatılması. Kullanıcı Arayüzü ve Etkileşim için gerekli sınıf ve metotların anlatılması. 3D nesnelerin temsilinin (representation) nasıl yapıldığının anlatılması. 3D geometrik dönüşümlerin nasıl gerçekleştiğinin anlatılması. 3D’de, görünen yüzeyleri belirleme yöntemlerinin anlatılması. Bilgisayar grafiklerinde gerçekçi görüntüler elde etmek için kullanılan Aydınlatma Modelleri ve Yüzey Kaplama Yöntemlerinin anlatılması Renk modellerinin ve renk teorisinin anlatılması Bilgisayar Animasyonları ile ilgili kavramların ve yöntemlerin anlatılması 2. ADIM (Bilgisayar Grafiklerindeki Hazır Yazılım ve Uygulamaların Yapısal Açıdan Ayrıntılı Olarak İncelenmesi) Aşağıdaki türlerdeki hazır yazılımlar ayrıntılı olarak incelenecektir : Boyama (2D) Yazılımları (Photoshop, PaintShop, Gimp, PhotoPaint ...) Modelleme (3D & 2D) Yazılımları (3DS Max, AutoCad, Maya, Lightwave Modeller, Poser, Bryce, HashMaster, CorelDraw, Adobe Illustrator ...) Canlandırma Yazılımları (3DS Max, Maya, Lightwave Modeler, Hash Master) Film Sonrası Yazılımları (Adobe Premiere, Adobe After Effects ...) Yayıncılık Yazılımları Kullanıcı Arayüzleri Oyun & Simulasyon Yazılımları Görüntü İşleme ve "Vision" Yazılımları 3. ADIM (Yazılımlara Yönelik Grafik “Framework'ünün” Gereksinimlerinin Belirlenmesi) 4. ADIM (Yazılımlara Yönelik Grafik Framework'lerinin Tasarlanması) 5. ADIM (Yazılımlara Yönelik Grafik Framework'lerinin Kodlanması) 6. ADIM (Yazılımlara Yönelik Grafik Framework'lerinin Test Edilmesi) 3. PROJENİN KAYNAĞINI OLUŞTURAN LİTERATÜR LİSTESİ Deitel, H. M. and Deitel, P.J., 1999, Java How to Program, Third Edition, Prentice-Hall, USA, 1355 p. F.S.Hill, JR., 2000, Computer Graphics Using OpenGL, Second Edition, Prentice-Hall Mason Woo, Jackie Neider, Tom Davis, Dave Shreiner, 1999, OpenGL Programming Guide, Third Edition, Addison-Wesley Renata Kempf and Chris Frazier, 1999, OpenGL Reference Manual, Addison Wesley Ron Fosner, 1998, OpenGL Programming Windows 95 and Windows NT, Addison Wesley