¿Representando billones de "átomos" en lugar de polígonos?

9

Acabo de ver un video sobre lo que los editores llaman el "próximo paso importante después de la invención del 3D". Según la persona que habla en él, usan una gran cantidad de átomos agrupados en nubes en lugar de polígonos, para alcanzar un nivel de detalle ilimitado .

Hicieron todo lo posible para que el video fuera comprensible para personas sin conocimiento de ninguna técnica de renderizado, y por lo tanto, o para otros fines, omitieron todos los detalles de cómo funciona su motor.

El nivel de detalle en su video me parece bastante impresionante.

  • ¿Cómo es posible renderizar escenas usando átomos personalizados en lugar de polígonos en el hardware actual? (Velocidad, en cuanto a memoria)
  • Si esto es real, ¿por qué nadie más lo ha pensado hasta ahora?

Como desarrollador de OpenGL, estoy realmente desconcertado por esto y me gustaría escuchar lo que dicen los expertos. Por lo tanto, tampoco quiero que esto parezca un anuncio barato e incluiré el enlace al video solo si se solicita, en la sección de comentarios.

Jan Doggen
fuente
77
Bueno, han inventado lo más revolucionario desde el comienzo de los gráficos por computadora, pero no saben cuántos milímetros caben en una pulgada, qué les dice eso.
2
Están tan limitados en detalles (perdón por el juego de palabras) sobre su tecnología que una discusión es difícil. Por lo que entiendo del video, son 20 fps en software. Veo mucha geometría estática, un montón de instancias y no sé cuántos de los datos se calculan o generan sobre la marcha. Aún así interesante. No me gustaría llamar a travesuras por completo. No con los fondos adquiridos, aunque eso no significa mucho.
Bart
8
Siempre es sospechoso si alguien hace afirmaciones fantásticas y solo muestra imágenes de algo completamente ajeno (como Crysis). Más aún si hay afirmaciones como "tecnología como se usa en medicina / viajes espaciales", y mezclar varias cosas que no tienen nada que ver entre sí. Ciertamente, es posible producir (casi) detalles infinitos de manera procesal y ciertamente es posible representarlo. Y qué, cada demostración de mandelbrot de 1984 podría hacer eso. Sin embargo, la afirmación es que representan objetos como ese elefante con infinitos detalles. Y eso es solo una mierda, porque no pueden.
8
"Sus gráficos están a punto de mejorar en un factor de 100,000 veces". Reclamaciones extraordinarias requieren evidencia extraordinaria.
Brad Larson
11
Notch escribió dos publicaciones de blog sobre este video.
Kevin Yap

Respuestas:

11

Es fácil hacer eso. Usando un Octtree, simplemente divide el mundo en piezas progresivamente más pequeñas hasta alcanzar el nivel de detalle necesario. Esto podría ser del tamaño de un grano de arena, por ejemplo. Piensa en Minecraft llevado al extremo.

¿Qué representas entonces? Si el detalle es lo suficientemente pequeño, puede considerar renderizar bloques: los nodos hoja del octtree. Otras opciones incluyen esferas o incluso primitivas geométricas. Se puede almacenar un color y normal en cada nodo, y para una LOD reducida se puede almacenar información compuesta en los niveles más altos del árbol.

¿Cómo puedes gestionar tantos datos? Si el árbol es una estructura de datos real, puede hacer que varios punteros hagan referencia a los mismos subárboles, al igual que reutilizar una textura pero también incluye geometría. El truco es conseguir la mayor reutilización posible en todos los niveles. Por ejemplo, si conecta 4 octantes en disposición tetraédrica, todos al mismo nodo hijo en todos los niveles, puede hacer un fractal sierpinsky 3d muy grande casi sin memoria. La escena real será mucho más grande, por supuesto.

El problema es que solo funcionará para la geometría estática porque la animación real requeriría la manipulación de todos esos datos en cada cuadro. Sin embargo, renderizar, especialmente con LOD variable, no es un problema.

¿Cómo hacer tal cosa? Soy un gran fanático del trazado de rayos, y maneja ese tipo de cosas bastante bien con y sin una GPU.

