Кіріспе

OpenSceneGraph – бұл ашық кодты 3D графикалық қолданбаларды бағдарламалау интерфейсі (кітапхана немесе фреймворк), визуалды симуляция, компьютерлік ойындар, жасанды шындық, ғылыми визуализация және модельдеу салаларында қолданба дамытушылар пайдаланады. Бұл құрал жиынтығы стандартты C++ тілінде OpenGL негізінде жазылған, және OpenSceneGraph 2019 жылдан бері қолдау және жаңарту кезеңінде.

Тарих

OpenSceneGraph жобасын 1998 жылы Дон Бернс бастады. Роберт Осфилд 1999 жылы жобаға қосылып, Microsoft Windows үшін дайын компоненттерді порттау жұмыстарын жүргізді. Жоба 1999 жылдың қыркүйегінде ашық кодты жоба ретінде жарияланды және ресми веб-сайты құрылды. Жыл соңында Осфилд жобаны өз мойнына алып, қолданыстағы код базасын кеңейтіп, жаңғыртуға баса назар аударды, сонымен қатар заманауи C++ стандарттары мен дизайн үлгілерін енгізді. 2001 жылдың сәуірінде пайдаланушылар қауымдастығының өсуі мен көпшіліктің қызығушылығын ескере отырып, Роберт Осфилд OpenSceneGraph Professional Services құрымын құрды, ол коммерциялық қолдау, кеңес беру және оқыту қызметтерін ұсынды. Бұл жобаның толыққанды кәсіби деңгейге көтерілуі болды. OpenSceneGraph-тың алғашқы ресми тұрақты нұсқасы – 1.0 нұсқасы, ол 2005 жылы жарық көрді. 2007 жылы 2.0 нұсқасы шықты, ол көп ядролы және көп GPU жүйелерін, бірнеше маңызды NodeKits-терді және бірыңғай көп платформалық құрастыру жүйесі CMake-ті қолдады. Сондай-ақ кітаптар мен пайдаланушыларға арналған нұсқаулықтар жарияланды. Жоба сол кездеден бері қарқынды дамып, күннен-күнге танымал бола түсті. Қазіргі тұрақты нұсқаға 530-дан астам адам үлес қосты, ал ресми электрондық пошта тізімінде мыңдаған есім тіркелген. 2019 жылы жоба техникалық қолдау фазасына көшті, ал негізгі даму жұмыстары VulkanSceneGraph жобасына бағытталды.

Тұрақты нұсқаның шығарылу тарихы

ВерсияШығару күні3.05 ақпан 20133.224 шілде 20133.420 шілде 20153.4.128 тамыз 20173.67 сәуір 20183.6.128 мамыр 20183.6.229 маусым 20183.6.314 қыркүйек 20183.6.426 шілде 20193.6.531 қаңтар 2020

Сәулет

Кітапхана архитектурасын үш негізгі бөлікке бөлуге болады: негізгі OpenSceneGraph кітапханасы, osgViewer және NodeKits жинағы.

Негізгі

OpenSceneGraph кітапханасының негізін төрт басты модульге бөлуге болады.

ОСГ

OpenSceneGraph негізі сахналық графикті құру және манипуляциялау үшін кластар мен әдістерді қамтамасыз етеді. Онда әртүрлі түйіндерді, сахна геометриясын, OpenGL күйін абстракциялауды, геометриялық түрлендірулерді, сондай-ақ 2D және 3D векторлық және матрицалық операцияларға арналған математикалық кластар бар. Күрделі жад басқару да кіріктірілген.

OpenThreads (ашық үтірлер)

