Üç Boyutlu Binaların Web Üzerinde Otomatik Olarak JOGL ile Modellenmesi



Benzer belgeler
Akademik Bilişim '07 Dumlupınar Üniversitesi / Kütahya. Üç Boyutlu Binaların Web Üzerinde Otomatik Olarak JOGL ile Modellenmesi

Üç Boyutlu Binaların Web Üzerinde Otomatik Olarak JOGL ile Modellenmesi. Web Based 3D Automatic Building Generation with JOGL

Sanal Ortamda Nesnelerin Haptic Kol ile Manipülasyonu. Sevcan AYTEKİN Alpaslan DUYSAK

Google Web Toolkit ile Öğretim Elemanı Otomasyon Sistemi

Üç Boyutlu Grafik Teknolojilerinin Mobil Öğrenme Alanı ile Bütünleştirilmesi

Bilişim Garaj Akademisi Nedir?

SolidWorks Macro, SolidWorks API. Yusuf MANSUROĞLU Mühendislik Hizmetleri Müdür Yardımcısı

BCA611 Video Oyunları için 3B Grafik. Zümra Kavafoğlu

COM337 Bilgisayar Grafiği. OpenGL ile Grafik Programlama. Dr. Erkan Bostancı

BSM 532 KABLOSUZ AĞLARIN MODELLEMESİ VE ANALİZİ OPNET MODELER

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 10. Yrd.Doç.Dr.Hacer Karacan

İNTERNET ÜÇ BOYUT X3D İLE. Tahir Emre KALAYCI. Ege Üniversitesi Bilgisayar MühendisliM ŞUBAT 2005

Bilgisayar Grafikleri

Yazılım Mühendisliği 1

OpenGL Uygulamaları. 1. Giriş. 2. OpenGL. Deney 2

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Android e Giriş. Öğr.Gör. Utku SOBUTAY

Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015

MOBİL UYGULAMA GELİŞTİRME

Akıllı telefonlar, avuçiçi bilgisayarlar ile taşınabilir (cep) telefonların özelliklerini birleştiren cihazlardır. Akıllı telefonlar kullanıcıların

Manisa Celal Bayar Üniversitesi Yazılım Mühendisliği Bölümü YZM Veri Yapıları Dersi. Proje#2

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6

Java Temel Özellikleri

Windows 10 için Java JDK 8 ve NetBeans IDE 8.2 Kurulumu Detaylı Anlatım

Akademik Uygulamalar ve Linux. Fatih Mehmet AVCU İnönü Üniversitesi Enformatik Bölümü

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 7. LINUX OS (Sistem Yapısı) BİLGİ & İLETİŞİM TEKNOLOJİLERİ. LINUX Yapısı

Spring Giriş Eğitimi

BİLGİSAYAR DESTEKLİ TASARIM AUTOCAD DERSİ. 1. HAFTA Öğr. Gör. Serkan ÖREN

Start : Bu method init methodundan hemen sonra çalışır ve applet dosyası yürütülmeye başladığında çalışmaya başlar.

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

BİT in Temel Bileşenleri (Yazılım-1)

Fırat Üniversitesi Hastanesi Dinamik Web Sayfası

4. Bölüm Programlamaya Giriş

OpenGL Uygulamaları. 1. Giriş. 2. OpenGL

Java Programlama Giriş

OMNET Ağ Benzetim Yazılımı (Network Simulation Framework) BİL 372 Bilgisayar Ağları. GYTE - Bilgisayar Mühendisliği Bölümü

YENİ GRAFİK UYGULAMA GELİŞTİRME ARAYÜZLERİNİN KARŞILAŞTIRILMASI

AKADEMİK LMS Web Tabanlı Uzaktan Eğitim Genel Bilgi ve Ders Aktivitelerine Erişim Öğrenci Kullanım Kılavuzu

İMZAGER PROGRAMI İLE UZUN DÖNEM İMZA TİPİNDE ELEKTRONİK İMZALI BELGE OLUŞTURMA

Sunum İçeriği. Programlamaya Giriş

TCMB Deneyim Raporu. Kurumsal Java Uygulama Platformu. Sacit Uluırmak. Türkiye Cumhuriyet Merkez Bankası Sistem Araştırma ve Planlama Müdürlüğü

Akdeniz Üniversitesi

BİLGİSAYAR DESTEKLİ TEKNİK RESİM. Hazırlayan: Araş. Gör. Ezgi Öztorun

Swing ve JDBC ile Database Erişimi

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

