Java3D ile Grafik Programlama 1

Oğuz~#>

Kıdemli Üye
5 Tem 2009
4,772
16
Bursa
Not: Java3D ile Grafik Programlama yazı dizisi java.sun.com sitesindeki bir dökümandan çevrilmiştir. Java3D'de o günden bugüne bir çok yenilik gerçekleşti.
İndeks

  • 3D Grafik apilerine genel bakış
  • 4. nesil grafik apisi java3D nin özellikleri
  • 3D Grafik Apilerin karşılaştırılması
  • Java 3D nin kullanılma alanarı
3D GRAFİK APİLERİNE GENEL BAKIŞ

Java3D 4.nesil grafik apisidir.Gelişen teknoloji ve gereksinimlere göre grafik apilerinin yenilenmesi gerekmiştir.
Sırasıyla;
CORE APİ: Siggraf tarafından 1970 lerde çıkarılmıştır.Çok eskide kaldı için anlatmaya gerek duymadim.
PHİNGS,3DGKS APİ: 1980 başlarına doğru çıkan ikinci nesil apiydi. SUN, Apollo, Mosoic gibi şirketler tarafından kullanılmıştır.
OPENGL: 1980 sonlarına dogru SGI şirketi tarafından çıkarılmış api bu güne kadar mükemmel işler başarmıştır.Çoğu 3D uygulamalırının altında onu görebiliriz. (aliaswave,softimage,kinetix) gibi birçok büyük şirket bunla yazılım geliştirmiştir.
JAVA3D: 1990 sonlarına dogru Sun şirketi tarafından geliştirildi. Java3D directmodel(HP),scenegraph optimizertoolkit (SGI),fahrenheit (SGI and Microsoft) programlara rağmen yeni scenegraphı,büyük modellerde optimizasyon kapasitesi ve birçok yenilikler sayesinde yeni nesil bir api standardının habercisi oldu.(burda geçen bazı kelimelerin anlamlarını ileride genişçe bir şekilde açıklayacağız.
Bu yeni nesil Apinin gelmesini başlıca 5 gereksinime bağlayabiliriz.
1. yeni donanımsal mimarinin gelişmesi
2. yeni programlama dilleri
3. ana makinalarla yeni grafiksel bağlantılar
4. 3D interaktiflik üzerine yeni fikirler ve teknolojiler
5. önceki apilere göre çok fazla uzmanlık istemeyen interface
4. NESİL 3D GRAFİK APİSİ JAVA3D

Java3D screnegraph yapısında nesneleri tutuyor.Scenegraphs yapısında olması ona daha sağlam ve daha doğru sonuçlar üretmesine,tutulan nesneler üzerinde daha kolay oynama yapabilmeni olanak sağlayarak daha hızlı update ve renderi gerçekleştirir.
Java3D den önceki apilerde kullanılan backface removal ve bsp trees ve yeni fikirleri kullanarak tümü düzenli ve üzerinde kolay işlem yapabilir olarak birleştirdi.Bu yeni mimari sayesinde process birbirinden bağımsız halde parçalara bölünerek threadler(render,ağaç üzerinde gezme, optimizasyon, behavour) oluşturarak çalıştırılır.Bu sayade multiprocessing yapmış olur.
Ayrıca treelerde path'ini kaybetmiş nesnelerin silinmesi ve garbage collection api tarafından yapılır.
Scene graph aynı objeye multiple definition ile ulaşmana olanak sağlayarak.Bazı mantıksal ve stratejik durumlarda büyük yarar sağlar.Mesala arabanın dört tekerleğini ayrı ayrı oluşturmak yerine bir tanesini oluşturup, diğer 4'ünü aynı nesneye farklı refanslar yaparak yeniden oluşturma yükünden kurtulmuş olunur.
Yeni mantık eklenerek renderlemede pipelinenin ve disk ile memory arasındaki veri aktarımının başarılı bir şekilde yapılmasına olanak sağlıyor.Bu şekilde grafik performansı ve memory ,diskin mükemmel şekilde kullanılarak bunların artmasını sağlıyor.
Önceki zamanlarda Z buffer mantığıyla arkadan öne doğru nesnelerin renderlenmesi ve gözükmeyen kısımların renderden çıkarılması bellı sınırlar çerçevesinde yapılabiliyor.Z buffer elbette eskimiş bir mantık değil,ama ekranın belli alanları için kullanıması daha doğru.Tümde yüksek seviyeli kararlarda kullanıldığı için atılmasıda düşünülemez(yani Z buffer eksiklikleri)
Gündeme gelmiş onun ekrandaki görevi ayrılmış ve yeni mantıklar yüklenmiş olarak karşımıza çıkıyor.
Bu yeni eklenen optimizasyon kapasitesi birbirinden ayrı processler şeklinde renderleme ve pipelinenin programızda nasıl çalıştığı konusunda bilgiye sahip olmak zor, onun içindir ki 4.nesil grafik apisinin 3d grafik kullanıcının üzerinden optimizasyon ve rendering gibi ağır konuları alarak bunları arka tarafta en iyi şekilde kendisinin ayarlaması,sizede sadece programınızda neler gözükeceği ve ne yapacağı konularını kalmıştır.
APİLERİN KARŞILAŞTIRILMASI

Opengl machine programming language fakat Java3D yüksek seviyeli bir dil bunla neyi amaçladılar sorusuna kısaca;
Opengl kullanıcı komplex scenegraphlar oluşturabilir ve bunun üzerinde nasıl gezilip renderleme yapılacağına karar verebilir diyebiliriz.Fakat çalışma zamanı sırasında scenegraphlar üzerinde oynama isteği belli kurallar çerçevesinde yapılır,ağaç yapısının bir nodunda yaptığınız değişiklik tüm nodu etkileyecek ve sonuçta scenegrapta durmadan yeni yapıya göre ayarlamalar gerekecektir.Bu uygulama bir uzmana çok fazla avantaj sağlarken normal kullanıcıyı affallatır.
Java3D normal kullanıcıyla uzman arasında bir denge kurmaya çalışarak sizi bir çok ayrıntıdan soyutlayarak üzerinde daha rahat bir şekilde çalışmanıza olanak sağlar.Bu sayede yeni 3D Graphics programmlamaya yeni giren birisinin önceki apilerin bir çok ayrıntısıyla uğraşma ve öğrenme yükümlülüğünden kurtarmıştır.
Vrml bildiğiniz gibi Virtual Reality Modeling Language geometrik nesnelerin birbirine bağlanması ve davranışları açısından öncü durumundadır.Sanal gerçeklik ortamını sağlamak için text bazlı bir programlama dili İnternet Explorer veya Netscape gibi internet browserları üzerinde bunları görmemiz olanaklı.Ama Bazı nedenlerden dolayı(browserlerin wrml kapasitesini kaldıramaması gibi nedenlerden dolayı birçok özelliği kullanılmamıştır) kıymeti bilinmemiş neredeyse ismi bile unutulmuştur.
Java olaya farklı yaklaşarak kullanıcılarına dynamic behavour apletlerle sınırsız değişiklikte davranışta bulunan program yazabilme olanağını sunmuştur.Bu standart ek sayesinde rendering,audio,interaktiflik sunmuştur.Tekrar kullanılabilirlik özelliğine sahip scenegraph behaviorları program geliştiricilerine büyük kolaylıkta sağladı.
JAVA3D NİN KULLANILMA ALANLARI

WEB: Webte vrml ile birleşerek uyumakta olan vrml uyandırdığı veya canlılık kattığı söylenebilir.Bu sayede sanal gerçeklik olayını belkide çok yakında internet ortamına görebileceğiz.
MECHANİCAL CAD ve CAE

GAMES: İnternet üzerinde 3D oyunların hazırlanması(şu anda hızdan kaybediyor ama ileride belki)
DATA VİZUALİZATİON: yüksek seviyeli veri aktarımlarının görselleştirilmesi, internet üzerinde uçak ve otamobil simulasyonlarının kullanılabilmesi astronomy ve biokimyasal olaylarının incelenebilmesini olanak sağlıyor.Yani geniş veriyapısı üzerinde işlem yapabiliyor.
GELECEKTE: gaming,vizualization,chat,shopping mall, webte olası,MPEG4 ve audio veri tranferlerinde kullanılırken görmeniz mümkün
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.