Un escena-gráfico es una estructura de datos general de uso general por los gráficos vector-basados que corrigen usos de y los juegos de ordenador modernos. Los ejemplos de tales programas incluyen el AutoCAD, el ilustrador de Adobe y el CorelDRAW .

El escena-gráfico es una estructura que arregla el lógico y a menudo (pero no no necesario) representación espacial de una escena gráfica. La definición de un escena-gráfico es borrosa, debido al hecho de que los programadores que ejecutan escena-gráficos en usos y particularmente la industria de los juegos toman los principios de base y adaptan éstos para adaptarse a un uso particular. Esto significa que no hay regla dura y rápida en cuanto a un qué escena-gráfico debe o no debe ser.

los Escena-gráficos son una colección de nodos en un gráfico o una estructura arborescente. Un nodo puede tener muchos niños pero a menudo solamente un solo padre, con el efecto de un padre evidente a todos sus nodos de niño; una operación se aplicó a un grupo propaga automáticamente su efecto a todos sus miembros. En muchos programas, asociar una matriz geométrica de la transformación (véase también la transformación y la matriz ) en cada nivel de grupo y la concatenación de tales matrices juntos es una manera eficiente y natural de procesar tales operaciones. Una característica común, por ejemplo, es la capacidad de agrupar formas/objetos relacionados en un objeto compuesto que se pueda entonces mover, transformado, seleccionado, el etc. tan fácilmente como un solo objeto.

Escena-gráficos en los gráficos que corrigen las herramientas

En los gráficos vector-basados que corrigen, cada nodo en un gráfico de la escena representa una cierta unidad atómica del documento, generalmente una forma tal como una elipse o trayectoria de Bezier. Aunque las formas ellos mismos (particularmente las trayectorias) se puedan descomponer más lejos en nodos tales como nodos de la tira, es práctico pensar en el gráfico de la escena según lo integrado por formas algo que yendo a un nivel inferior de la representación.

Otro concepto útil y user-driven del nodo es la capa. Una capa actúa como una hoja transparente sobre la cual cualquier número de formas y de grupos de la forma pueda ser puesto. El documento entonces se convierte en un sistema de las capas, cualesquiera cuyo puede convenientemente ser hecho invisible, amortiguado, y/o trabado (hecho inalterable). Algunos usos ponen todas las capas en una lista linear mientras que otros apoyan los substratos (es decir, capas dentro de capas, a cualquie profundidad deseada).

Interno, no puede haber diferencia estructural verdadera entre las capas y los grupos en absoluto, puesto que son ambos scenegraphs jerarquizados justos. Si las diferencias son necesarias, un tipo declaración común en el C++ sería hacer una clase genérica del scenegraph, y después deriva a capas y a grupos como subclases. Un miembro de la visibilidad, por ejemplo, sería una característica de una capa pero no no necesario de un grupo.

Escena-gráficos en juegos y los usos 3D

Los gráficos de la escena son ideales para los juegos modernos usar los gráficos 3D y los mundos o los niveles cada vez más grandes. En tales usos, los nodos en un escena-gráfico (generalmente) representan entidades u objetos en la escena.

Por ejemplo, un juego pudo definir una relación lógica entre un caballero y un caballo para considerar el caballero una extensión al caballo. El gráfico de la escena tendría un nodo del “caballo” con un nodo del “caballero” atado a él.

Así como la descripción de la relación lógica, el escena-gráfico puede también describir la relación espacial de las varias entidades: el caballero se mueve a través del espacio 3D mientras que el caballo se mueve.

En estos usos grandes, los requisitos de memoria son consideraciones importantes al diseñar un escena-gráfico. Por esta razón muchos sistemas grandes del escena-gráfico utilizan citar como ejemplo para reducir costes de la memoria y para aumentar velocidad. En nuestro ejemplo arriba, cada caballero es un nodo separado de la escena, pero la representación gráfica del caballero (compuesto de un acoplamiento 3D, de texturas, de materiales y de shaders) se cita como ejemplo. Esto significa que solamente una sola copia de los datos está guardada, que entonces es referida por cualquier nodo del “caballero” al escena-gráfico. Esto permite un presupuesto reducido de la memoria y aumentó velocidad, desde entonces cuando se crea un nuevo nodo del caballero, los datos del aspecto no necesita ser duplicada.