NACA PROFİL AİLE GEOMETRİSİ HESAP PROGRAMI KULLANMA KILAVUZU

Data Structures Lab Güz

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 1. Bölüm C# Programlamaya Giriş

Sade ve tam ekran masaüstü kullanımının temel çıkış noktası, aranılan özelliğe çabuk erişimi sağlayan yenilikçi kullanıcı deneyimidir.

Model Tabanlı Geliştirmede Çevik Süreç Uygulanması

ÖZGÜR YAZILIMLAR İLE J2EE

Akdeniz Üniversitesi

Kaynak Kodlardan Derleme. Turquaz Muhasebe. Versiyon 0.2. Hüseyin Ergün. 26 Mart 2005

VERİ KAYNAKLARI. Bilgi sisteminin öğelerinden biride veri

VERİ TABANI UYGULAMALARI

Veritabanı Uygulamaları Tasarımı

R ile Programlamaya Giriş ve Uygulamalar

Java ile OpenGL e Giriş. NetBeans IDE si üzerinden kurulum

1.1 Metodolojiyi Gerçeklemek Üzere Geliştirilen Altyapı

COĞRAFİ BİLGİ SİSTEMLERİ SERVER MİMARİSİ SERVER UYGULAMA GELİŞTİRME EĞİTİMİ

BİL BİLGİSAYAR PROGRAMLAMA (JAVA)

MONTE CARLO BENZETİMİ

DESTEK DOKÜMANI. Ürün : Tiger Enterprise/ Tiger Plus/ Go Plus/Go Bölüm : Kurulum İşlemleri

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

Yrd. Doç. Dr. Gökçe BECİT İŞÇİTÜRK. Gökçe BECİT İŞÇİTÜRK 1

Data Science Boot Camp

Moodle-IST Kullanım Klavuzu

Görsel Programlama DERS 07. Görsel Programlama - Ders07/ 1

Programlama Dilleri II. Bilgisayar ve Öğretim Teknolojileri Öğretmenliği

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, kabuk ve diğer temel kavramlar) Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu

ANKARA ÜNİVERSİTESİ ELMADAĞ MESLEK YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI PROGRAMI DERS İÇERİKLERİ

Matematik ve Geometri Eğitiminde Teknoloji Tabanlı Yaklaşımlar

X3D ve Xj3D. Tahir Emre KALAYCI Güz Dönemi İleri Bilgisayar Grafikleri Dersi

MOODLE UZAKTAN ÖĞRETİM SİSTEMİ


Javascript Geliştiricileri İçin Xaml Ve Microsoft Silverlight

Ecat 8. Hakbim Bilgi İşlem A.Ş. Versiyon

12. Kat Oluşturma. Bu konuda mevcut bir katın bilgilerini kullanarak nasıl yeni katlar oluşturulabileceği incelenecektir.

İş Uygulamalarınızı 3. Boyuta Taşıyın!

Akdeniz Üniversitesi

Akdeniz Üniversitesi

Pardus. S.Çağlar Onur, 21 Aralık Pardus Projesi [TÜBİTAK / UEKAE] Linux Kullanıcıları Derneği

4.1. Grafik Sihirbazını kullanarak grafik oluşturma


DESINING AND IMPLEMENTING 3D, MULTIPLAYER AND REAL TIME COMPUTER GAME (SUMMARY)

MS POWERPOINT Şekil 111 Powerpoint 2010 Programını Başlatmak

İş Zekâsı Sistemi Projesi

Üç Boyutlu Çerçeve Yapıların Statik Analizi için Geliştirilen Bir Bilgisayar Programı: YapAn05

ORM & Hibernate. Ahmet Demirelli. SCJP 5.0, SCWCD 1.4 ahmetdemirelli@sabanciuniv.edu

Doç.Dr.Erkan ÜLKER, Selçuk Üniversitesi Mühendislik F, Bilgisayar Mühendisliği Bölümü

Balon & Banka Teslim tarihi: 17 Kasım 2008

MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 12: Grafik Kullanıcı Arayüzü (Graphical User Interface-GUI)

Kablosuz Algılayıcı Ağları İçin TinyOS İle Uygulama Geliştirme

5. PROGRAMLA DİLLERİ. 5.1 Giriş

dmags Türkiye nin En Büyük Dijital Dergi Mağazası

Bilişim Teknolojilerine Giriş

FINDIK Herkese Açık Filtre

MATRİKS E-BROKER ELEKTRONİK İŞLEM PLATFORMU MATRİKS TRADER VE JAVA MATRİKS ENTEGRASYONLARI

