Java3D ile Grafik Programlama 3

Oğuz~#>

Kıdemli Üye
5 Tem 2009
4,772
17
Bursa
Not: Bu yazıyı baya uzun bir süre önce(2 sene önce) java.sun.com sitesindeki bir dökümandan kendime göre yorumlamıştım. Java3D o günden bugüne baya yenilikler gerçekleşti. Ama dökümanın genel anlamını kaybetmedigi düşünerek yayınlıyorum. Tabiki çevirideki eksikliklerden ve anlam bozukluklarından dolayı affola
Java3D' nin sağlayamadığı bazı özellikler


Java3D Çarpışmalar, sensörler, geometri sıkıştırma, 4D uzaysal müzik ( ve çoklu görünüm içermiyor
Java3D hangi paketler gerekli oluyor


javax.media.j3d package içerisinde bir çok class(Core java3D) virtual universe oluşturuyor. com.sun.j3d.utils ise core Java3D nin sağladığı low level üzerine çok güçlü eklemeler getiriyor.

a) Content Loader(İçerik yükleyici lwo,lws,obj vs...)
b) Scene Graph Constructions aids (Görüntü Ağacını Oluşturmak için yardımcı sınıf)
c) Geometri Sınıfları
d) Convenience utilities

Sanırsam belli başlı utility classları ileride core Java3D paketinin içine taşınacak mesela NURBS gibi.

java.awt renderleme yapacağımız ekranı oluşturabilmek için javax.vectmath (data structures) points,vectors,matris ve matematiksel objeleri saklamamız için classları içerir.
Scene Graph(Görüntü Ağacı) oluşturma


Neden bu scene graph yapısı derseniz. Sizin ekranda tanımlayacağınız her türlü Objeyi (geometry,ses,ışık,********,orientation,görünüm) tutan ve bu nesnelere ulaşıp değiştirmenizi sağlayan temel sınıf.

OpenGL' den farkı ise biz sahnedeki cisimlerimizi devamlı olarak erişim yapabilmemiz için kendi veri yapımızı oluşturmamız ve orada saklamamız gerekiyor ama Java3D 'de zaten bu yapı hazır ve grafik için spesifikleştirilmiş, yapmamız gereken sadece ekle, değiştir ve çıkar gibi işlemler. İkinci önemli fark ise renderleme işleminda hangi nesnenin önce renderleneceğine kendisi karar veriyor sizin herhangi bir etkiniz yok, ama optimisasyon icin tekrar tekrar kullanılacak matris çarpımlarını, çarpıp diğer bir matriste saklayarak onu kullanıyor.

Scene Graph Java3D classının instance kullanılarak oluşturulur.Scene graph yapısı ağaç şeklinde ve nodelar arasında(parent-child relationsip/reference relationship) ilişkileri içerir.

SceneGraph 2 tane önemli Branch(dal) graph' a sahip birincisi

  • Viewing(kamera pozisyonu ve yönü)
  • Contents(geometri,görünüm,davranış,konum,müzik,ışık)

java3d_scene1.gif


Bir java3D uygulaması yazmanız için gerekli olan adımlar

1. Canvas3D nesnesi yaratılır
2. VirtualUniverse nesnesi yaratılır
3. Locale nesnesi oluşturularak VirtualUniverse nesnesine eklenir
4. view branch graph oluşturulur
a. View nesnesi yaratılır
b. ViewPlatform nesnesi yaratılır
c. PhysicalBody nesnesi yaratılır
d. PhysicalEnvironment nesnesi yaratılır
e. ViewPlatform, PhysicalBody, PhysicalEnvironment, ve Canvas3D nesneleri View nesnesi eklenir
5. Content branch graph(s) oluşturulur
6. Branch graph(s) Compile edilir
7. Subgraphs Locale eklenir.

Eğer SimpleUniverse oluşturursak kullanırsak işin viewing kısmıyla hiç uğraşmadan viewing sabitlenir şimdilik tüm örneklerde bu kullanılmış. Buda uyulması gereken adımları kısaltıyor.

java3d_scene2.gif


1. Canvas3D nesnesi yarat
2. SimpleUniverse nesnesini yarat
3. Birinci adımda yarattığımız Canvas3D nesnesini SimpleUniverse nesnesine referans olarak geçir
4. SimpleUniverse nesnesini düzenle
5. Content branch oluştur
6. Content branch graph Compile et
7. Content branch graph SimpleUniverse2in Locale'ine ekle
 
Ü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.