puesta en práctica del Escena-gráfico

La forma más simple de gráfico de la escena utiliza un arsenal o la estructura de datos de la lista encadenada, y la exhibición de sus formas es simplemente una cuestión linear de iterar los nodos uno por uno. Otras operaciones comunes, tales como comprobación para considerar el que la forma interseca el indicador de ratón (e., en un GUI - usos basados ) también se hacen vía búsquedas lineares. Para los pequeños scenegraphs, esto tiende a ser suficiente.

Scenegraphs más grandes hacen operaciones lineares llegar a ser perceptiblemente lentas y estructuras de datos subyacentes más complejas se utilizan así, el ser más popular un árbol . Ésta es la forma más común de escena-gráfico. En estos escena-gráficos el patrón del diseño compuesto se emplea a menudo para crear la representación jerárquica de grupo-nodos y de hoja-nodos.

los nodos del grupo del - pueden tener cualquier número de nodos de niño atados a él. Los nodos del grupo incluyen transformaciones y cambian nodos.

los nodos de hoja del - son los nodos que se rinden o consideran realmente el efecto de una operación. Éstos incluyen los objetos, los sprites, los sonidos, las luces y cualquier cosa que se podrían considerar “rendida” en un cierto sentido abstracto.

operaciones y envío del Escena-gráfico

Para aplicar una operación a un escena-gráfico, una cierta manera de enviar una operación basada sobre qué nodo se está considerando actual es necesaria. Por ejemplo en una operación de la representación un grupo-nodo de la transformación no haría nada más que su transformación (ésta es multiplicación de la matriz pero podría generalmente implicar operaciones con la dislocación del vector y Quaternions o los ángulos de Euler en lugar de otro). Considerando que un hoja-nodo del objeto enviaría el objeto para rendir al renderer (algunas puestas en práctica pudieron rendir el objeto directo pero ésta puede integrar la representación subyacente API - e. OpenGL o DirectX demasiado firmemente y rígido - él es mejor separar los sistemas del escena-gráfico y del renderer mientras que ésta promueve buen estilo y extensibilidad de OOP).

Para enviar diferentemente para diversos tipos de nodo varios diversos acercamientos pueden ser tomados, cada uno tiene pros - y - contra y se disputa extensamente entre la discusión de los programadores cuál es el mejor.

En idiomas orientadas al objeto tales como C++ esto se puede alcanzar fácilmente por las funciones virtuales, el nodo que la clase baja tiene funciones virtuales para cada operación que se pueda realizar en los nodos. Esto es simple hacer sino prevenir la adición de nuevas operaciones por otros programadores que no tengan acceso a la fuente.

El patrón del visitante del puede ser utilizado alternativo - ésta es las funciones relativamente simples y más rápidamente que virtuales donde la operación ser realizada es decidida por el envío múltiple. Esto tiene una desventaja similar en que es semejantemente difícil agregar nuevos tipos de nodo.

Otras técnicas implican el uso de RTTI (tipo Run-time información ). La operación se puede observar como clase que se pase el nodo actual, él después pregunta el tipo de nodos (RTTI) y mira para arriba la operación correcta en un arsenal de servicios repetidos o de functors. Esto requiere que la inicialización los functors/los servicios repetidos usuario/sistema de los registros con las diversas operaciones así que ellos se puedan considerar para arriba en el arsenal. Este sistema ofrece flexibilidad, velocidad y la extensibilidad masivas de nuevos nodos y operaciones.

Las variaciones en estas técnicas existen y los nuevos métodos pueden ofrecer agregaron ventajas - una alternativa es escena-gráfico que reconstruye donde el escena-gráfico se reconstruye para cada uno de las operaciones realizadas, éste sin embargo puede ser muy lenta pero produce un escena-gráfico alto optimizado. Esto demuestra que una buena puesta en práctica del escena-gráfico depende pesadamente del uso en el cual se utiliza.