Yazılım Mühendisliği Bölüm - 3 Planlama

Transkript:

Akademik Bilişim 07 - IX. Akademik Bilişim Konferansı Bildirileri 31 Ocak - 2 Şubat 2007 Dumlupınar Üniversitesi, Kütahya Üç Boyutlu Binaların Web Üzerinde Otomatik Olarak JOGL ile Modellenmesi Ege Üniversitesi, Bilgisayar Mühendisliği Bölümü, 35100, Bornova / İzmir aybars.ugur@ege.edu.tr, erayhangul @ gmail.com, tahir.kalayci@ege.edu.tr, dogan.aydin@ege.edu.tr Özet: Bu çalışmada, Java programlama dili üzerinden OpenGL yordamlarının etkin bir şekilde kullanımını sağlayan JOGL ( Java Open Graphics Library ) uygulama programlama arayüzü incelenmiştir. N katlı herhangi bir binanın, JOGL ile web tabanlı olarak üç boyutlu modellenmesini sağlayan bir yazılım geliştirilmiş ve bina görselleştirmeyi otomatikleştiren bu uygulamadan elde edilen sonuçlar, üç boyutlu içerik oluşturmada kullanılan teknikler bazında tartışılarak irdelenmiştir. Anahtar Kelimeler: Görselleştirme, Üç Boyutlu Bilgisayar Grafikleri, Web3D, Modelleme, JOGL Web Based 3D Automatic Building Generation with JOGL Abstract: In this academic work, JOGL (Java Open Graphics Library ) API which provides use of OpenGL methods through calling them from Java, is examined. A web based application that constructs automatically any building with N floor(s) is developed with JOGL. The results we obtained from our automatic building generation application are discussed through comparison of 3D content generation methods. Keywords: Visualization, 3D Computer Graphics, Web3D, Modelling, JOGL. 1. GİRİŞ JOGL, Java tabanlı OpenGL destekli grafiksel uygulamalar geliştirmek için, açık kaynak kod projesi şeklinde geliştirilip ortaya çıkarılmış bir programlama arayüzüdür. JOGL kullanılarak oyunlar, etkileşimli eğitim amaçlı uygulamalar, grafiksel modelleme/tasarım yapılabilen editörler vb. geliştirilmektedir.[7] [8] [9] JOGLun çalışma mantığı, C programlama dili ile yazılmış OpenGL kütüphanesine ait yordamların, arka planda JNI (Java Native Interface ) kullanılarak çağrılması çerçevesi üzerine oturtulmuştur. Dolayısıyla JOGL un kullanılmak istendiği platform, OpenGL in çalıştırılmasını desteklemelidir. JOGL, Java üzerinden OpenGL kullanımını sağlayan Java3D, GL4Java gibi diğer uygulama programlama arayüzlerinin aksine; OpenGL çağrılarını belirli bir kaç sınıfın içerdiği metodların prosedürel olarak 655 çağrılması şeklinde kullanımına imkan vermekte; sonuçta bu tarz bir yaklaşım daha hızlı bir şekilde grafiksel görüntüleme yapılmasına büyük katkı sağlamaktadır. Yapılan bu çalışmamızda, kullanıcının belirttiği kat sayısı ve kat uzunluk, genişlik ve derinlik parametrelerine göre otomatik olarak üç boyutlu bir binanın modeli hızlı bir şekilde oluşturulmaktadır. Kullanıcılar geliştirdiğimiz bu yazılım sayesinde internet üzerinde oluşturdukları bu modelleri, üç boyutlu (3B) temel dönüşüm işlemlerini (taşıma, döndürme, ölçeklendirme) uygulayarak etkileşimli olarak inceleyebilmektedirler. 2. Java Tabanlı 3B İçerik Oluşturma Kütüphanelerinin Karşılaştırılması Java programlama dili ile üç boyutlu içerik oluşturmanın temelleri ilk defa 1996 yılında

