OpenSceneGraph - OpenSceneGraph

OpenSceneGraph
Osglogo2.0.png
kararlı sürüm
3.6.5 / 31 Ocak 2020 ; 18 ay önce ( 2020-01-31 )
depo Bunu Vikiveri'de düzenleyin
Yazılmış C++
İşletim sistemi Çapraz platform
Tip 3D grafikler
Lisans OpenSceneGraph Kamu Lisansı ( LGPL tabanlı)
İnternet sitesi www .openscenegraph .org
www .openscenegraph .com

OpenSceneGraph , görsel simülasyon , bilgisayar oyunları , sanal gerçeklik , bilimsel görselleştirme ve modelleme gibi alanlarda uygulama geliştiricileri tarafından kullanılan açık kaynaklı bir 3D grafik uygulama programlama arayüzüdür (kütüphane veya çerçeve) .

Araç seti, OpenGL kullanılarak standart C++ ile yazılmıştır ve Microsoft Windows , macOS , Linux , IRIX , Solaris ve FreeBSD dahil olmak üzere çeşitli işletim sistemlerinde çalışır . 3.0.0 sürümünden bu yana OpenSceneGraph, iOS ve Android gibi mobil platformlar için uygulama geliştirmeyi de destekler .

2021 olarak projenin yerini Vulkan tabanlı bir kütüphane olan VulkanSceneGraph projesi alıyor. OpenSceneGraph, 2019'dan beri bakım aşamasındadır.

Tarih

OpenSceneGraph projesi 1998'de Don Burns tarafından başlatıldı. Robert Osfield projeye 1999 yılında katılarak Microsoft Windows için bitmiş bileşenlerin taşınması üzerinde çalıştı. Proje Eylül 1999'da açık kaynağa geçti ve resmi proje web sitesi oluşturuldu. Yılın sonuna doğru Osfield projeyi devraldı ve mevcut kod tabanını kapsamlı bir şekilde yeniden düzenlemeye başladı, modernizasyona vurgu yaptı, modern C++ standartlarını ve tasarım modellerini kucakladı .

Nisan 2001'de, büyüyen kullanıcı topluluğu ve halkın ilgisini dikkate alan Robert Osfield, ticari destek, danışmanlık ve eğitim hizmetleri sağlayan OpenSceneGraph Profesyonel Hizmetlerini oluşturdu. Bu, projenin tam profesyonelleştiğini gösterir.

OpenSceneGraph'ın ilk resmi kararlı sürümü, 2005'te yayınlanan sürüm 1.0'dı. Bunu 2007'de, çok çekirdekli ve çoklu gpu sistemleri, birkaç önemli NodeKits ve birleşik çok platformlu yapı sistemi CMake kullanımı için destek ekleyen, genişletilmiş bir sürüm 2.0 izledi . Kitaplar ve kullanıcı el kitapları tanıtıldı.

Proje o zamandan beri hızla büyüyor ve daha popüler hale geliyor. Mevcut kararlı sürüm altında imzalanmış 530'dan fazla katılımcı var ve resmi posta listesi binlerce isim içeriyor.

2019 yılında, proje bir bakım aşamasına taşındı ve ana geliştirme çalışması, halefi VulkanSceneGraph projesine yönlendirildi.

Özellikleri

Image
Openscenegraph mimarisine genel bakış.

1.0 sürümündeki özellikler:

  • Zengin özelliklere sahip ve yaygın olarak benimsenen bir sahne grafiği uygulaması
  • Performans artırıcı özellikler için destek
    1. Frustum , küçük özellik ve oklüzyon ayırmayı görüntüleyin
    2. ayrıntı düzeyi
    3. Durum sıralama ve tembel durum güncelleme
    4. OpenGL hızlı yolları ve en yeni uzantılar
    5. Çoklu iş parçacığı ve veritabanı optimizasyonu
  • En son uzantılar dahil olmak üzere 1.1'den 2.0'a kadar OpenGL desteği
  • 3Dlabs ile birlikte geliştirilen OpenGL Shading Language için sıkı bir şekilde birleştirilmiş destek
  • OpenFlight , TerraPage , OBJ , 3DS , JPEG , PNG ve GeoTIFF gibi formatlar için kullanılabilen yükleyiciler ile çok çeşitli 2B görüntü ve 3B veritabanı formatları için destek
  • parçacık etkileri
  • Kenar yumuşatılmış TrueType metni desteği
  • Kesintisiz destek çerçeve belleği nesneleri, pbuffers ve çerçeve tamponu işlemek-için-doku etkisi
  • Tüm 3B veritabanı ve görüntü yükleyicilerle birlikte kullanılabilen çok iş parçacıklı veritabanı sayfalama desteği
  • Büyük ölçekli, tüm dünya jeo-uzamsal arazi disk belleği veritabanı oluşturma
  • Harici uygulamaların genel bir arabirim aracılığıyla sahne grafiğindeki tüm sınıfları sorgulamasına, almasına, ayarlamasına ve çalıştırmasına izin veren çekirdek kitaplıklar için iç gözlem desteği
  • Çoklu CPU/çoklu GPU makineleri için çoklu iş parçacıklı ve yapılandırılabilir destek