OpenSceneGraph жобасында OpenThreads деп аталатын желілік кітапхана бар, ол жеңіл, платформааралық желілік модель болып табылады. Ол C++ бағдарламашылары үшін минималды және толыққанды Объектіге бағытталған (ОО) желі интерфейсін қамтамасыз етуге арналған. Ол Java Thread API және POSIX Threads стандарттарымен шамалас. OpenThreads архитектурасы ортақ нысан кітапханасында компиляция уақытында анықталатын «алмастырылатын» желілік модельдерге негізделген. Маңыздысы, жалпы интерфейске қол жеткізу үшін зауыт үлгісін пайдалануға болар еді, бірақ бұл бағдарламашыдан 4 негізгі типтің (Желі, Өзгеріс, Кедергі және Шарт) әрқайсысын динамикалық жадқа бөлуді талап ететін еді. Кейбір платформаларда осы конструкциялардың нақты іске асырылымдарын динамикалық жадқа бөлумен байланысты қосымша шығындар болғандықтан, кітапхана жазылған кезде мұндай бөлу қабылдауға болмайтын деп есептелді, сондықтан зауыт үлгісі қолданылмады. Оның орнына, қажетті деректерді/іске асыруды жасыру үшін біршама түсініксіз, бірақ тиімді техника таңдалды. Бұл техника нысанның жеке деректерін капсулалау үшін жеке бос көрсеткіштерді пайдаланады. Бос көрсеткіштер нақты дерек құрылымдарына сілтеме жасайды, бірақ DSO-ға бірыңғай интерфейс ұсынады. OpenThreads-тің жобалау мақсаты – IRIX-те және Windows желілерінде қолданылатын sproc әдістері сияқты платформаға оңтайландырылған көп өңдеу құралдарын пайдаланып, оңтайландырылған іске асыруларды құру.

osgUtil

osgUtil сахналық графикті аралау, рендерингті оңтайландыру және сахнаны OpenGL API шақыруларының ағынына түрлендіруді қамтамасыз ететін рендеринг бэкендік функционалдығы мен құралдарын қамтиды. Ол сонымен қатар нысандарды таңдау сияқты сахнамен қарапайым өзара әрекеттесу мүмкіндіктерін ұсынады.

OSGDB

Бұл кітапхана 3D модельдерді жүктеуге арналған. Ол көптеген 2D/3D дерек форматтарымен жұмыс істейді. 50-ден астам түрлі формат қолданылады, олардың ішінде ең көп таралғандары – COLLADA (.dae), LightWave (.lwo), Wavefront (.obj), OpenFlight (.flt), 3D Studio Max (.3ds), DirectX (.x) және тағы да көптеген форматтар. OpenSceneGraph өзінің жеке ASCII osg форматын да ұсынады. Blender, Maya және 3D Studio MAX бағдарламалары үшін osg форматына экспорттау құралдары бар. Қолдау көрсетілетін сурет форматтары: rgb, gif, jpg, png, tiff, pic, bmp, dds, tga және quicktime. Бұл модуль кіріс-шығыс құрылғыларын абстракциялауды да қамтамасыз етеді. Басқа файл форматтарын жүктеуге арналған плагиндер osgDB-де тіркелген.

OSGGA

Бұл әртүрлі платформалар үшін қажетті графикалық интерфейс абстракциясы кітапханасы.

osgViewer (осыны көруші)

osgViewer кітапханасы графикалық көріністі жылдам және оңай визуализациялауға мүмкіндік береді. Бұл сонымен қатар әртүрлі терезе жүйесі интерфейстері үшін платформадан тәуелсіз абстракция болып табылады.

өндіруші

OSG сонымен қатар osgProducer жиынтығымен бірге келеді, ол көптеген графикалық контексттерді және көп жіпті қолдайтын платформадан тәуелсіз қараушы құрал.

NodeKits (құрылғылар)

Жобаның таратылуында NodeKits деп аталатын әртүрлі жиынтықтар бар. Бұл - жиі кездесетін мәселелердің шешімдері және кеңінен қолданылатын 3D қосымша компоненттері мен графикалық алгоритмдер. Ең маңыздылары:

osgAnimation — Сүйекті модельдерді пайдалану, анимациялау және форма өзгерту. osgFX — Арнайы эффектілер және кескінді өңдеу. osgManipulator — Интерактивті 3D кеңістікті манипуляциялау. osgParticle — Күрделі бөлшектік жүйелерді пайдалану. osgQt — Qt құралдар жиынтығымен интеграция және QtGUI элементтерін OSG қолданбаларына қосу. osgShadow — Көлеңкелерді көрсетуге арналған құралдар жиынтығы. osgTerrain — Жер бедерін кең көлемде көрсету. osgText — Жоғары сапалы антиалиасланған қаріптер, TrueType және FreeType қаріптеріне қолдау. osgVolume — Көлемдік көрсету және көлемдік деректерді өңдеу. osgWidget — Қарапайым графикалық интерфейсті құру.