Üç Boyutlu Binaların Web Üzerinde Otomatik Olarak JOGL ile Modellenmesi Intel, Silicon Graphics, Apple ve Sun firmalarının girişimiyle başlamıştır. 1998 yılı sonlarında Java3D nin ortaya çıkışı ile başlayan süreç, 2000 yıllarında GL4Java nın ve 2003-2004 döneminde Java3D nin gelişimine ara verildiği sırada JOGL un ortaya çıkışı ile farklı bir boyut kazanmıştır. [6] JOGL vs. Java3D için hazır bir paket gibi kullanılabilirken JOGL sadece grafiksel öğelerin görüntülenmesinde kullanılır. Örneğin ses ve ses efekti işlemleri için JOAL( Java Open Audio Library ) ve girdi kontrolü (klavye, fare, oyun çubuğu vb.) için JInput kütüphaneleri kullanılarak bütünsel sonuca gidilebilir. [2] Java da, 3D içerik oluşturmada, JOGL öncesi kullanılan en yaygın uygulama programlama arayüzü JavalD dir. Günümüzde Java3D ile geliştirilmiş bir çok grafiksel uygulama mevcuttur. Java3D nin çalışma mantığı, ağaç veri yapısında yer alan düğüm gruplarının genel görüntüleyici tarafından belirlenen hiyerarşik yapıya göre grafiksel içeriğin oluşturulması şeklinde belirlenmiştir. Bu yaklaşım, uygulama geliştiriciler açısından programlama seviyesinde kolaylık getirirken, uygulamaların çalışma hızının düşük olmasına sebep olmaktadır. Ayrıca grafiksel öğelerin oluşturulmasında OpenGL de olduğu kadar gerçekçilik verilememektedir. JOGL, hız ve gerçekçiliğin arttırılması ve uygulamalardaki belirsiz hatalar ile uyumsuzlukların giderilmesi sonucu; Java3D nin belirtilen eksikliklerini kapatarak, 3D içerik oluşturmada daha etkin bir çözüm durumuna gelmiştir. JOGL vs. LWJGL JOGL a alternatif olabilecek belli başlı uygulama programlama arayüzlerinden biri de LWJGL ( Lightweight Java Game Library ) dir. Bu kütüphane Microsoft DirectX in Sun Java tarafındaki karşılığı olarak düşünülebilir. [10] Her iki kütüphane de arka planda yapılacak bir çok işi kendi yapıları içinde çözümlemektedirler ancak LWJGL kendi pencere sistemi üzerinden çalıştığından var olan Java uygulamaları ile birleştirilmesi pek de kolay değildir. Ayrıca JOGL, Java nın AWT, Swing gibi bileşenleriyle rahatlıkla birleştirilerek kullanılabilir. LWJGL grafiksel bir uygulamayı geliştirmek 656 3. JOGL ile Web Tabanlı Etkileşimli 3B Uygulamalar Geliştirme 3.1 JOGL Kurulum Geliştirilen uygulamaların çalıştırılması için yapılması gereken kurulum işlemleri çoğu zaman kullanıcıları ve uygulama geliştiricileri sıkmaktadır. Özellikle JOGL un kurulumunda bu sıkıntıların yaşandığı görülmektedir. Kurulumda bazı püf noktalarının eksiksiz yerine getirilmesi gerekmektedir. [1] Kurulum ile ilgili dosyaları projenin https:// iogl.dev.java.net sitesinden indirdikten sonra aşağıdaki işlemler yapılarak geliştirme/test ortamı hazırlanabilir : İndirilen sıkıştırılmış haldeki dosya içerisindeki sistem kütüphanelerinin (windows için *.dll, linux için *.so uzantılı olmak üzere) Java çalışma ortamının kurulduğu dizin altındaki /bin dizini altına kopyalanması *.jar uzantılı uygulama programlama arayüzü kütüphane dosyalarının ise Java çalışma ortamının kurulduğu dizin altındaki /lib/ext dizini altına kopyalanması Örneğin windows yüklü bir makinada Java çalışma ortamının yüklü olduğu dizini C:\Java\jre1.5.0_08 olarak ele alırsak jogl.dll, jogl_awt.dll, jogl_cg.dll dosyaları C:\Java\jre1.5.0_08\bin altına; jogl.jaf dosyası ise C:\Java\jre1.5.0_08\lib\ext altına kopyalanmalıdır.