Todo esto es especulación, por supuesto. No tengo información específica sobre el caso del que estás hablando. Y ahora para algo relacionado pero diferente:

Una gran cantidad de datos prestados

EDITAR Y aquí hay uno que hice, pero alteré deliberadamente las normales para hacer que las cajas sean más aparentes:

Stanford Bunny en voxels

Esa velocidad de fotogramas estaba en un solo núcleo IIRC. Duplicar la profundidad del árbol generalmente reducirá la velocidad de fotogramas a la mitad, mientras que usar múltiples núcleos se escalará muy bien. Normalmente mantengo primitivas (triángulos y demás) en mi octtree, pero en el caso de las sonrisas había decidido representar los nodos de las hojas del árbol en este caso. Se puede obtener un mejor rendimiento si optimiza en torno a un método específico, por supuesto.

En algún lugar de ompf hay un automóvil hecho con voxels que es realmente fantástico, excepto que es estático. Parece que no puedo encontrarlo ahora ...

phkahler
fuente
Estoy de acuerdo con esta evaluación: acabo de ver el video yo mismo y me sorprendió lo estáticas que son sus escenas (divertido cuando se comparan con la hierba poligonal; al menos está soplando en el viento mientras que la suya no lo es).
timday
1
Lamentablemente, los enlaces están muertos.
Joachim Sauer
1
@JoachimSauer De hecho, el foro OMPF ha caído hace algún tiempo. Aquí hay un reemplazo directo , pero no sé si se ha migrado parte del contenido.
Bart
No lo parece Buscar "conejito" en ese foro no arroja resultados para mí.
Joachim Sauer
el primer enlace abre ventanas emergentes y recuadros de alertas -1
NimChimpsky
6
  • ¿Cómo es posible renderizar escenas usando átomos personalizados en lugar de polígonos en el hardware actual? (Velocidad, en cuanto a memoria)

Al ver el video, nada me indica que se haya utilizado ningún hardware especial. De hecho, se afirma que esto se ejecuta en software a 20 fps, a menos que me haya perdido algo.

Quizás se sorprenderá al saber que ha habido una gran cantidad de desarrollos en el renderizado en tiempo real utilizando una variedad de tecnologías como el trazado de rayos, el renderizado de vóxel y el splat de superficie. Sin embargo, es difícil decir qué se ha utilizado en este caso. (Si está interesado, eche un vistazo a http://igad2.nhtv.nl/ompf2/ para ver un gran foro de trazado de rayos en tiempo real, o http://www.atomontage.com/ para un motor de vóxel interesante. Google "salpicaduras de superficie" para algunos enlaces geniales sobre ese tema)

Si miras la película, notarás que toda la geometría es estática y, aunque detallada, hay una gran cantidad de repeticiones de objetos, lo que puede sugerir una instancia.

Y lo más probable es que haya muchos sacrificios agresivos, niveles de detalle y particiones espaciales.

Si nos fijamos en la calidad visual (no en la complejidad geométrica) no se ve tan impresionante. De hecho, se ve bastante plano. El sombreado que se muestra puede integrarse en los datos y no evaluarse en tiempo real.

Me encantaría ver una demostración con geometría animada e iluminación dinámica.

  • Si esto es real, ¿por qué nadie más lo ha pensado hasta ahora?

A menos que esté completamente equivocado (y no sería la primera vez que lo estoy), mi primera respuesta sugeriría un uso (quizás muy inteligente) de la tecnología existente, quizás optimizado y extendido para crear esta demostración. Sin embargo, convertirlo en un motor de juego real, con todas las otras tareas además de representar la geometría estática que eso incluye, es un juego de pelota completamente diferente.

Por supuesto, todo esto es pura especulación (lo que me hace muy divertido). Todo lo que digo es que esto no es necesariamente falso (de hecho, no creo que lo sea y todavía estoy impresionado), pero probablemente tampoco sea tan innovador como lo hacen sonar.

Bart
fuente
5

Estos átomos en realidad no son tan mágicos / especiales / ajenos al hardware gráfico actual. Es solo una especie de nube de puntos o representación basada en voxel. Entonces, en lugar de triángulos, representan puntos o cuadros, nada inalcanzable con el hardware actual.

Ha sido y ya está hecho y no es la súper invención, pero tal vez se les ocurrió una forma más eficiente de memoria y tiempo para hacerlo. Aunque se ve y suena bastante interesante, debe tomar este video con un poco de sal. Renderizar 100,000 puntos en lugar de un polígono completamente texturizado (que ya ocupa solo unos pocos píxeles en la pantalla) no mejora la calidad de sus gráficos en un factor de 100,000.

Y, por cierto, he oído que el software de identificación también está probando el procesamiento de vóxeles acelerado por GPU, pero tengo un poco más de confianza en John Carmack que en el orador de este video :)