Traversals

Los Traversals son la llave a la energía de aplicar operaciones a los escena-gráficos. Un traversal consiste en generalmente el comenzar en un cierto nodo arbitrario (a menudo la raíz del escena-gráfico), aplicando las operaciones a menudo la puesta al día y las operaciones de representación son la aplicada después del otra, y recurrentemente bajando el escena-gráfico (árbol) a los nodos de niño, hasta que se alcance un nodo de hoja. A este punto muchos escena-gráficos entonces atraviesan el respaldo el árbol que aplica posiblemente una operación similar. Como ejemplo - representación: Mientras que recurrentemente atraviesan abajo de la jerarquía del escena-gráfico las operaciones aplican una operación de PreRender, una vez que alcanza un nodo de hoja comienza a atravesar el respaldo el árbol que aplica una operación de PostRender - éste agradable no prohibe a cierto empuje de los nodos un estado para los nodos de niño y hace estallar el estado luego.

Algunas operaciones del escena-gráfico son realmente más eficientes cuando los nodos se atraviesan en una diversa orden - aquí es donde algunos sistemas ejecutan el escena-gráfico que reconstruye para reordenar el escena-gráfico en un más fácil analizar formato o el árbol.

Por ejemplo:

En los 2.os casos, los scenegraphs se rinden típicamente comenzando en el nodo de raíz del árbol y después recurrentemente dibujando los nodos de niño. Las hojas del árbol representan la mayoría de los objetos del primero plano. Puesto que el dibujo procede de nuevo a frente con objetos más cercanos que sobreescriben simplemente más lejos unos, el proceso se conoce como empleo del algoritmo del pintor. En los sistemas 3D, que emplean a menudo los almacenadores intermediarios de la profundidad es más eficiente dibujar los objetos más cercanos primero, puesto que objetos más lejanos necesitan a menudo solamente profundidad-ser probados en vez de rendido realmente, porque son ocluidos por objetos más cercanos.

jerarquías del Escena-gráfico y del volumen de limitación (BVHs)

Las jerarquías del volumen de limitación (BVHs) son útiles para las tareas numerosas - incluyendo la detección de colisión de desecho y de aceleración eficiente entre los objetos. Un BVH es una estructura espacial pero no tiene que repartir la geometría (véase la división espacial, abajo).

Un BVH es un árbol de los volúmenes de limitación (a menudo esferas, de las cajas de limitación eje-alineadas or/and de las cajas de limitación orientadas). En la parte inferior de la jerarquía el tamaño del volumen es apenas grande bastante abarcar un solo objeto firmemente (o posiblemente incluso alguna fracción más pequeña de un objeto en BVHs de alta resolución), pues usted camina encima de la jerarquía que cada nodo tiene su propio volumen que abarque firmemente todos los volúmenes debajo de él. En la raíz del árbol está un volumen que abarca todos los volúmenes en el árbol (la escena entera).

BVHs es útil para acelerar la detección de colisión entre los objetos. Si el volumen de limitación de un objeto no interseca un volumen más alto en el árbol entonces no puede intersecar ningún objeto debajo de ese nodo (así que los todos se rechazan muy rápidamente).

Obviamente hay algunas semejanzas entre BVHs y los escena-gráficos. Un escena-gráfico se puede adaptar fácilmente para incluir/se convierte en un BVH - si cada nodo tiene un volumen asociado o hay especialmente diseñado “limita el nodo” agregado adentro en la localización conveniente en la jerarquía. Ésta no puede ser la vista típica del escena-gráfico pero hay ventajas a incluir un BVH en un escena-gráfico.

Escena-gráficos y división espacial

Un modo eficaz de combinar el de división espacial y escena-gráficos está creando un nodo de hoja de la escena que contenga los datos de división espaciales - estos datos son generalmente parásitos atmosféricos y contienen generalmente datos llanos non-moving en una cierta forma repartida. Algunos sistemas pueden tener los sistemas separados y rendirlos por separado, éste está muy bien y no hay ventajas verdaderas a cualquier método. Particularmente es malo tener el escena-gráfico contenido dentro del sistema de división espacial, éste es porque el escena-gráfico es un mejor pensamiento como del sistema más magnífico a la división espacial.