Akademik Bilişim 07 - IX. Akademik Bilişim Konferansı Bildirileri 31 Ocak - 2 Şubat 2007 Dumlupınar Üniversitesi, Kütahya Günümüzde Eclipse, JBuilder, IntelliJ, NetBeans... vb. bir çok Java uygulama geliştirme editörü kullanılabilmektedir. Kullandığımız editörden sistemimizde yüklü olan Java çalışma ortamını JOGL kurulumunda kullandığımız çalışma ortamı olarak belirlediğimiz anda, JOGL uygulamalarımızı geliştirebilecek ve test edebilecek şartlar sağlanmış olacaktır. JOGL kütüphanesinde bunların haricinde bir çok sınıf bulunmaktadır. Şekil - 1 de üç adet farklı renkteki (kırmızı, yeşil ve mavi) dişli çarkın JOGL kullanılarak birbirine bağımlı olarak dönme olayını örnekleyen uygulamanın ekran görüntüsü verilmiştir : Kurulumun başarı ile gerçekleşip gerçekleşmediğini öğrenmek amacıyla aşağıdaki gibi basit bir test kodu çalıştırılabilir System.loadLibrary( jogl ); Bu kod satırının, UnsatisfiedLinkException gibi bir istisna fırlatması; Java çalışma ortamının sistem kütüphanelerini bulamaması sonucudur. Kurulum yeniden gözden geçirilmelidir. 3.2 JOGL Genel Sınıf Yapısı Aşağıda JOGL içerisindeki temel sınıf ve arayüzler ( interface ) kısaca açıklanmaktadır : javax.media.opengl.gl OpenGL e erişim için kullanılan temel arayüz sınıfıdır. Grafiksel içeriği tutar. javax.media.opengl. GLAutoDrawable Olay tabanlı işleme mekanizması temelinde görüntülenme işleminin yapılmasını sağlayan arayüz sınıfıdır. javax.media.opengl. GLEventListener Uygulamada etkileşim sırasında görüntülemeyi değiştirebilecek olayların görüntülemeye olan etkisini sağlayan arayüz sınıfıdır. javax.media.opengl.glcanvas AWT pencere sistemi üzerinden grafiksel öğelerin görüntülenmesini sağlayan ağır bir komponenti tanımlayan sınıftır. javax.media.opengl.gljpanel Swing üzerinden grafiksel öğelerin görüntülenmesini sağlayan hafif bir komponenti tanımlayan sınıftır. javax.media.opengl.glcapabilities Sistemde kurulu olan OpenGL üzerinden, görüntüleme aşamasında nelerin yapılması gerektiğini belirleyen sınıftır. 657 Şekil 1. JOGL Gears Demo Ekran Görüntüsü 4. Web Tbanlı Üç Boyutlu Bina Modelleme İnternetin hızlı bir şekilde büyümesi ile birlikte kullanıcılar, günlük hayatlarındaki bir çok işlemlerini internet üzerinden gerçekleştirmeye başlamışlardır. Bir çok firma ürün ve hizmetlerini internet üzerinden pazarlamaktadır. Bu yaklaşım; insanların, alacağı ürün veya hizmetler için görsel yönden güçlü tanıtımları talep etmelerine ön ayak olmuştur. Böylece internet üzerinden yayınlanabilecek iki veya üç boyutlu grafiksel içerik oluşturma gereksinimlerini karşılayacak yeni yapıların ortaya çıkması sağlanmıştır. Java, Java3D ve JOGLun JApplet teknolojisi üzerinden kullanılmasına imkan sağlayarak bu gereksinimi etkin bir şekilde karşılamaktadır. İki boyutlu grafikler yıllardır internetin ve popüler yazılımların (kelime işlemciler, tablolama yazılımları, sunum yazılımları) doğal bir parçası olarak kullanılmaktadır. Üç boyutlu grafikler ise; Bilgisayar Destekli Tasarım ve Bilgisayar Destekli Üretim Bilim ve Bilimsel Görselleştirme Eğitim ve Öğretim Eğlence Reklamcılık Sanat Sanal Gerçeklik ve Güçlendirilmiş Gerçeklik gibi bir çok alanda kullanılmaktadır. [3]

