OpenSG es un sistema de grafos de escena para crear programas gráficos en tiempo real, por ejemplo, para aplicaciones de realidad virtual. Se desarrolla siguiendo principios de código abierto, cuenta con licencia LGPL y puede utilizarse libremente. Funciona en Windows , Linux , Solaris y OS X y se basa en OpenGL .
Sus principales características son la compatibilidad avanzada con multihilo y agrupamiento (con renderizado de ordenación primero y último , entre otras técnicas), aunque también es perfectamente utilizable en una aplicación de un solo hilo y un solo sistema.
No forma parte del Grupo Khronos .
Historia
Su creación, al igual que la de muchos otros sistemas, se produjo al final de la extinción de los grafos de escena en 1999, cuando el proyecto de API gráfica Fahrenheit de Microsoft y SGI fracasó. Dado que no existía ningún otro sistema de grafo de escena en el mercado ni en el horizonte con las características que buscaban sus autores, decidieron crear el suyo propio.
OpenSG no debe confundirse con OpenSceneGraph , que es una API de grafo de escena completamente diferente, algo similar a OpenGL Performer . El desarrollo de ambas comenzó casi al mismo tiempo y ambas eligieron nombres similares.
Tecnología
OpenSG es un grafo de escena como muchos otros, pero con una serie de características únicas que lo distinguen. Cuenta con un sistema de gestión de estado bloqueado para reducir la sobrecarga en la optimización del cambio de estado, un recorrido altamente flexible y otros mecanismos que permiten el intercambio y la mejora en tiempo de ejecución de las estructuras de datos centrales, pero el aspecto más inusual es su enfoque de multihilo. [ 1 ]
Los grafos de escena son objetivos notoriamente difíciles para la multihilo, ya que contienen estructuras de datos muy grandes que consumen fácilmente cientos de megabytes de memoria. Duplicarlos no es una opción debido a la gran sobrecarga. Muchos grafos de escena simplemente bloquean nodos individuales para evitar la corrupción de datos debido a escrituras paralelas, pero esta es solo una solución parcial. El estado del grafo de escena está representado por el grafo completo, y proteger solo nodos individuales aún puede generar resultados inconsistentes (por ejemplo, al ejecutar una simulación física asíncrona, actualizar solo partes del grafo dará como resultado que se muestren pasos de simulación parciales). OpenSG utiliza un búfer múltiple selectivo, duplicando las pequeñas partes del grafo para cada hilo que necesita protección mientras comparte los datos masivos, como matrices de vértices e imágenes de textura, y duplicando solo estos mediante un mecanismo de copia en escritura. La sincronización de los cambios para hilos individuales se realiza mediante un enfoque de lista de cambios que permite una sobrecarga mínima.
Este mismo mecanismo también permite una agrupación en clústeres altamente flexible y eficaz. Para sincronizar una aplicación que se ejecuta en varias máquinas, solo se envían los cambios de cada fotograma a cada máquina y se integran en el grafo de escena local. De esta forma, la distinción entre cambios locales y remotos es prácticamente imperceptible. Una aplicación que desee ejecutarse en un clúster solo necesita abrir una ClusterWindow que distribuya todos los cambios en el clúster y pueda controlar fácilmente un Powerwall o un CAVE sin tener que preocuparse por los protocolos de distribución ni otras complicaciones.
Gente
El proyecto fue iniciado por Dirk Reiners , Gerrit Voss y Johannes Behr . Ha recibido contribuciones de muchas otras personas, sobre todo de Carsten Neumann, quien actualmente funge como principal responsable de su mantenimiento.
Referencias
- ↑ Voß, G.; Behr, J.; Reiners, D.; Roth2, M. (2002-01-01). "Una base segura para multihilo para grafos de escena y su extensión a clústeres" . Actas del Cuarto Taller Eurographics sobre Gráficos Paralelos y Visualización . EGPGV '02. Aire-la-Ville, Suiza: Asociación Eurographics: 33–37 . ISBN 1-58113-579-3.
{{cite journal}}: CS1 maint: nombres numéricos: lista de autores ( enlace )
Enlaces externos
- Página principal de OpenSG
- Página del proyecto en SourceForge
- Página del proyecto Ohloh.net archivada el 28/07/2009 en Wayback Machine .
- API de grafos de escena 3D