OpenSceneGraph

Geçmiş

Don Burns 1997 yılında Silicon Graphics Inc. (SGI) şirketine yazılım danışmanı olarak işe girdi. Boş zamanlarında da “Hang Gliding” konusunda çalışmalar yapıyordu. Bilgisayar grafiklerine ve “Hang Gliding” üzerine olan ikili ilgisi, yüksek grafik renderer cihazlarına erişebilir olması yoluyla birlikte, ister istemez scene graph çalıştırıcılarını (SGI mülkiyetindeki) kullanan SGI Onyx sistemlerinde çalışabilen “Hang Gliding” simülatörünü geliştirmesiyle sonuçlandı. Don SG’deki gibi basitleştirilmiş Performer SG yazmaya başladı. Amacı SceneGraph’ın basit ve kolay kullanılabilir olmasıydı. Nihayet, SGI Linux sistem üzerine Performer yükledi, ve Don’ın SG scene graph’ına ihtiyacı kalmadı.
Robert Osfield ve Don 1990 lardan önce “Hang Gliding” heveslileri mail listesinden tanışmıştı. Robert Hang Glider üreticileri için tasarım danışmanı olarak çalışıyordu ve modelleme uyumluluğu üzerine deneyimi vardı. Don’ın Performer kullanımından mutlu olmasıyla, SG üzerindeki ilgisi kayboldu ve proje liderliğini Robert’a bırakarak projeyi devir etti.
Robert Osfield ile birlikte SG üzerine çalışmalara katılan yeni geliştiricilerle birlikte SG projesinin adını OpenSceneGraph şeklinde değiştirerek geniş kullanım alanları sağlamaya başladı. SG projesi Don tarafından Robert’a bırakıldığında sadece 8 geliştiricisi olan OSG neredeyse 2000 kullanıcının geliştirdiği bir proje haline gelmiştir.

Özellikleri