Üç Boyutlu Binaların Web Üzerinde Otomatik Olarak JOGL ile Modellenmesi Üç boyutlu modelleme genel olarak yukarıdaki başlıkların tümünde kullanılan genel uygulamalardan biridir. 3B olarak modellenecek bir binanın var olan çizim veya modelleme programlarıyla herhangi bir birey tarafından ortaya çıkarılması çok kolay olmayan bir süreçtir. Binaların üç boyutlu olarak otomatik bir şekilde modellenmesinde prosedürel programlama yaklaşımının kullanımı son yıllarda önem kazanmaktadır. Özellikle aşağıdaki soruların tatmin edici cevaplarının elde edilmesi bu yaklaşımın doğruluğunu kanıtlayabilecek nitelikte olacaktır : Bu tarz uygulamalar geliştirmek için hangi şekilde prosedürel programlama yapmak gerekir? Gerçek zamanlı bina oluşumunu sağlayabilmek için geliştirilen kapsamlı bir uygulama yeterince hızlı sonuç üretebilir mi? Mimari açıdan ne kadar doğru ve görsel açıdan ne ölçüde inandırıcı sonuçlar elde edebiliriz? Gerçek zamanlı görüntülemede prosedürel yaklaşım aynı anda bir çok binayı farklı detay seviyesinde görüntüleyebilecek kadar yetenekli olabilir mi? [5] Bu makalede örneklenen çalışma ile 3B modelleme bilgisi olmayan herhangi bir bireyin; binanın kat sayısı, her kattaki asansör ve merdiven sayısı gibi temel parametreleri kullanıcı dostu bir arayüzden girerek, otomatik olarak 3B binayı oluşturabilmesi sağlanmıştır. Ayrıca fare kullanımı ile binanın herhangi bir açıdan döndürülerek görüntülenebilmesi ve klavyeden yön tuşları kullanılarak binanın pozisyonunun güncellenebilmesi imkanları sunulmuştur. Böylece kullanıcı verdiği parametrelerin değişmesine göre ne tip bir 3B bina modeli ortaya çıkabileceğini hızlı ve pratik bir şekilde görebilmektedir. Geliştirdiğimiz uygulamada, otomatik bina oluşturma yaklaşımı, önceki çalışmalardan farklı olarak; JOGL ile ilk defa web üzerinde uygulanmıştır. Uygulamada Şekil - 2 de gösterildiği gibi kullanıcıdan bina kat sayısı ve her bir katın uzunluk, en ve tavan yükseklik değerini belirtmesi beklenmektedir. Şekil 2. Bina kat parametreleri Kullanıcının girdiği temel parametrelerin dışında, her bir kat için istenildiği takdirde; belirtilen sayıda, kata ait hedef noktası,merdiven ve asansör yerleştirilebilmektedir. (Şekil 3.) Web tabanlı mimari görselleştirmede iki ve üç boyutlu teknolojileri bütünleştiren çalışmalardan birisinde de, SVG ve X3D/VRML arayüzleri kullanılmıştır. [4] 5. Çok Katlı Üç Boyutlu Bina Modelleme Çalışması 658 Şekil 3. Binanın ilk katı için kat parametreleri Örneğin Şekil - 3 de binanın birinci katı için T harfi ile kırmızı renkte belirtilen elemanlar 2 adet hedef noktasını, L harfi ile turuncu renkte belirtilen elemanlar 2 adet asansörü ve

Akademik Bilişim 07 - IX. Akademik Bilişim Konferansı Bildirileri 31 Ocak - 2 Şubat 2007 Dumlupınar Üniversitesi, Kütahya SC ifadesi ile belirtilen mavi renkteki elemanlar ise merdivenleri göstermektedir. Parametrelerin dağılımı ve yerleştirilmesi kullanıcının siyah renk ile belirtilen alanı, ilgili parametre tipini seçtikten sonra tıklaması ile yerleştirilebildiği gibi; Random butonuna basılarak da istenilen sayıda rastgele elemanın dağıtılması şeklinde de yapılabilmektedir. Yukarıdaki gibi ilgili parametreler girildikten sonra binanın oluşturulması istendiğinde, öncelikle yukarıdaki Swing JPanel inde yer alan parametrelerin koordinat değerleri JOGL un koordinat sistemine göre normalize edilerek pozisyon değerleri güncellenmektedir. Bu işleme ait temel kod bloğu şöyledir : X, Z eksenlerine ait normalize edilmiş koordinatların bulunması : // Z ekseni için... public float getzcoordinatevalue(float floorwidth, float normalizedz) { float returnvalue = -1; returnvalue = floorwidth * normalizedz * 0.5f; return returnvalue; } // X ekseni için... public float getxcoordinatevalue(float normalizedx, float floorlength) { float returnvalue = -1; returnvalue = Math.abs((floorLength/2) (normalizedx * floorlength)); return returnvalue; } Y ekseni için binanın her katının tavan yükseklik değeri referans kabul edildiğinden bu eksende herhangi bir dönüşüm işlemine gerek kalmamıştır. Bina çiziminde öncelikle her bir kat tel kafes ( wireframe ) küp şeklinde her bir kenarı farklı renkte olmak üzere çizdirilmiştir. Daha sonra her bir katın kendisine ait parametreleri sırasıyla iterasyonlarla çizdirilerek sonuca ulaşılmıştır. Bina kat sayısı kadar iterasyonda her bir katın çizdirilmesi : maindisplaylist= gl.glgenlists(1); gl.glnewlist(maindisplaylist, GL.GL_COMPILE); for (int i = 0; i<=building.getfloorcount() - 1; i + + ) { drawfloor(building.getfloor(i)); } gl.glendlist(); Bir katın tabanı ile çizdirilmesini örnekleyen kod bloğu CdrawFloof) : gl.glcolor3d( Math.random(), Math.random(), Math. random()); gl.gltranslatef(0, building. getfloorheight(), 0); /* Poligon Çizici sınıfımız kullanılarak kat çizdiriliyor... */ polygondrawer.drawwirecube( building.getfloorlength(), building.getfloorheight(), building.getfloorwidth()); gl.glpushmatrix(); gl.gltranslatef(0, building.getfloorthick()/2- building.getfloorheight()/2, 0); gl.glscalef(1, building.getfloorthick(), 1); /* Poligon Çizici sınıfımız kullanılarak kat tabanı çizdiriliyor... */ polygondrawer.drawsolidcube( building.getfloorlength(), building.getfloorthick(), building.getfloorwidth()); gl.glpopmatrix(); 659

