Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
OpenSceneGraph – бұл ашық кодты 3D графикалық қолданбаларды бағдарламалау интерфейсі (кітапхана немесе фреймворк), визуалды симуляция, компьютерлік ойындар, жасанды шындық, ғылыми визуализация және модельдеу салаларында қолданба дамытушылар пайдаланады. Бұл құрал жиынтығы стандартты C++ тілінде OpenGL негізінде жазылған, және OpenSceneGraph 2019 жылдан бері қолдау және жаңарту кезеңінде.
OpenSceneGraph is an open source 3D graphics application programming interface (library or framework), used by application developers in fields such as visual simulation, computer games, virtual reality, scientific visualization and modeling. The toolkit is written in standard C++ using OpenGL, OpenSceneGraph is in maintenance phase since 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 жобасына бағытталды.
The OpenSceneGraph project was initiated by Don Burns in 1998. Robert Osfield joined the project during 1999, working on porting finished components for Microsoft Windows. The project went open source in September 1999 and the official project website was created. Towards the end of the year Osfield took over the project and began extensive refactoring of the existing codebase, putting emphasis on modernisation, embracing modern C++ standards and design patterns. In April 2001, taking into account growing community of users and interest of public, Robert Osfield created OpenSceneGraph Professional Services, providing commercial support, consulting and training services. This marks full professionalization of the project. The first official stable version of OpenSceneGraph was version 1.0, released in 2005. An extended version 2.0 followed in 2007, adding support for multi core and multi gpu systems, several important NodeKits and usage of unified multiplatform build system CMake. Books and user handbooks were introduced. The project has been quickly growing and becoming more popular ever since. There are more than 530 contributors signed under current stable version, and the official mailing list contains thousands of names. In 2019, the project was moved to a maintenance phase, the main development effort being routed to its successor project 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
VersionRelease Date3.05 February 20133.224 July 20133.420 July 20153.4.128 August 20173.67 April 20183.6.128 May 20183.6.229 June 20183.6.314 September 20183.6.426 July 20193.6.531 January 2020
Сәулет
Кітапхана архитектурасын үш негізгі бөлікке бөлуге болады: негізгі OpenSceneGraph кітапханасы, osgViewer және NodeKits жинағы.
Library architecture can be separated into three main subsets — the core OpenSceneGraph library, osgViewer and a set of NodeKits.
Негізгі
OpenSceneGraph кітапханасының негізін төрт басты модульге бөлуге болады.
The base of OpenSceneGraph library can be further divided into four main modules.
ОСГ
OpenSceneGraph негізі сахналық графикті құру және манипуляциялау үшін кластар мен әдістерді қамтамасыз етеді. Онда әртүрлі түйіндерді, сахна геометриясын, OpenGL күйін абстракциялауды, геометриялық түрлендірулерді, сондай-ақ 2D және 3D векторлық және матрицалық операцияларға арналған математикалық кластар бар. Күрделі жад басқару да кіріктірілген.
The core of OpenSceneGraph provides classes and methods for construction and manipulation of the scene graph. It contains classes representing various types of nodes, scene geometry, OpenGL state abstraction, geometric transformations, as well as mathematical classes for 2D and 3D vector and matrix operations. Advanced memory management is also included.
OpenThreads (ашық үтірлер)
OpenSceneGraph жобасында OpenThreads деп аталатын желілік кітапхана бар, ол жеңіл, платформааралық желілік модель болып табылады. Ол C++ бағдарламашылары үшін минималды және толыққанды Объектіге бағытталған (ОО) желі интерфейсін қамтамасыз етуге арналған. Ол Java Thread API және POSIX Threads стандарттарымен шамалас. OpenThreads архитектурасы ортақ нысан кітапханасында компиляция уақытында анықталатын «алмастырылатын» желілік модельдерге негізделген. Маңыздысы, жалпы интерфейске қол жеткізу үшін зауыт үлгісін пайдалануға болар еді, бірақ бұл бағдарламашыдан 4 негізгі типтің (Желі, Өзгеріс, Кедергі және Шарт) әрқайсысын динамикалық жадқа бөлуді талап ететін еді. Кейбір платформаларда осы конструкциялардың нақты іске асырылымдарын динамикалық жадқа бөлумен байланысты қосымша шығындар болғандықтан, кітапхана жазылған кезде мұндай бөлу қабылдауға болмайтын деп есептелді, сондықтан зауыт үлгісі қолданылмады. Оның орнына, қажетті деректерді/іске асыруды жасыру үшін біршама түсініксіз, бірақ тиімді техника таңдалды. Бұл техника нысанның жеке деректерін капсулалау үшін жеке бос көрсеткіштерді пайдаланады. Бос көрсеткіштер нақты дерек құрылымдарына сілтеме жасайды, бірақ DSO-ға бірыңғай интерфейс ұсынады. OpenThreads-тің жобалау мақсаты – IRIX-те және Windows желілерінде қолданылатын sproc әдістері сияқты платформаға оңтайландырылған көп өңдеу құралдарын пайдаланып, оңтайландырылған іске асыруларды құру.
The OpenSceneGraph project contains a threading library, OpenThreads, which is a lightweight cross platform thread model. It is intended to provide a minimal and complete Object Oriented (OO) thread interface for C++ programmers. It is loosely modeled on the Java thread API, and the POSIX Threads standards. The architecture of OpenThreads is designed around "swappable" thread models which are defined at compile time in a shared object library. It is of importance to note that while a factory pattern design could have been used to achieve the goal of generic interface, it would have required the programmer to allocate each of the 4 fundamental types (Thread, Mutex, Barrier, & Condition) on the heap. Due to the cost associated with heap allocation of the underlying concrete implementations of these constructs on some platforms, such allocation was deemed unacceptable at the time this library was originally written, and thus the factory pattern was not used. Instead, a somewhat abstruse but effective technique was chosen to provide the necessary data/implementation hiding. This technique uses private void pointers to encapsulate object private data. The void pointers actually point at concrete data structures, but give a uniform interface to the dso. The design goal of OpenThreads is to construct optimized implementations using platform optimized multi processing constructs such as the sproc methods used on IRIX, and Windows threads.
osgUtil
osgUtil сахналық графикті аралау, рендерингті оңтайландыру және сахнаны OpenGL API шақыруларының ағынына түрлендіруді қамтамасыз ететін рендеринг бэкендік функционалдығы мен құралдарын қамтиды. Ол сонымен қатар нысандарды таңдау сияқты сахнамен қарапайым өзара әрекеттесу мүмкіндіктерін ұсынады.
osgUtil contains rendering backend functionality and utilities taking care of scene graph traversal, rendering optimisation and transforming the scene into a stream of OpenGL API calls. It also provides means of basic interaction with scene, such as object picking.
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-де тіркелген.
This library is tasked with loading 3D model files. It supports many 2D/3D data formats manipulators. More than 50 different formats are supported most common are 3D data formats, such as COLLADA (. dae), LightWave (. lwo), Wavefront (. obj), OpenFlight (. flt), 3D Studio Max (.3ds), DirectX (. x) and many others. OpenSceneGraph also provides its own native ASCII osg format. There are exporters into osg format available for Blender, Maya and 3D Studio MAX. Supported picture formats include rgb, gif, jpg, png, tiff, pic, bmp, dds, tga and quicktime. This module also provides I/O device abstraction. The other file format loader plugins are registered with osgDB.
OSGGA
Бұл әртүрлі платформалар үшін қажетті графикалық интерфейс абстракциясы кітапханасы.
This is a GUI abstraction library required for different platforms.
osgViewer (осыны көруші)
osgViewer кітапханасы графикалық көріністі жылдам және оңай визуализациялауға мүмкіндік береді. Бұл сонымен қатар әртүрлі терезе жүйесі интерфейстері үшін платформадан тәуелсіз абстракция болып табылады.
osgViewer Library provides a quick and easy way of visualizing the graphics scene. It is also a platform independent abstraction for various window system interfaces.
өндіруші
OSG сонымен қатар osgProducer жиынтығымен бірге келеді, ол көптеген графикалық контексттерді және көп жіпті қолдайтын платформадан тәуелсіз қараушы құрал.
The OSG is also shipped with a osgProducer which is just a platform independent viewer supporting multiple graphic contexts and multi threading.
NodeKits (құрылғылар)
Жобаның таратылуында NodeKits деп аталатын әртүрлі жиынтықтар бар. Бұл - жиі кездесетін мәселелердің шешімдері және кеңінен қолданылатын 3D қосымша компоненттері мен графикалық алгоритмдер. Ең маңыздылары:
Project distribution also contains a variety of so called NodeKits. These are solutions of common problems and frequently used more advanced 3D application components and graphics algorithms. Among the most significant are
osgAnimation — Сүйекті модельдерді пайдалану, анимациялау және форма өзгерту. osgFX — Арнайы эффектілер және кескінді өңдеу. osgManipulator — Интерактивті 3D кеңістікті манипуляциялау. osgParticle — Күрделі бөлшектік жүйелерді пайдалану. osgQt — Qt құралдар жиынтығымен интеграция және QtGUI элементтерін OSG қолданбаларына қосу. osgShadow — Көлеңкелерді көрсетуге арналған құралдар жиынтығы. osgTerrain — Жер бедерін кең көлемде көрсету. osgText — Жоғары сапалы антиалиасланған қаріптер, TrueType және FreeType қаріптеріне қолдау. osgVolume — Көлемдік көрсету және көлемдік деректерді өңдеу. osgWidget — Қарапайым графикалық интерфейсті құру.
osgAnimation — Skeletal models usage, animating and morphing. osgFX — Special effects and image postprocessing. osgManipulator — Interactive 3D scene manipulation. osgParticle — Advanced particle system usage. osgQt — Integration with Qt toolkit and incorporation of QtGUI elements into OSG applications. osgShadow — Framework for shadow rendering techniques. osgTerrain — Extensive terrain rendering. osgText — Quality antialiased fonts, TrueType and FreeType font support. osgVolume — Volume rendering and volumetric data manipulation. osgWidget — Simple GUI creation.