2.8.3 sürümündeki özellikler

  • Mac OS X 10.6 (Snow Leopard) desteği
  • Mac OS X'te ImageIO desteği
  • 3DS dosya formatı dışa aktarma ve dosya dönüştürme
  • Entegre Autodesk FBX teknolojisi
  • 3D uygulamalarda video dosyası içeriğini görüntülemek için entegre FFmpeg desteği.
  • PLY dosya formatı desteği

2.8.4 sürümündeki özellikler:

  • VS2010 yapı desteği

3.0.0 sürümündeki özellikler:

  • OpenGL ES 1.1 ve OpenGL ES 2.0 desteği
  • İlişkili OpenGL uzantılarıyla birlikte OpenGL 3.x ve 4.x desteği
  • Tabletlerde ve telefonlarda Android desteği
  • Tabletlerde ve telefonlarda IOS desteği (son kullanıcı başvuruları App Store'da zaten kabul edilmiştir)
  • Sürükleyici 3D sunumlar için Present3D uygulamasının tanıtımı
  • Yeni .osgb ikili, .osgt ascii ve .osgx xml dosyası yerel biçimleri sağlayan yeni genişletilebilir serileştiriciler
  • Yeni genelleştirilmiş serileştirilebilir meta veri mimarisi
  • !OpenSceneGraph'ı Qt ile, QWebKit aracılığıyla web'de gezinme de dahil olmak üzere, doğrudan entegre etmeyi sağlayan yeni osgQt kitaplığı.
  • .fbx 3D geliştirme ve değişim formatının okunmasını sağlayan Audodesk FBX DSK tabanlı yeni FBX eklentisi
  • Filmleri Windows altında işlemek için yeni directshow eklentisi
  • Bir sahneyi POV-Ray formatına aktarmak için yeni pov eklentisi, foto-gerçekçi ışın izleme yapmak için POV-Ray kullanımına olanak tanır
  • Kat dosyalarını okumak için yeni kat eklentisi
  • .3ds dosyalarını okumak ve yazmak için yenilenmiş 3ds eklentisi
  • .dxf dosyalarını okumak ve yazmak için yenilenmiş dxf eklentisi
  • Kakao ve 64bit OSX yapısı için destek

Kararlı Sürüm Yayın Geçmişi

Sürüm Yayın tarihi
3.0 5 Şubat 2013
3.2 24 Temmuz 2013
3.4 20 Temmuz 2015
3.4.1 28 Ağustos 2017
3.6 7 Nisan 2018
3.6.1 28 Mayıs 2018
3.6.2 29 Haziran 2018
3.6.3 14 Eylül 2018
3.6.4 26 Temmuz 2019
3.6.5 31 Ocak 2020

Mimari

Kitaplık mimarisi üç ana alt kümeye ayrılabilir - temel OpenSceneGraph kitaplığı, osgViewer ve bir dizi NodeKits.

Çekirdek

OpenSceneGraph kitaplığının tabanı ayrıca dört ana modüle ayrılabilir.

osg

OpenSceneGraph'ın çekirdeği , sahne grafiğinin oluşturulması ve işlenmesi için sınıflar ve yöntemler sağlar . Çeşitli düğüm türlerini , sahne geometrisini, OpenGL durum soyutlamasını, geometrik dönüşümleri ve ayrıca 2B ve 3B vektör ve matris işlemleri için matematiksel sınıfları temsil eden sınıfları içerir . Gelişmiş bellek yönetimi de dahildir.

Konuları Aç

OpenSceneGraph projesi, hafif bir platformlar arası iş parçacığı modeli olan OpenThreads adlı bir iş parçacığı kitaplığı içerir . C++ programcıları için minimal ve eksiksiz bir Nesne Yönelimli (OO) iş parçacığı arabirimi sağlamayı amaçlamaktadır . Java thread API ve POSIX Threads standartları üzerinde gevşek bir şekilde modellenmiştir .

Mimari OpenThreads en tanımlanır "değiştirilebilen" iplik modelleri etrafında tasarlanmıştır derleme zamanında bir de paylaşılan nesne kitaplığına . Genel arayüz hedefine ulaşmak için bir fabrika desen tasarımı kullanılabilirken , programcının 4 temel türden (İplik, Mutex, Bariyer ve Durum) her birini atamasını gerektireceğini belirtmek önemlidir. yığın . Bazı platformlarda bu yapıların temel somut uygulamalarının yığın tahsisi ile ilişkili maliyet nedeniyle, bu tahsisat, bu kütüphanenin orijinal olarak yazıldığı zamanda kabul edilemez olarak kabul edildi ve bu nedenle fabrika modeli kullanılmadı.

Bunun yerine, gerekli veri/uygulama gizlemesini sağlamak için biraz karmaşık ama etkili bir teknik seçilmiştir . Bu teknik, nesne özel verilerini kapsüllemek için özel boşluk işaretçilerini kullanır . Void işaretçileri aslında somut veri yapılarına işaret eder, ancak dso'ya tek tip bir arayüz sağlar.

OpenThreads'in tasarım amacı , IRIX'te kullanılan sproc yöntemleri ve Windows iş parçacıkları gibi platform için optimize edilmiş çoklu işleme yapıları kullanarak optimize edilmiş uygulamalar oluşturmaktır .

osgUtil

osgUtil içerir oluşturma arka uç özelliğe ve yardımcı sahne bakımı grafik geçişi , işleme optimizasyonu ve bir akımı içine sahne transforme OpenGL API çağrıları. Ayrıca nesne seçme gibi sahne ile temel etkileşim araçları sağlar.

osgDB

Bu kitaplık, 3B model dosyalarını yüklemekle görevlidir. Birçok 2D/3D veri formatı manipülatörünü destekler . 50'den fazla farklı format desteklenir - en yaygın olanı COLLADA (.dae), LightWave (.lwo), Wavefront (.obj), OpenFlight (.flt), 3D Studio Max (.3ds), DirectX gibi 3D veri formatlarıdır. (.x) ve diğerleri. OpenSceneGraph ayrıca kendi yerel ASCII .osg biçimini de sağlar . Blender , Maya ve 3D Studio MAX için .osg formatına aktarıcılar mevcuttur .

Desteklenen resim biçimleri arasında .rgb, .gif , .jpg , .png , .tiff , .pic, .bmp , .dds , .tga ve quicktime bulunur .

Bu modül ayrıca G/Ç cihaz soyutlaması sağlar. Diğer dosya formatı yükleyici eklentileri osgDB'ye kayıtlıdır.

osgGA

Bu, farklı platformlar için gerekli bir GUI soyutlama kitaplığıdır.

osgViewer

osgViewer Kitaplığı , grafik sahnesini görselleştirmenin hızlı ve kolay bir yolunu sağlar . Ayrıca çeşitli pencere sistemi arayüzleri için platformdan bağımsız bir soyutlamadır .

osg Yapımcı

OSG ayrıca , çoklu grafik bağlamlarını ve çoklu iş parçacığını destekleyen platformdan bağımsız bir görüntüleyici olan bir osgProducer ile birlikte gönderilir .

Düğüm Kitleri

Proje dağıtımı ayrıca çeşitli NodeKits içerir . Bunlar, yaygın sorunların ve sıklıkla kullanılan daha gelişmiş 3B uygulama bileşenleri ve grafik algoritmalarının çözümleridir. En önemlileri arasında

  • osgAnimation — İskelet modellerinin kullanımı, canlandırılması ve biçim değiştirmesi.
  • osgFX - Özel efektler ve görüntü son işleme.
  • osgManipulator — Etkileşimli 3B sahne işleme.
  • osgParticle — Gelişmiş parçacık sistemi kullanımı.
  • osgQt — Qt araç takımı ile entegrasyon ve QtGUI öğelerinin OSG uygulamalarına dahil edilmesi.
  • osgShadow — Gölge oluşturma teknikleri için çerçeve.
  • osgTerrain — Kapsamlı arazi oluşturma .
  • osgText - Kaliteli kenar yumuşatılmış yazı tipleri, TrueType ve FreeType yazı tipi desteği.
  • osgVolume — Hacim oluşturma ve hacimsel veri işleme.
  • osgWidget — Basit GUI oluşturma.

Kabul ve evlat edinme

OpenSceneGraph, daha yüksek "oyun" mantığı için herhangi bir işlevsellik sağlamaz, yalnızca oluşturma aracıdır. OSG'yi grafik oluşturma temeli olarak kullanarak bilgisayar oyunları (veya ciddi oyunlar olarak adlandırılan ) oluşturma için birkaç tam ölçekli motor vardır , en yaygın çerçeve Delta3D'dir .

OpenSceneGraph üzerine kurulmuş çok çeşitli yazılım ürünleri vardır; diğerleri arasında Virtual Terrain Project ve ViewTec TerrainView . OSG kullanıcılarının listesi Boeing , NASA , FlightGear , Norcontrol ve diğerleri gibi şirketleri içerir .

Açık kaynak topluluğu düzeyinde, birkaç proje, arka uç oluşturma olarak OSG'yi benimsemiştir:

OpenSceneGraph, Sketchfab ve Clara.io dahil olmak üzere birçok çevrimiçi 3D sahne görüntüleyicisi tarafından kullanılan OSG.JS adlı bir javascript/WebGL uygulaması aldı .

Emscripten OGStudio aracılığıyla C++'dan javascript'e bir sarmalama da şu anda geliştirilmiştir.

OSG kullanan diğer ürünler arasında şunlar belirtilmelidir:

Ayrıca bakınız

Referanslar

Dış bağlantılar