OSG’nin asıl amacı scene graph teknolojisinin yararlarını ticari ve ticari olmayan kullanıcı gruplarının her ikisine birden ücretsiz elde edebilmelerini sağlamaktadır. Tamamiyle Standart C++ ve OpenGL üzerine yazılmıştır, STL ve DesignPattern kütüphanelerini kullanabilmektedir, ve açık kaynak gelişim modelinin gücünü son kullanıcıların ihtiyaçları üzerine odaklanan ve ücretsiz olarak kalıtımını sürdüren bir geliştirme kütüphanesini desteklemektedir. OSG’nin özellikleri; performans, üretkenlik, veritabanı yükleyicileri, düğüm araçları ve taşınabilirlik başlıkları altında özetlenecektir. Bunlar ;
A - Performans
Çekirdek scene graph parçaları olan frustum culling, occlusion culling, small feature culling, Level Of Detail (LOD) nodes, state sorting, vertex arrays, vertex buffer objects, OpenGL Shader Language ve display lists gösterimlerini destekler. Bunların hepsi birlikte OSG’yi mevcut grafik araçları arasında çok yüksek performanslı yapar.
Ayrıca OSG scene graph’ın üzerinde bulunan Continuous Level of Detail (CLOD) ağlarının (meshes) uygulanmasında olduğu gibi çizim işlemlerinin kolay uyarlanabilmesini de destekler. (bakınız VTP ve Delta3D).
B - Üretkenlik
Çekirdek scene graph OpenGL’in en son eklentileri ve birçok fonksiyonunu sarmalamaktadır, seçme (culling) ve sıralama (sorting) gibi rendering optimizasyonlarını, ve yüksek performansta grafik uygulamalarını çok hızlı olarak geliştirilmesini olanaklı hale getiren tüm eklenebilir kütüphane kümelerini desteklemektedir. Uygulama geliştiricisi içeriği toplama ve bu içeriği kontrol etmede düşük seviyeli kodlamadan daha fazla bağımsızdır. Bu da kullanıcılara OSG’yi kendi projelerine eklenmede ve uyumlaştırmada kolaylık sağlar.
C - Veritabanı Yükleyicileri
Veritabanı okumak ve yazmak için veritabanı kütüphanesi (osgDB) geniş çeşitlilikteki veritabanı formatlarını genişletilebilir dinamik eklenti mekanizmaları yoluyla ekleyebilmeyi destekler – güncel OSG dağıtımları çeşitli 3 Boyutlu veritabanı ve resim formatlarını yükleyebilmek için 55 farklı eklentiye sahiptir. 3 Boyutlu veritabanı yükleyicileri ; COLLADA, LightWave (.lwo), Alias Wavefront (.obj), OpenFlight (.flt), TerraPage (.txp) including multi-threaded paging support, Carbon Graphics GEO (.geo), 3D Studio MAX (.3ds), Performer (.pfb), AutoCAd (.dxf), Quake Character Models (.md2). Direct X (.x), and Inventor Ascii 2.0 (.iv)/ VRML 1.0 (.wrl), Designer Workshop (.dw) and AC3D (.ac) and the native .osg ASCII formatlarıdır. Resim yükleyicileri ise ; .rgb, .gif, .jpg, .png, .tiff, .pic, .bmp, .dds (include compressed mip mapped imagery), .tga and quicktime (under OSX). Bütün bölümlerde yüksek kalite, keskinlik yumuşatıcı (anti-aliasing) fontları bağımsız eklentiler yoluyla yüklenebilmektedir, ve resim tabanlı fontlar da .txf eklentisi yoluyla yüklenebilmektedir. Ayrıca kullanıcılar eş projeler (VTP) yoluyla büyük ölçekli uzamsal (geospatial) yüzey (terrain) veritabanlarını oluşturabilirler, ve OSG’nin temel veritabanı sayfalama desteği ile bu veritabanlarını görüntüleyebilirler.
D - Düğüm Araçları
Ayrıca scene graph uygulamanızla birlikte derlenebilen ya da çalışma ananda yüklenebilen ayrık kütüphanelere de Bağlantı Araçları (Node Kits) kümesi altında sahiptir. Bu kütüphaneler particle systems (osgParticle), high quality anti-aliased text (osgText), special effects framework (osgFX), shadow framework (osgShadow), interactive controls (osgManipulator) ve visual simulation centric effects (osgSim) destekleri için eklemektedirler.
E - Taşınabilirlik
Çekirdek scene graph tüm özel ortamlar üzerinde Standart C++ ve OpenGL den biraz daha az gereksinim duyulan ufak farklılıklara sahip olması için tasarlanmıştır. Bu da scene graph teknolojisine geniş çeşitlilikteki ortamlara hızlı bir şekilde eklenebilmesine izin vermektedir – orijinal olarak IRIX için geliştirilmiştir, daha sonra Linux, Windows, FreeBSD, Mac OSX, Solaris, HP-UX, AIX ve şimdi de PlayStation2 ortamına eklenmiştir! Çekirdek scene graph kütüphanesinin tamamen pencereleme (windowing) siteminden bağımsız olması kullanıcıların kendi pencere – özel kütüphane ve uygulamaların üzerinde - sistemlerini ekleyebilmelerini kolaylaştırmaktadır. Dağıtımlarda bulunan osgViewer kütüphanesi Windows (Win32), Unices (X11) ve OSX (Carbon) sistemleri altında doğal pencereleme desteği sunmaktadır. Ayrıca osgViewer kütüphanesi çok kolay bir şekilde sahip olduğunuz pencereleme araçlarıyla bütünleştirilebilir., örneklemek gerekirse Qt, GLUT, FLTK, SDL, WxWidget pencereleme sistemlerinde olduğu gibi. Cocoa ve MFC örnekleri OpenSceneGraph-2.0 dağıtımının bir parçasıdır. Scene graph sadece yüksek düzeyli (multi-core, multi-gpu systems and cluster) tümleşik cihazlar üzerinde çalışması için oluşturulmamıştır. Bu cihazlar içinde tasarlanmış olmasının yanı sıra scene graph OpenGL Display Listler ve kaplama (texture) nesneleri için birçok grafik içeriğini desteklemektedir, ve seçim (cull) ve çizim (draw) aygıtları (traversals) yerelinde render edilen verileri cachelemek için tasarlanmıştır ve scene graph neredeyse tamamen sadece okuma işlemlerini kullanmaktadır. Bu birçok seçim-çizim (cull-draw) çiftlerinin birbirine bağlı olan çoklu grafik alt sisteminde bulunan çoklu işlemci üzerinde çalışmasına izin vermektedir. Çoklu grafik çevrelerine ve multi-threading işlemlere osgViewer aracılığı ile destek verir. Çoklu dil desteğini de Java, Lua ve Phyton gibi diller üzerinden kendiliğinden sunmaktadır.