Üç Boyutlu Binaların Web Üzerinde Otomatik Olarak JOGL ile Modellenmesi Dönüşüm İşlemi Örneği (Matris Kullanımı) : gl.glpushmatrix(); gl.gltranslatef( newpoint.getx(), building.getfloorheight()/ (MFTSPUtility.TARGET_SCALE_RATE* building.getfloorheight()/2), newpoint.getz()); gl.glscalef( building.getfloorlength()/ MFTSPUtility.TARGET_SCALE_RATE, building.getfloorheight()/ MFTSPUtility.TARGET_SCALE_RATE, building.getfloorwidth()/ MFTSPUtility.TARGET_SCALE_RATE); glut.glutsolidcube(1); gl.glpopmatrix(); Yukarıdaki kod bloğunda; var olan grafiksel içeriğin glpushmatrix metodu ile korunmasından sonra gltranslatef metodu ile x, y ve z eksenlerinde öncelikle taşıma dönüşüm işlemi yapılmış ve daha sonra üç eksen üzerinde de glscalef metodu ile ölçeklendirme işlemi gerçekleştirilmiştir. Bir birim ayrıt uzunluğuna sahip birim küp nesnesi bu dönüşümleri kendi üzerinde yansıtacak şekilde glutsolidcube metodu ile çizdirilerek, glpopmatrix metodu ile bu işlemlerin başında korunan grafiksel içerik yeniden gösterilmektedir. Uygulamanın Ürettiği Farklı Bina Görüntü Örnekleri 2 Katlı Bina Model Örneği (Şekil 4.) : (1. Kat : 3 adet hedef noktası, 1 adet asansör) (2. Kat : 1 adet hedef noktası, 1 adet asansör, 1 adet merdiven) Şekil 4. 2 Katlı Bina Model Örneği 5 Katlı Bina Model Örneği (Şekil 5.) : (1. Kat : 6 adet hedef noktası, 2 adet asansör, 1 adet merdiven) (2. Kat : 2 adet hedef noktası, 1 adet asansör, 1 adet merdiven) (3. Kat : 1 adet asansör) (4. Kat : 4 adet hedef noktası, 2 adet asansör) (5. Kat : 3 adet hedef noktası) Aşağıda, uygulamanın etkinliği için kullanılan Display List tekniği örneklenmektedir : Görüntüleme Listesi Kullanımı (Display Lisf) maindisplaylist = gl.glgenlists(l); gl.glnewlist(maindisplaylist, GL.GL_COMPILE); for ( int i = 0; i<= building.getfloorcount() - 1; i + + ) { drawfloor(building.getfloor(i)); } gl.glendlist(); Şekil 5. 5 Katlı Bina Model Örneği 660

