Polls

Escribirías en el wiki de codepixel?
 

Login Form






Lost Password?
No account yet? Register

Wiki Codepixel

Visita el Wiki de programación gráfica de codepixel . Podrás incluir los enlaces que creas interesantes para desarrollar videojuegos, motores de render, demos, etc.

Quién está online?

We have 119 guests online

Syndicate

Inicio
Efficient Sparse Voxel Octrees PDF Print E-mail
Written by Javier Loureiro   
Tuesday, 09 February 2010

El tema de los vóxeles está de moda. En cada congreso gráfico, suele haber algún nuevo avanze, estudio, comparativa, etc, sobre esta técnica. En el I3D, NVIDIA ha presentado sus avances, bastante espectaculares, mostrando las ventajas en su último paper sobre el tema.

Los vóxeles modernos se basan en un octree, y sobre todo, un algoritmo de recorrido que tiene similitudes con el del kdtree (ordena los posibles casos, en función de la distancia del rayo). En este paper, nos definen un completo pipeline para renderizarlos. Nos explica cómo define los nodos dentro del octree, que contienen un par de planos que delimitan a la geometría que representan. A esto le denomina "contornos". Con esta información, se puede acotar el espacio vacío de los vóxeles, y la representación es más limpia. Además, los contornos se pueden acumular, ya que el contorno de los nodos padre, es la suma de los contornos de los hijos.

El paper nos muestra el pseudocódigo para lanzar los rayos de forma eficiente, esquivando el espacio vacío de los contornos. También explican cómo han implementado la pila para la recursión, un tema clave en la GPU, por sus problemas con la memoria local.

Usando la tarjeta, se puede optimizar bastante realizando un render previo, y usando su profundidad como punto de partida de la recursión. Esto permite eliminar muchos cálculos en el recorrido del voxel, esquivando de golpe mucho espacio vacío.

En este vídeo podéis ver el resultado final.

 

Comentarios
AgregarnuevoBuscar
David Miraut Andrés     | 193.147.61.xxx | 2010-02-09 17:24:22
Caray! Qué velocidad!
Ayer cuando lo revisé por última vez, Laine todavía no había puesto el enlace en su página web (sólo el Abstract y la cita para Bibtex)
David Miraut Andrés     | 193.147.61.xxx | 2010-02-09 17:28:24
Qué curioso, todavía no lo ha actualizado en la página web, pero lo tiene subido al servidor http://www.tml.tkk.fi/~samuli/publications/
No se me había ocurrido buscarlo así.
Gracias, Javier.
Chema   | 88.18.232.xxx | 2010-02-15 20:13:10
La limitación que le veo yo es que parece que es sólo para geometría estática.
Alan   | 80.38.93.xxx | 2010-02-16 19:26:12
Chema escribió:
La limitación que le veo yo es que parece que es sólo para geometría estática.


Supongo que eso dependerá de la definición de estática que uses. No creo que sea demasiado dificil extender ésta tecnica y añadir una matriz de transformación a los datos voxelizados. Esto permitiría crear objetos animados pero no deformados como vehiculos o la tipica arma futurista que siempre ocupa 1/5 de pantalla en una FPS, todo con un nivel de detalle altísimo.

Además para según que tipo de operaciónes el voxelizado ya es la mejor manera de representar los datos. Por ejemplo para simulaciónes de fluidos el voxel es el rey. O para operaciones tipo CSG (usado en juegos como Worms donde destruyes el escenario).

P.D. Creo que lo mas interesante de todo esto es que se están presentando un nuevo juego de pinceles con las que se pueden presentar graficos en tiempo real. Con las tarjetas graficas hasta hace relativamente poco solo se podía calcular a una velocidad decente cosas que encajaran bien en su pipeline de funciones prefijadas, y las CPU no alcanzaban el parelelismo de datos necesarío para ser competitivo con las GPU usando otras tecnicas. Ahora sin embargo las GPU son mas programables y las CPU son mas paralelas, y ambos están siguiendo adelante con esa tendencia.

En mi opinion el futuro de los graficos en tiempo real seguirá los pasos de los graficos no realtime y girará en torno a un uso con criterio de todas las distintas tecnicas disponibles. Un claro ejemplo es el proximo motor de videojuego de iD software que va a utilizar una tecnica muy parecida a la de este paper para los elementos estáticos de los escenarios. El resto de elementos como los personajes los seguirán representando con mallas de triangulos. Esto tan solo una generación de motor de juego despues de que la misma iD empezara a usar la tecnica de multi-pass que es tan importante para el mundo de los graficos para cine y televisión.

Son momentos muy interesantes para los graficos en realtime y para la computación en paralelo en general :)
Chema   | 138.100.243.xxx | 2010-02-17 14:50:52
Mmm, estaba remarcando una limitación indicada en el propio artículo:
"Our contour-based representation, on the other hand, aims for efficient rendering and compact storage given the
assumption of static geometry."
El problema clásico de los voxeles es la rotación, ¿no?: hay que rehacer el octree y evitar el aliasing.
Supongo que los contornos ayudan en lo segundo, pero los triángulos parecen más fáciles, sólo hay que recalcular los vértices y las normales.
Por otra parte a mí los voxeles me llaman mucho la atención y animo a pensar en cómo resolver sus limitaciones, aunque sinceramente no me parece fácil. Lo del "uso con criterio de las técnicas disponibles" siempre me ha parecido una idea genial. Un saludo :).
David Miraut   | 84.77.129.xxx | 2010-02-18 00:24:58
Estoy completamente de acuerdo con Alan :-)
Por cierto, acaban de publicar una versión extendida del artículo http://www.tml.tkk.fi/~samuli/publications/laine2010tr1_paper.pdf y el código para cacharrear http://code.google.com/p/efficient-sparse-voxel-octrees/downloads/list.
Chema   | 138.100.243.xxx | 2010-02-18 13:28:00
Yo también estoy completamente de acuerdo con Alan :). Y os dejo un trocito del nuevo artículo
"No deformation. Deformation is probably the most important benefit of separating the base mesh from fine detail. Deforming the base mesh is usually easy, and ideally the detail layer follows it naturally. If this is not possible, other deformation methods need to be used, none of which is quite as intuitive and powerful as vertex-based deformation. Therefore, it seems that currently voxels would be feasible only for static parts of the scene. Possible methods for deforming voxel-based geometry are discussed briefly in Section 3.4, but in this paper we will restrict our scope to non-deforming geometry only."
Escribir comentario
Nombre:
Email:
 
Website:
Título:
Código UBB:
[b] [i] [u] [url] [quote] [code] [img] 
 
Security Image
Por favor introduce el codigo anti-spam que puedes leer en la imagen.

Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved.



menéameDigg!Del.icio.us!Google!Technorati!Yahoo!
Last Updated ( Tuesday, 09 February 2010 )
 
Next >

Lista de Correo

visita la lista de correo de codepixel. Es una lista abierta, asi que podrás subscribirte y preguntar tus dudas de programación, compartir tus opiniones, aportar ideas, y formar parte de la comunidad codepixelera.

 

Visita la antigua página

Image