OSG Öğrenmek İçin İzlenebilecek Adımlar

OSG hakkında yapmış olduğumuz bu kısa açıklamalardan sonra OSG üzerine daha detaylı incelemeler ve çalışmalar yapabilmek için izleyebileceğiniz adımlar aşağıdaki gibidir.
A - Kaynak Kodlar
Geliştiricilerin gözünden açık kaynaklı ürünlerin temel yararı kaynak kodlarının erişilebilir olmasıdır. OSG tabanlı bir uygulama geliştirdiğinizde, karşılaştığınız sorunlar OSG’nin kaynak kodlarında bulunan içsel işlemleri çözebilme yoluyla hızlı ve kolay bir şekilde çözülebilir. Henüz böyle bir deneyimde bulunmadıysanız OSG’nin kaynak kodlarını indirip bilgisayarınızda derleyerek kendi binary’lerinizi oluşturabilirsiniz. OSG yi ilk kez derlemek karışık ve zaman alıcı olabilir, fakat bu keşif uygulama yazılımınızı geliştirirken geliştirme safhasında size mükemmel bir fayda sağlayacaktır.
Ayrıca OSG kaynak kodu dağıtımları OSG’nin birçok özelliğini öğreten iyi yazılmış ve bilgi vermeye yönelik örnek programlar gibi zengin koleksiyonlarla birlikte gelmektedir. Bu örnek programlar OSG ile uygulama geliştirecek herkes için çok değerlidir.
OSG uygulaması geliştirmek için sadece OSG binary’lerini kullanmak mümkündür, fakat kaynak kod dağıtımlarına erişmek, örnekler, ve binary’leri derlemek geliştirme işlemlerini hızlandırır.
B – OSG’nin Web Sitesi (OSG Wiki)
OSG Wiki Web sitesi (OSGWiki) OSG’ye ait çok fazla değerli bilgileri içerir. Bunlar; güncel OSG haberler, download işlemleri için ipuçları, OSG kaynak kodlarının derlenmesi ve kurulumu ile ilgili bilgiler, OSG topluluğu üyelerinin katkıda bulunduğu ek belgeler, örnek veriler, OSG topluluğundaki olaylar hakkında bilgiler, OSG topluluğu tarafından yaratılan OSG ile uyumlu araçlar ve destek bilgileridir.
C – OSG Kullanıcıları Posta Topluluğu (osg-users E-Mail List)
OSG kullanıcıları elektronik posta topluluğu sizin diğer OSG kullanıcıları ve geliştiricileri ile iletişimde olmanızı sağlar. OSG kaynak kodlarını derlerken herhangi bir sorunla karşılaştığınızda, geliştirme sırasında karşılaştığınız problemi algılayamadığınızda, ya da OSG’nin içsel işlemlerinde algılayamadığınız durumlar olduğunda, e-mail topluluğuna gönderilen posta genellikle kullanışlı ve yardımcı bilgilerin geri gelmesini sağlamaktadır.