Cuando es útil combinarlos

En cortocircuito: La división espacial/debe acelerar considerablemente la época de proceso y de representación del escena-gráfico.

Los dibujos muy grandes, o los gráficos de la escena que se generan solamente en el tiempo de pasada (como sucede en programas de la representación del trazo de rayo ), requieren la definición de los nodos del grupo en una manera automatizada. Un raytracer, por ejemplo, tomará una descripción de la escena de un modelo 3D y construirá una representación interna que rompa para arriba sus piezas individuales en las cajas de limitación (también llamadas las losas de limitación). Estas cajas se agrupan jerárquico para poder computar eficientemente pruebas de la intersección del rayo (como parte de la determinación de la visibilidad). Una caja de grupo que no interseca un rayo del ojo, por ejemplo, puede saltar enteramente tener que probar a cualesquiera de sus miembros.

Una eficacia similar se sostiene en los 2. Si el usuario ha magnificado un documento de modo que solamente la parte de ella sea visible en su pantalla de ordenador, y entonces volutas dijo el documento, es útil utilizar una caja de limitación (o en este caso, un esquema de limitación del rectángulo) para determinar rápidamente qué elementos del scenegraph son visibles y para necesitar así realmente ser dibujado.

Dependiendo de los detalles del funcionamiento del dibujo del uso, una parte grande del diseño de los scenegraph puede ser afectada rindiendo consideraciones de la eficacia. En los juegos video 3D tales como temblor, por ejemplo, espacio binario que reparte árboles de (BSP) se favorecen pesadamente para reducir al mínimo pruebas de la visibilidad. Los árboles de BSP, sin embargo, tardan un tiempo muy largo para computar de scenegraphs del diseño, y deben recomputed si los cambios del scenegraph del diseño así que los niveles tienden a seguir siendo estáticos y los carácteres dinámicos no se consideran generalmente en el esquema de división espacial.

Scenegraphs para los objetos regulares densos tales como Heightfields y los acoplamientos del polígono tienden a emplear el Quadtrees y el Octrees que son variantes especializadas de una jerarquía de la caja de limitación 3D. Puesto que un heightfield ocupa un volumen sí mismo de la caja, recurrentemente subdividir esta caja en ocho subboxes (por lo tanto el “oct” en octree) hasta que se alcancen los elementos individuales del heightfield es eficiente y natural. Un quadtree es simplemente un 2.

PHIGS

PHIGS era la primera especificación comercial del escena-gráfico, y se convirtió en un estándar del ANSI en 1988. Las puestas en práctica dispares fueron proporcionadas por los vendedores de hardware de Unix. El " Gráficos System" de los AROS 3D; aparece haber sido la primera biblioteca comercial del gráfico de la escena proporcionada por un solo proveedor de software. Fue diseñada para funcionar en 2.os y los interfaces de nivel inferior dispares 3D, con la primera versión de la producción del comandante (v3. Pronto después de eso, Silicon Graphics lanzó a inventor 1.0 (1992) del DIAFRAGMA, que era un escena-gráfico construido encima del DIAFRAGMA GL 3D API. Fue seguido con el inventor abierto en 1994, un gráfico portable de la escena construido encima de OpenGL. Más bibliotecas del scenegraph 3D se pueden encontrar en : Categoría: APIs de 3D Scenegraph.

Ver también

Teoría de gráfico
Gráfico (estructura de datos)
Árbol (estructura de datos)
Espacio que reparte

.

  • Zenithic
  • Croquis
    Random links:El sonar automático | Palimpsesto de Archimedes | Ingo Molnár | Efecto de Pulfrich | Mundo que baja

  • © 2007-2008 enciclopediaespana.com; article text available under the terms of GFDL, from en.wikipedia.org
    ="http://pagead2.googlesyndication.com/pagead/show_ads.js">