Akademik Bilişim 07 - IX. Akademik Bilişim Konferansı Bildirileri 31 Ocak - 2 Şubat 2007 Dumlupınar Üniversitesi, Kütahya 6. Sonuçlar 6.1 Grafik Arayüzlerinin Karşılaştırılması Uygulama geliştirilirken JOGL dışındaki grafiksel içerik oluşturma kütüphaneleri ve teknikleri gerçekleştirim sırasında kullanılan teknikler bazında irdelenerek karşılaştırılmıştır. Elde edilen sonuçlar belirlenen başlıklar açısından Tablo - 1 de listelenmektedir : Grafiksel İçerik Kalitesi JOGL Java3D OpenGL Çok İyi İyi Çok İyi Görüntüleme Hızı iyi Orta Çok İyi Programlama Kolaylığı Platform Uyumluluğu Web Yayınlama Kolaylığı Farklı Uygulamalarla Ortak Çalışabilme İyi Çok İyi Orta İyi İyi Çok İyi Çok İyi Çok İyi Az İyi İyi Çok İyi Tablo 1. - JOGL, Java3D, OpenGL kütüphanelerinin karşılaştırılması Gerçekleştirilen bu uygulama sonucunda JOGL un web tabanlı üç boyutlu içerik oluşturmada gayet başarılı olduğu anlaşılmıştır. OpenGL ve Java ortamlarının birleştirilerek web üzerinden kullanılabilmesini sağlaması, bir çok projenin daha çok kişiye; çok daha hızlı bir şekilde ulaşabilmesini sağlayacaktır. Java geliştiricileri üç boyutlu grafiksel programlamayı rahatlıkla kullanabileceklerdir. 6.2 Programın Web Tabanlı Bina Oluşturma Sürecine Etkisi Özellikle, üç boyutlu etkileşimli olarak geliştirilen grafiksel uygulamaların web üzerinden kullanılması, anlatılmak istenen konuyu; bu konu hakkında hiç bir bilgisi olmayan kullanıcılara dahi kolay bir şekilde sunabilmesi bakımından önemli bir hale gelmiştir. Geliştirilen uygulama Java nın Web Start teknolojisi kullanılarak internet üzerinden kullanılabilir hale getirilmiştir. http://yzgrafik.ege.edu.tr/projects/mfvis adresinden uygulama etkileşimli olarak kullanılabilir. Bu yaklaşım, çözümün daha hızlı ve kolay bir şekilde kullanıcıya sunulması bakımından önemlidir. Günümüzde bir çok uygulama web hatta mobil tabanlı çalışabilecek şekilde geliştirilerek bilgiye erişimdeki sınırların kalktığı örneklenmektedir. Kullanıcıların, istedikleri bir bina modelini, internet üzerinden kolaylıkla oluşturabildikleri gözlemlenmiştir. Yazılım geliştiriciler açısından ise, OpenGL altyapısının kullanılması sayesinde çok karmaşık modeller hızlı bir şekilde oluşturularak, üzerlerinde işlemler yapılabildiği anlaşılmıştır. Çalışmamızda, desen kaplama ( Texture Mapping ), hazır 3B model yükleme ( 3D Object Loading ) ve karmaşık aydınlatma ( Illumination Effects ) gibi modüllerin eklenmesi aşamasına gelinmiştir. Böylece uygulama, mimari ve görsel açıdan daha gerçekçi bina modellerini de destekleyecektir. Arka planda OpenGL kullanılması, gerçekçiliği ve hızı arttırırken; nesneye dayalı programlama yaklaşımı da programlama aşamasında harcanan çabayı minimum düzeye indirerek daha etkin bir şekilde uygulama geliştirilebilmesini sağlamaktadır. Bu özellikleri sayesinde, gelecekte JOGL un kullanım oranı artacak ve değişik alanlardaki yazılım geliştiriciler tarafından tercih edilecektir. 7. Kaynaklar [1]. Canroy, K., JOGL : A Beginner s Guide and Tutorial, 2 Eylül 2004. [2]. Twilleagear, D., Kesselman, J., Goldberg, A., Petersen, D., Soto, C. J., Melissinos, C., Java Technologies for Games. 661

Üç Boyutlu Binaların Web Üzerinde Otomatik Olarak JOGL ile Modellenmesi [3]. Uğur, A., Bilgisayar Grafikleri Ders Notları, EGE Üniversitesi, Bilgisayar Mühendisliği Bölümü, 2002-2003. [4]. Wei, Y., Integrating web 2D and 3D technologies for architectural visualization: applications of SVG and X3D/VRML in environmental behavior simulation, Web3D 2006: 11th International Symposium on 3D Web Technology, 2006. [5]. Whelan, G., Automatic Building Generation, Institute of Technology Blanchardstown, Graphics and Gaming Group, 2006. [6]. Xu, Z., Yen, Y., Chen, X. J., OpenGL Programming in Java. [7]. JOGL : Java Bindings for OpenGL, https:// jogl.dev.java.net [8]. Nehe Productions, http://nehe.gamedev.net [9]. OpenGL, http://www.opengl.org, SGI [10]. Sun Developer Network, http://java.sun. com, Sun Microsystems 662