OpenSceneGraph
| OpenSceneGraph
| |
|---|---|
| |
| |
| Datos básicos
| |
| Versión actual | 3.6.5 (31 de enero de 2020) |
| sistema operativo | Multiplataforma |
| lenguaje de programación | C ++ |
| categoría | Visualización científica , biblioteca de programas |
| Licencia | Licencia pública OpenSceneGraph ( basada en LGPL ) |
| Se habla alemán | No |
| www.openscenegraph.org | |
OpenSceneGraph es un sistema de gráficos de escena (SG) de código abierto que funciona en aplicaciones de gráficos en tiempo real como: B. Se utiliza FlightGear .
OpenSceneGraph se escribió en C ++ , utiliza OpenGL como base para gráficos 3D y se ejecuta en una variedad de sistemas operativos, incluidos Microsoft Windows , Mac OS X , Linux , IRIX , Solaris y FreeBSD .
Aunque tiene un nombre similar al sistema de gráficos de escena OpenSG y se inició aproximadamente al mismo tiempo, son dos proyectos diferentes e independientes.
historia
El proyecto OpenSceneGraph fue iniciado en 1998 por Don Burns. Robert Osfield se unió al proyecto en 1999 y trabajó en la migración de los componentes terminados a Microsoft Windows. El proyecto se convirtió en código abierto en septiembre de 1999 y se creó el sitio web oficial del proyecto. Hacia el final del año, Osfield se hizo cargo del proyecto y comenzó una extensa refactorización de la base de código existente, enfocándose en la modernización e incorporando estándares C ++ y patrones de diseño modernos.
En abril de 2001, con la creciente comunidad de usuarios y el interés público en mente, Robert Osfield fundó OpenSceneGraph Professional Services, que brinda soporte comercial, asesoramiento y capacitación. Esto marca la completa profesionalización del proyecto.
La primera versión estable oficial de OpenSceneGraph fue la versión 1.0, que se lanzó en 2005. Una versión ampliada 2.0 siguió en 2007 y agregó soporte para sistemas multinúcleo y multi-GPU, varios NodeKits importantes y el uso del sistema de compilación multiplataforma unificado CMake . Se introdujeron libros y manuales de usuario.
Desde entonces, el proyecto ha ido creciendo rápidamente y haciéndose cada vez más popular. Hay más de 530 colaboradores firmados bajo la versión estable actual, y la lista de correo oficial tiene miles de nombres.
En 2019, el proyecto se transfirió a una fase de mantenimiento, y el trabajo de desarrollo principal se trasladó al proyecto de seguimiento VulkanSceneGraph.
características
Características de la versión 1.0:
- Una implementación de gráficos de escena rica en funciones y ampliamente utilizada
- Soporte para funciones que mejoran el rendimiento
- Ver Frustum , Small Feature y Occlusion Culling
- Nivel de detalle
- Clasificación de estado y actualización de estado lenta
- Rutas rápidas de OpenGL y las últimas mejoras
- Optimización de múltiples subprocesos y bases de datos
- Soporte para OpenGL, de 1.1 a 2.0, incluidas las últimas mejoras
- Soporte estrechamente acoplado para OpenGL Shading Language, desarrollado en colaboración con 3Dlabs
- Soporte para una amplia variedad de formatos de base de datos de imágenes 2D y 3D, con cargadores para formatos como OpenFlight, TerraPage, OBJ , 3DS, JPEG , PNG y GeoTIFF
- Efectos de partículas
- Soporte para texto TrueType suavizado
- Compatibilidad perfecta con objetos framebuffer , pbuffers y efectos de renderizado a textura de framebuffer
- Soporte de paginación de bases de datos multiproceso que se puede utilizar junto con todos los cargadores de imágenes y bases de datos 3D
- Generación de bases de datos subcontratadas para grandes áreas geográficas de todo el mundo
- Soporte de introspección para bibliotecas centrales, que permite a las aplicaciones externas consultar, recibir, configurar y editar todas las clases en el gráfico de escena a través de una interfaz genérica
- Soporte configurable y multiproceso para múltiples CPU / múltiples máquinas GPU
Características de la versión 2.8.3
- Soporte para Mac OS X 10.6 (Snow Leopard)
- Compatibilidad con ImageIO en Mac OS X
- Exportación y conversión de formato de archivo 3DS
- Tecnología Autodesk FBX integrada
- Soporte integrado de FFmpeg para mostrar contenido de archivos de video en aplicaciones 3D
- Soporte del formato de archivo PLY
Características de la versión 2.8.4:
- Soporte de compilación VS2010
Características de la versión 3.0.0:
- Soporte para OpenGL ES 1.1 y OpenGL ES 2.0
- Compatibilidad con OpenGL 3.xy 4.x, así como con las extensiones OpenGL asociadas
- Soporte para Android en tabletas y teléfonos
- Soporte para iOS en tabletas y teléfonos (las aplicaciones de usuario final ya han sido aceptadas en la App Store )
- Introducción de la aplicación Present3D para presentaciones 3D inmersivas
- Nuevos serializadores extensibles que proporcionan los nuevos formatos nativos .osgb binary, .osgt ascii y .osgx xml file
- Nueva arquitectura de metadatos serializable generalizada
- Nueva biblioteca osgQt que permite una fácil integración de! OpenSceneGraph con Qt, incluida la navegación web a través de QWebKit.
- Nuevo complemento FBX basado en Autodesk FBX DSK que permite la lectura del formato .fbx de creación e intercambio 3D
- Nuevo plug-in directshow para manejar películas en Windows
- Nuevo complemento de pov para exportar una escena al formato POV-Ray, que permite el uso de POV-Ray para el trazado de rayos fotorrealista
- Nuevo plugin ply para leer archivos ply
- Complemento 3ds rediseñado para leer y escribir archivos .3ds
- Complemento dxf revisado para leer y escribir archivos .dxf
- Soporte para Cocoa y compilación OSX de 64 bits
arquitectura
Aquí hay una descripción general de la arquitectura OpenSceneGraph: La arquitectura de la biblioteca se puede dividir en tres partes principales: la biblioteca central de OpenSceneGraph, osgViewer y varios NodeKits.
centro
La base de la biblioteca OpenSceneGraph se puede dividir en cuatro módulos principales.
Osg
El núcleo de OpenSceneGraph proporciona clases y métodos para la construcción y manipulación del escenario gráfico . Contiene clases que representan diferentes tipos de nodos , geometría de escena, abstracción de estado OpenGL , transformaciones geométricas y clases matemáticas para operaciones matriciales y vectoriales 2D y 3D . También se incluye una gestión de memoria avanzada .
OpenThreads
El proyecto OpenSceneGraph contiene una librería de hilos, hilos abiertos que un peso ligero, multiplataforma hilo - modelo representa. Está destinado a proporcionar una interfaz de hilo orientada a objetos (OO) mínima y completa para programadores de C ++ . Se basa libremente en la API de subprocesos de Java y los estándares de subprocesos POSIX.
La arquitectura de OpenThreads se basa en modelos de subprocesos "intercambiables" que se definen en una biblioteca de objetos compartidos en tiempo de compilación . Es importante tener en cuenta que, si bien se podría haber utilizado un diseño de patrón de fábrica para lograr el objetivo de una interfaz genérica , esto habría requerido que el programador acceda a cada uno de los 4 tipos básicos (Thread, Mutex, Barrier y Condition) asignados a el montón. Debido al costo de la asignación de montón de las implementaciones concretas subyacentes de estas construcciones en algunas plataformas, dicha asignación se consideró inaceptable en el momento en que se escribió originalmente esta biblioteca y, por lo tanto, no se utilizó el patrón de fábrica.
En cambio, se eligió una técnica algo absurda, pero efectiva, para ocultar los datos / implementaciones necesarios. Esta técnica utiliza punteros vacíos privados para encapsular los datos privados del objeto. Los punteros vacíos en realidad apuntan a estructuras de datos específicas, pero ofrecen una interfaz uniforme para el dso.
El objetivo de diseño de OpenThreads es crear implementaciones optimizadas que utilicen construcciones de multiprocesamiento optimizadas para la plataforma, tales como: B. los métodos Sproc y los subprocesos de Windows utilizados en IRIX .
OsgUtil
osgUtil incluye renderizado : la funcionalidad de backend y las utilidades alrededor del cruce se encargan del gráfico de la escena, la optimización del renderizado y la transformación de la escena en un flujo de llamadas OpenGL. También proporciona medios de interacción básica con la escena, como B. la selección de objetos.
OsgDB
OpenSceneGraph también viene con una gran colección de cargadores de bases de datos y muchos manipuladores para formatos de datos 2D / 3D . Se admiten más de 50 formatos diferentes: los formatos de datos 3D más comunes, como COLLADA (.dae), LightWave (.lwo), Wavefront (.obj), OpenFlight (.flt), 3D Studio Max (.3ds), DirectX ( .x) y muchos otros. OpenSceneGraph también ofrece su propio formato ASCII -.osg nativo . Hay exportadores en formato .osg para Blender , Maya y 3D Studio MAX.
Los formatos de imagen admitidos son .rgb, .gif , .jpg , .png , .tiff , .pic, .bmp , .dds , .tga y quicktime.
Este módulo también ofrece la abstracción de dispositivos de E / S.
OsgViewer
La biblioteca osgViewer ofrece una forma rápida y sencilla de visualizar la escena gráfica. También es una abstracción independiente de la plataforma para varias interfaces de sistemas de ventanas .
NodeKits
La distribución del proyecto también contiene una gran cantidad de los denominados NodeKits. Se trata de soluciones a problemas comunes y algoritmos gráficos y componentes de aplicaciones 3D más avanzados y de uso común. Los más importantes incluyen
- osgAnimation: uso de modelos de esqueleto, animación y transformación.
- osgFX: efectos especiales y posprocesamiento.
- osgManipulator: manipulación interactiva de escenas en 3D.
- osgParticle: uso extendido del sistema de partículas .
- osgQt: integración con Qt Toolkit e integración de elementos QtGUI en aplicaciones OSG.
- osgShadow - Marco para técnicas de renderizado de sombras.
- osgTerrain - Representación extensa del terreno.
- osgText: fuentes anti-aliasing de alta calidad, compatibilidad con fuentes TrueType y FreeType.
- osgVolume: procesamiento de volumen y manipulación de datos volumétricos.
- osgWidget: creación sencilla de GUI .
Evidencia individual
- ^ A b Anne Ruas, Christopher Gold: Avances en el manejo de datos espaciales: 13º Simposio internacional sobre manejo de datos espaciales . Springer, 2008, ISBN 978-3-540-68566-1 , págs. 370 ( google.com ).
- ↑ Martz, P.: Guía de inicio rápido de OpenSceneGraph. Louisville, Estados Unidos, 2007.
- ↑ http://www.openscenegraph.org/projects/osg/wiki/Support/History
- ↑ Volcano Scenegraph Project. 11 de diciembre de 2018, consultado el 29 de abril de 2021 .
- ^ Noticias de OSG. (Ya no está disponible en línea.) 19 de febrero de 2010, archivado desde el original el 9 de junio de 2011 ; Consultado el 20 de febrero de 2010 .
- ^ OpenSceneGraph agrega nuevas funciones a las aplicaciones de gráficos 3D. 5 de abril de 2010; archivado desde el original el 15 de abril de 2010 ; Consultado el 10 de abril de 2010 .