Christian Rau
fuente
2

Esa fue una estafa de inversión.

En cuanto a la idea, no es factible en el hardware actual no dedicado. La cantidad de puntos que necesitaría para evitar huecos al mirar algo de cerca está mucho más allá de la cantidad de puntos que podría disparar en la RAM de hoy. Incluso si no conozco ninguna estructura de datos o algoritmos de búsqueda que produzcan algo cercano al rendimiento que se muestra en la demostración. E incluso si , de alguna manera fuera posible buscar estos puntos en tiempo real, las fallas de caché y el ancho de banda de memoria garantizarían que no pueda.

No dudo del hecho de que tales imágenes no se pueden lograr en tiempo real, solo que no con el método presentado. Supongo que las demostraciones se renderizaron con voxels, que se han utilizado durante décadas y que ya pueden producir detalles bastante altos en tiempo real: http://www.youtube.com/watch?v=BKEfxM6girI http://www.youtube .com / watch? v = VpEpAFGplnI

Hannesh
fuente
2
"Eso fue una estafa de inversión" ... ¿en qué basas eso? ¿Especialmente dados los fondos adquiridos recientemente y los videos que se están subiendo hoy?
Bart
1
Que videos No se han actualizado en más de un año.
Hannesh
1
youtube.com/user/EuclideonOfficial según lo publicado por el OP en los comentarios.
Bart
1

Por lo que vi, parece que están usando formas paramétricas en lugar de formas poligonales simples; en otras palabras, cambian la geometría de acuerdo con la resolución requerida.

Esto se puede hacer usando técnicas como sombreadores de geometría y ruido de perlin.

Otra posibilidad es utilizar GPGPU (p. Ej., CUDA) para representar escenas que no son polígonos y realizar el trazado de rayos (para el orden z y las sombras). Otra posibilidad es un hardware personalizado que muestre fórmulas en lugar de triángulos.

Danny Varod
fuente
0

Pienso en todas sus afirmaciones, la compresión de la memoria parece una exageración, podría entender que algo como la compresión RLE tiene un gran impacto. Al final, creo que este sistema tendrá muchos "pros", pero muchos "contras", como el trazado de rayos o el renderizado de iso-superficie con cubos de marcha.

En cuanto a representar 'billones' de átomos; No creo que digan eso. En cambio, lo que están haciendo es buscar átomos W * H, es decir, un átomo por píxel en la pantalla. Esto podría lograrse de muchas maneras lentas y difíciles. Algunas formas de acelerar esto son los árboles KD y los árboles BSP, los octrees, etc. Sin embargo, al final, se clasifican muchos datos y el hecho de que su demostración aparentemente clasifica 1440x720 átomos, más de una vez por cuadro, Debido a las sombras / reflejos en su demo, es sorprendente. Así que cudos!

ninjacocoa
fuente
-1

la forma en que funciona es mucho más simple de lo que podrías pensar, en lugar de precargar un nivel de juego, solo carga una sola pantalla, uno o unos pocos átomos por píxel en tu pantalla, nada más, el juego / motor predice qué los siguientes cuadros son y eso es lo único que se carga, solo se representa la parte del objeto visible, no todo el objeto en sí. PROS: tanta definición y resolución puede manejar su monitor, bajo uso de memoria CONTRAS: la velocidad de lectura del disco es bastante grande y podría conducir a una baja velocidad de fotogramas.

marty
fuente
Esto no parece ofrecer nada sustancial sobre los puntos hechos y explicados en las 7 respuestas anteriores
mosquito