Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Ашық кодты графикалық бағдарламалық қамтамасыз ету OpenSG - шынайы уақыт графикалық бағдарламаларын құру үшін көрініс графикалық жүйесі, мысалы виртуалды шындық қосымшалары үшін. Ол ашық бастапқы код принциптері бойынша әзірленген, LGPL лицензиясы бар және оны еркін пайдалануға болады. Ол Windows, Linux, Solaris және OS X-те жұмыс істейді және OpenGL-ге негізделген. Оның негізгі ерекшеліктері - озық көптіріктілік және кластерлік қолдау (басқа әдістермен қатар, бірінші рет сұрыптау және соңғы рет сұрыптау), бірақ ол бір желілі бір жүйелік қолданбада да өте жақсы қолданылады. Ол Khronos Group-тың бір бөлігі емес.
Open source graphics software
OpenSG is a scene graph system to create real time graphics programs, e. g. for virtual reality applications. It is developed following Open Source principles, LGPL licensed, and can be used freely. It runs on Windows, Linux, Solaris and OS X and is based on OpenGL. Its main features are advanced multithreading and clustering support (with sort first and sort last rendering, amongst other techniques), although it is perfectly usable in a single threaded single system application as well. It is not part of Khronos Group.
Тарих
Ол басқа көптеген жүйелер сияқты 1999 жылы SceneGraph жойылғаннан кейін Microsoft пен SGI-нің Fahrenheit графикалық API жобасы қайтыс болған кезде басталды. Авторлар қалаған мүмкіндіктері бар басқа сахналық графикалық жүйе нарықта немесе көкжиекте болмағандықтан, олар өздерін бастауға шешім қабылдады. OpenSG-ді OpenSceneGraph-пен шатастыруға болмайды, ол OpenGL Performer-ге ұқсас, мүлдем басқа сахналық графикалық API. Екеуінің де дамуы бір уақытта басталды және екеуі де ұқсас атауларды таңдады.
It was started, just like many other systems, at the end of the scenegraph extinction in 1999 when Microsoft and SGI's Fahrenheit graphics API project died. Given that there was no other scene graph system on the market nor on the horizon with the features the authors wanted, they decided to start their own. OpenSG should not be confused with OpenSceneGraph which is entirely different scene graph API, somewhat similar to OpenGL Performer. Development on both started about the same time, and both chose similar names.
Технология
OpenSG - басқалар сияқты көрініс графтары, бірақ оны басқалардан ерекшелендіретін бірқатар ерекшеліктері бар. Ол күйді өзгертуді оңтайландыруға арналған үстеме шығындарды азайту үшін блокталған күйді басқару жүйесін, өте икемді өтуді және басқа да механизмдерді іске қосу уақытын алмасу мен негізгі деректер құрылымдарын жақсартуға мүмкіндік береді, бірақ ең ерекше аспекті - оның көп жіктік тәсілі. Сценалық графиктер көп желілік үшін өте қиын нысаналар болып табылады, өйткені олар жүздеген мегабайт естеліктерді оңай тұтынатын өте үлкен дерек құрылымдарын қамтиды. Бұларды қайта жасау үлкен шығындардан кейін мүмкін емес. Көптеген сахналық графиктер параллель жазуларға байланысты деректердің бүлінуін болдырмау үшін жеке тораптарды бұғаттап қояды, бірақ бұл тек ішінара шешім. Сценалық графиктің күйі бүкіл сценалық графикпен бейнеленеді, тек жеке тораптарды қорғау әлі де сәйкес келмейтін нәтижелерге әкелуі мүмкін (мысалы, асинхронды физикалық симуляцияны жүргізген кезде графиктің тек бөліктерін жаңарту жартылай симуляция қадамдарының көрсетілуіне әкеледі). OpenSG таңдамалы көп буферлеуді қолданады, бұл қорғалуы қажет әрбір желі үшін графиктің кішігірім бөліктерін дублиру арқылы, ал vertex массивтері мен текстуралы суреттер сияқты жаппай деректерді бөлісу арқылы және оларды тек жазу механизміне көшірме жасау арқылы қайталайды. Жеке желілер үшін өзгерістерді синхрондау ең аз шығындарды қамтамасыз ететін өзгерістер тізімі әдісін қолдану арқылы жүзеге асырылады. Осы механизм өте икемді және тиімді кластерлеуге мүмкіндік береді. Бірнеше машинада жұмыс істейтін қолданбаны синхрондау үшін әр фреймнің өзгерістері ғана әрбір машинаға жіберіледі және жергілікті сахналық графикке біріктіріледі. Осылайша жергілікті және қашықтағы өзгерістер арасындағы айырмашылық көрінбейді. Кластерде жұмыс істегісі келетін қосымшаға кластердегі барлық өзгерістерді тарата алатын және Powerwall немесе CAVE-ті өте оңай басқаратын ClusterWindow-ды ашу керек.
OpenSG is a scene graph like many others, but with a number of unique features that set it apart from others. It features a blocked state management system to reduce the overhead for state change optimization, highly flexible traversal and other mechanisms to allow run time exchange and enhancement of core data structures, but the most unusual aspect is its multi threading approach. Scene graphs are notoriously hard targets for multi threading, as they contain very large data structures easily consuming hundreds of megabytes of memory. Duplicating these is not an option due to the large overhead. Many scene graphs just lock individual nodes to prevent data corruption due to parallel writes, but that is only a partial solution. The state of the scene graph is represented by the whole scene graph, only protecting individual nodes can still lead to inconsistent results (e. g. when running an asynchronous physics simulation only updating parts of the graph will lead to partial simulation steps being displayed). OpenSG uses selective multi buffering, by duplicating the small parts of the graph for each thread that needs to be protected while sharing the bulk data like vertex arrays and texture images, and only duplicating these using a copy on write mechanism. Synchronization of the changes for individual threads is done using a change list approach that allows minimal overhead. The same mechanism also allows highly flexible and effective clustering. To synchronize an application running on several machines, only the changes for each frame are sent to each machine and integrated into the local scene graph. This way the distinction between local and remote changes is almost invisible. An application that wants to run on a cluster just needs to open a ClusterWindow that can distribute all changes across the cluster and can very easily drive a Powerwall or a CAVE without having to worry about distribution protocols and other complications.
Адамдар
Жобаны Дирк Райнерс, Геррит Восс және Йоханнес Бехр бастады. Ол көптеген басқа адамдардың үлесін алды, әсіресе Карстен Нойман, қазіргі уақытта негізгі қызметшісі болып табылады.
The project was started by Dirk Reiners, Gerrit Voss and Johannes Behr. it has received contributions by many other people, most notably by Carsten Neumann, who currently functions as the main maintainer.