OpenSceneGraph es una interfaz de programación de aplicaciones de gráficos 3D de código abierto (biblioteca o marco), [2] utilizada por desarrolladores de aplicaciones en campos como simulación visual , juegos de computadora , realidad virtual , visualización científica y modelado .
Lanzamiento estable | 3.6.5 / 31 de enero de 2020 [1] |
---|---|
Repositorio | |
Escrito en | C ++ |
Sistema operativo | Multiplataforma |
Tipo | Gráficos 3D |
Licencia | Licencia pública OpenSceneGraph ( basada en LGPL ) |
Sitio web | www www |
El kit de herramientas está escrito en C ++ estándar usando OpenGL , [2] y se ejecuta en una variedad de sistemas operativos, incluidos Microsoft Windows , macOS , Linux , IRIX , Solaris y FreeBSD . Desde la versión 3.0.0, OpenSceneGraph también admite el desarrollo de aplicaciones para plataformas móviles, a saber, iOS y Android .
En 2021, el proyecto está siendo reemplazado por el proyecto VulkanSceneGraph, una biblioteca basada en Vulkan. [3] OpenSceneGraph está en fase de mantenimiento desde 2019.
Historia
El proyecto OpenSceneGraph fue iniciado por Don Burns en 1998. Robert Osfield se unió al proyecto durante 1999, trabajando en la adaptación de componentes terminados para Microsoft Windows. El proyecto pasó a ser de 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 amplia refactorización del código base existente, poniendo énfasis en la modernización, adoptando los estándares y patrones de diseño modernos de C ++ .
En abril de 2001, teniendo en cuenta la creciente comunidad de usuarios y el interés del público, Robert Osfield creó OpenSceneGraph Professional Services, que brinda soporte comercial, servicios de consultoría y capacitación. Esto marca la profesionalización total del proyecto.
La primera versión estable oficial de OpenSceneGraph fue la versión 1.0, lanzada en 2005. Una versión extendida 2.0 siguió en 2007, agregando soporte para sistemas multi-core y multi-gpu, varios NodeKits importantes y el uso del sistema de compilación multiplataforma unificado CMake . Se introdujeron libros y manuales de usuario. [4]
El proyecto ha crecido rápidamente y se ha vuelto más popular desde entonces. Hay más de 530 colaboradores firmados bajo la versión estable actual, y la lista de correo oficial contiene miles de nombres. [5]
En 2019, el proyecto pasó a una fase de mantenimiento, y el principal esfuerzo de desarrollo se encaminó a su proyecto sucesor VulkanSceneGraph. [6]
Características
Características de la versión 1.0: [7]
- Una implementación de gráficos de escena rica en funciones y ampliamente adoptada
- Soporte para funciones que aumentan el rendimiento
- Ver corte de trombos , pequeñas características y oclusiones
- Nivel de detalle
- Clasificación de estado y actualización de estado diferido
- Rutas rápidas de OpenGL y últimas extensiones
- Optimización de múltiples subprocesos y bases de datos
- Soporte para OpenGL, desde 1.1 hasta 2.0, incluidas las últimas extensiones
- Soporte estrechamente acoplado para OpenGL Shading Language, desarrollado en conjunto con 3Dlabs
- Soporte para una amplia gama de formatos de base de datos de imágenes 2D y 3D, con cargadores disponibles para formatos como OpenFlight , TerraPage , OBJ , 3DS , JPEG , PNG y GeoTIFF
- Efectos de partículas
- Soporte para texto TrueType suavizado
- Soporte perfecto para objetos framebuffer , pbuffers y efectos de render a textura de frame buffer
- 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 paginadas de terrenos geoespaciales a gran escala
- Soporte de introspección para bibliotecas centrales que permite que las aplicaciones externas consulten, obtengan, configuren y operen en 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
Funciones de la versión 2.8.3 [8]
- Compatibilidad con Mac OS X 10.6 (Snow Leopard)
- Compatibilidad con ImageIO en Mac OS X
- Exportación y conversión de archivos 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 de formato de archivo PLY
Características de la versión 2.8.4: [9]
- Soporte de compilación VS2010
Características de la versión 3.0.0: [10]
- Compatibilidad con OpenGL ES 1.1 y OpenGL ES 2.0
- Compatibilidad con OpenGL 3.xy 4.x junto con las extensiones OpenGL asociadas
- Soporte para Android en tabletas y teléfonos
- Soporte para IOS en tabletas y teléfonos (las aplicaciones de los usuarios finales ya han sido aceptadas en la App Store)
- Introducción de la aplicación Present3D para presentaciones 3D inmersivas
- Nuevos serializadores extensibles que proporcionan nuevos formatos nativos de archivo .osgb binary, .osgt ascii y .osgx xml
- Nueva arquitectura de metadatos serializable generalizada
- Nueva biblioteca osgQt que facilita la integración de OpenSceneGraph con Qt, incluida la navegación web a través de QWebKit.
- Nuevo complemento FBX basado en Audodesk FBX DSK que permite la lectura del formato .fbx de creación e intercambio 3D
- Nuevo complemento directshow para manejar películas en Windows
- Nuevo complemento de pov para exportar una escena a formato POV-Ray, que permite el uso de POV-Ray para realizar un trazado de rayos fotorrealista
- Nuevo plugin ply para leer archivos ply
- Complemento 3ds renovado para leer y escribir archivos .3ds
- Complemento dxf renovado para leer y escribir archivos .dxf
- Soporte para Cocoa y compilación OSX de 64 bits
Historial de lanzamiento de la versión estable
Versión | Fecha de lanzamiento |
---|---|
3,0 | 5 de febrero de 2013 [11] |
3.2 | 24 de julio de 2013 [12] |
3.4 | 20 de julio de 2015 [13] |
3.4.1 | 28 de agosto de 2017 [14] |
3.6 | 7 de abril de 2018 [15] |
3.6.1 | 28 de mayo de 2018 |
3.6.2 | 29 de junio de 2018 |
3.6.3 | 14 de septiembre de 2018 |
3.6.4 | 26 de julio de 2019 |
3.6.5 | 31 de enero de 2020 |
Arquitectura
La arquitectura de la biblioteca se puede dividir en tres subconjuntos principales: la biblioteca principal de OpenSceneGraph, osgViewer y un conjunto de 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 gráfico de escena . Contiene clases que representan varios tipos de nodos , geometría de escena, abstracción de estado OpenGL , transformaciones geométricas , así como clases matemáticas para operaciones matriciales y vectoriales 2D y 3D . También se incluye la gestión avanzada de memoria .
OpenThreads
El proyecto OpenSceneGraph contiene una biblioteca de subprocesos, OpenThreads , que es un modelo ligero de subprocesos multiplataforma . Está destinado a proporcionar una interfaz de hilo orientada a objetos (OO) mínima y completa para programadores de C ++ . Está modelado libremente en la API de subprocesos de Java y los estándares de subprocesos POSIX .
La arquitectura de OpenThreads está diseñada en torno a modelos de subprocesos "intercambiables" que se definen en tiempo de compilación en una biblioteca de objetos compartidos . Es importante señalar que, si bien se podría haber utilizado un diseño de patrón de fábrica para lograr el objetivo de la interfaz genérica , habría requerido que el programador asignara cada uno de los 4 tipos fundamentales (Thread, Mutex, Barrier y Condition) en el montón . Debido al costo asociado con 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 abstrusa, pero efectiva, para proporcionar la ocultación de datos / implementación necesaria . 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 concretas, pero brindan una interfaz uniforme al dso.
El objetivo de diseño de OpenThreads es construir implementaciones optimizadas utilizando construcciones de multiprocesamiento optimizadas para la plataforma, como los métodos sproc utilizados en IRIX y subprocesos de Windows.
osgUtil
osgUtil contiene funciones y utilidades de backend de renderizado que se encargan del recorrido del gráfico de escena , la optimización de renderizado y la transformación de la escena en un flujo de llamadas a la API OpenGL . También proporciona medios de interacción básica con la escena, como la selección de objetos.
osgDB
Esta biblioteca tiene la tarea de cargar archivos de modelos 3D. Es compatible con muchos manipuladores de formatos de datos 2D / 3D . Se admiten más de 50 formatos diferentes; los más comunes son los formatos de datos 3D, como COLLADA (.dae), LightWave (.lwo), Wavefront (.obj), OpenFlight (.flt), 3D Studio Max (.3ds), DirectX (.x) y muchos otros. OpenSceneGraph también proporciona su propio formato ASCII .osg nativo . Hay exportadores en formato .osg disponibles para Blender , Maya y 3D Studio MAX.
Los formatos de imagen admitidos incluyen .rgb, .gif , .jpg , .png , .tiff , .pic, .bmp , .dds , .tga y quicktime .
Este módulo también proporciona abstracción de dispositivos de E / S. Los otros complementos del cargador de formato de archivo están registrados con osgDB.
osgGA
Esta es una biblioteca de abstracción de GUI requerida para diferentes plataformas.
osgViewer
La biblioteca osgViewer proporciona 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 .
osgProducer
El OSG también se envía con un osgProducer, que es solo un visor independiente de la plataforma que admite múltiples contextos gráficos y subprocesos múltiples. [16] [17]
NodeKits
La distribución de proyectos también contiene una variedad de los llamados NodeKits . Éstas son soluciones de problemas comunes y algoritmos gráficos y componentes de aplicaciones 3D más avanzados de uso frecuente. Entre los más importantes se encuentran
- osgAnimation: uso, animación y transformación de modelos esqueléticos.
- osgFX: efectos especiales y posprocesamiento de imágenes.
- osgManipulator: manipulación interactiva de escenas en 3D.
- osgParticle: uso avanzado del sistema de partículas .
- osgQt: integración con el kit de herramientas Qt e incorporación de elementos QtGUI en aplicaciones OSG.
- osgShadow - Marco para técnicas de renderizado de sombras.
- osgTerrain: renderizado extenso del terreno .
- osgText: fuentes antialias de calidad, compatibilidad con fuentes TrueType y FreeType.
- osgVolume: procesamiento de volumen y manipulación de datos volumétricos.
- osgWidget: creación sencilla de GUI .
Recepción y adopción
OpenSceneGraph no proporciona ninguna funcionalidad para una lógica de "juegos" superior, es una herramienta de solo renderización. Hay varios motores a gran escala para la creación de juegos de computadora (o los llamados juegos serios ) que utilizan OSG como base de la representación de gráficos, siendo el marco más común Delta3D .
Existe una gran variedad de productos de software creados sobre OpenSceneGraph; entre otros, Virtual Terrain Project y ViewTec TerrainView . La lista de usuarios de OSG contiene empresas como Boeing , NASA , FlightGear , Norcontrol y muchas otras. [18] [19] [20] [21] [22]
A nivel de la comunidad de código abierto, varios proyectos han adoptado OSG como backend de renderizado:
- FlightGear (software de simulación de vuelo)
- OpenMW (motor de código abierto para Morrowind)
OpenSceneGraph ha recibido una implementación de javascript / WebGL llamada OSG.JS que es utilizada por muchos visores de escenas 3D en línea, incluidos Sketchfab y Clara.io .
También se está desarrollando actualmente un encapsulado de C ++ a javascript a través de Emscripten OGStudio .
Entre otros productos que utilizan OSG hay que mencionar:
- Editor de escenas Remo 3D OSG
- http://www.palomino3d.org/
Ver también
- OSG.JS
- OpenGL
- OGRO
- Delta3D
- Motor Irrlicht
- Espacio cristalino
- Biblioteca de visualización
- OpenSG
- ossimPlanet
- Grome
- Inventor abierto
- Unidad (motor de juego)
Referencias
- ^ "Lanzamientos estables" .
- ^ a b Anne Ruas, Christopher Gold (2008). Avances en el manejo de datos espaciales: 13º Simposio internacional sobre manejo de datos espaciales . Saltador. pag. 370. ISBN 9783540685661.Mantenimiento de CS1: utiliza el parámetro de autores ( enlace )
- ^ "Proyecto VulkanSceneGraph" . www.openscenegraph.org . Consultado el 5 de julio de 2021 .
- ^ Martz, P .: Guía de inicio rápido de OpenSceneGraph. Louisville, Estados Unidos, 2007.
- ^ http://www.openscenegraph.org/projects/osg/wiki/Support/History
- ^ http://www.openscenegraph.org/index.php/8-news/232-vulkan-vkscenegraph-project
- ^ "Copia archivada" . Archivado desde el original el 9 de junio de 2011 . Consultado el 20 de febrero de 2010 .CS1 maint: copia archivada como título ( enlace )
- ^ "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.
- ^ http://www.openscenegraph.org/svn/osg/OpenSceneGraph/tags/OpenSceneGraph-2.8.4/NEWS.txt
- ^ http://www.openscenegraph.org/svn/osg/OpenSceneGraph/tags/OpenSceneGraph-3.0.0/NEWS.txt
- ^ Torres, Jordi. "Lanzamiento de OpenSceneGraph 3.0" . www.openscenegraph.org . Consultado el 23 de septiembre de 2017 .
- ^ Usuario, Super. "Lanzamiento de OpenSceneGraph 3.2" . www.openscenegraph.org . Consultado el 23 de septiembre de 2017 .
- ^ Usuario, Super. "Lanzamiento de OpenSceneGraph-3.4" . www.openscenegraph.org . Consultado el 23 de septiembre de 2017 .
- ^ Usuario, Super. "Lanzamiento de OpenSceneGraph-3.4.1" . www.openscenegraph.org . Consultado el 23 de septiembre de 2017 .
- ^ Usuario, Super. "Lanzamiento de OpenSceneGraph-3.6" . www.openscenegraph.org . Consultado el 14 de agosto de 2018 .
- ^ Aylett, Ruth. "Introducción a Open Scene Graph" (PDF) . Universidad Heriot Watt .
- ^ "Introducción a OpenSceneGraph" . openscenegraph.sourceforge.net . Consultado el 5 de julio de 2021 .
- ^ http://www.openscenegraph.com/index.php/gallery/use-cases
- ^ http://www.openscenegraph.org/projects/osg/wiki/Screenshots
- ^ http://vterrain.org/
- ^ http://www.viewtec.net/index.php?page=products
- ^ http://www.delta3d.org
enlaces externos
- www .openscenegraph .org - sitio web oficial del proyecto
- Binarios AlphaPixel OSG: binarios precompilados de Windows, Mac y Linux x86 y x64.
- SigmaOSG - Tutoriales de OpenSceneGraph (contiene todo el material anterior de OSGHelp del sitio retirado de OSGHelp)
- Scenegraphs y Openscenegraph para desarrollo de software 3D
- OpenSceneGraph : página web de información de la biblioteca en www.OpenGL.org (una de las cuatro bibliotecas promovidas)