En cinco cifras
- Una rejilla de 128³ vóxeles y hasta 176 pasos por rayo en calidad alta.
- Seis líneas de emisión (Hβ, [O III] 4959 y 5007, Hα, [N II] y [S II]) y un polvo que absorbe con tres componentes de color.
- 80.000, 350.000 o 1.200.000 motas sacadas de la misma densidad que el volumen.
- 0 ms de volumen con la cámara quieta: la imagen se acumula en cuatro pasadas y se congela.
- De 32 nebulosas del catálogo, 17 tienen una reconstrucción 3D publicada, y en 9 la geometría cuadra con ella.
- El volumen
- Líneas y polvo
- Las motas
- Sin paredes
- Nada de fotos
- Modelos 3D
- Webb y de cerca
- Validación
- Coste en GPU
- Motor de polvo
- Escenarios
- Fuentes
1. El volumen: una marcha de rayos
Un cartel plano funciona de lejos y se cae en cuanto la cámara se mueve: no tiene parte de atrás, no se puede atravesar y no se hace sombra a sí mismo. Una nebulosa es justo lo contrario: un volumen donde el gas emite luz en unas líneas concretas y el polvo la absorbe. Así que cada nebulosa vive en una caja 3D y, por cada píxel de la pantalla, el shader recorre un rayo desde la cámara a través de esa caja.
En cada muestra del rayo se resuelve la ecuación de transporte de la radiación, integrada hacia delante con la transmitancia acumulada:
I es la luz que llega al píxel, j la emisión de cada muestra, k la absorción del polvo y T lo que queda de transparencia. T tiene tres componentes (rojo, verde y azul) porque el polvo apaga más el azul que el rojo, y eso es lo que enrojece la parte lejana de una nube.
Densidad horneada y densidad analítica
La densidad del gas sale de dos sitios. La mayor parte está horneada en una textura 3D: una turbulencia de Kolmogorov (con la ley de potencias de un gas turbulento de verdad) moldeada por la forma de cada nebulosa, que la tarjeta lee con una sola consulta por muestra. Evaluar ese ruido en el shader costaría unas cuarenta operaciones de hash por muestra; la textura es una lectura, con caché.
Y lo que es más fino que un vóxel se evalúa analíticamente en el propio shader: las cáscaras delgadas de las nebulosas planetarias, los frentes de choque del Velo, las trompas de la Roseta, la piel de la Cabeza de Caballo. Una rejilla de 128³ no puede guardar una lámina más fina que su celda; una fórmula sí.
| Calidad | Rejilla | Pasos por rayo | Motas |
|---|---|---|---|
| Baja | 32³ | 48 | 80.000 |
| Media | 64³ | 96 | 350.000 |
| Alta | 128³ | 176 | 1.200.000 |
La rejilla va siempre en potencias de dos porque la turbulencia se genera con una transformada de Fourier; con 96 celdas la escena ni siquiera cargaba.
Las sombras, horneadas una sola vez
Los glóbulos densos tapan la luz de la estrella y dejan pilares y colas detrás. Hacerlo bien pide un segundo rayo hacia la estrella desde cada muestra del primero: con 128 muestras y 32 pasos de sombra serían más de cuatro mil lecturas por píxel y por fotograma. En lugar de eso, la transparencia hasta la estrella se calcula una sola vez al cargar y se guarda en otro canal de la misma textura: se recorren los vóxeles en orden de distancia creciente a la estrella y cada uno lee al que tiene delante en la dirección de la luz. Es un solo barrido de la rejilla y en el shader cuesta cero.
Un bucle que no se despliega
En Windows, los navegadores traducen WebGL a Direct3D, y ese compilador despliega los bucles de límite fijo: un bucle de 176 pasos se copiaría 176 veces, tardaría decenas de segundos en compilar y una orden de más de dos segundos reinicia la tarjeta. Por eso el número de pasos llega en una variable y nunca como constante.
2. Líneas de emisión y polvo que absorbe
Una nebulosa de emisión no brilla con un color cualquiera: brilla en líneas atómicas concretas. El hidrógeno recombinado da la Hα roja (656,3 nm) y la Hβ azul verdosa (486,1 nm); el oxígeno dos veces ionizado, las líneas [O III] de 495,9 y 500,7 nm, turquesa, junto a la estrella que ioniza; el nitrógeno [N II] (654,8 y 658,4 nm) y el azufre [S II] (671,6 y 673,1 nm), rojos, en los bordes y los frentes de choque. Cada color se convierte de longitud de onda a RGB con las funciones del CIE una sola vez; el shader solo suma colores ya calculados.
La emisión de recombinación va con el cuadrado de la densidad (electrones por protones). Es lo que hace que los filamentos densos destaquen tanto sobre el gas difuso; con una ley lineal, una nebulosa parece humo. Qué línea domina en cada sitio lo decide el grado de ionización, que sale del número de fotones ionizantes de la estrella y del radio de Strömgren.
El polvo hace tres cosas: absorbe con esa curva (las tres componentes de T), dispersa la luz de la estrella hacia la cámara con la función de fase de Henyey y Greenstein (eso son las nebulosas de reflexión, y son azules por la misma razón que el cielo) y, en la paleta Webb, además brilla en el infrarrojo. Las siluetas oscuras, como la Cabeza de Caballo o las trompas de elefante, no son manchas pintadas: son polvo que se come la luz del gas que tiene detrás.
Cada nebulosa se ve con la paleta de la foto con la que se compara: visible (color natural), SHO (la de Hubble: azufre en rojo, hidrógeno en verde y oxígeno en azul), HOO (hidrógeno y oxígeno) o Webb.
Lo que no se hace, dicho aquí: la absorción del fondo que hay detrás de la nebulosa es acromática. La luz propia de la nebulosa se apaga con las tres componentes exactas, pero la mezcla con lo que hay detrás usa una sola transparencia, porque WebGL solo tiene un factor de mezcla. Hacerlo en color doblaría el coste.
3. Las motas: millones de puntos sobre la misma densidad
De lejos, la marcha de rayos es perfecta. De cerca, la interpolación de la rejilla empieza a verse. Encima del volumen va una capa de 80.000, 350.000 o 1.200.000 motas (según la calidad) que siguen exactamente la misma densidad y llevan el color de la química de cada región: [O III] cian junto a la estrella, Hα roja en las alas, [S II] y polvo pardo en los frentes. De cerca ponen el grano fino; de lejos se apagan y la imagen del volumen no cambia.
Muestreo sin millones de intentos
- La densidad se evalúa una vez en una rejilla de 65³ nodos.
- Cada población (gas emisor, polvo, reflexión…) convierte esa densidad en un peso por nodo.
- Se elige la celda con una tabla de alias (una consulta, sin importar cuántas celdas haya) y el punto se saca de la densidad trilineal de la celda por inversión, sin rechazo. Solo un ruido de grumos por debajo del vóxel rompe la celda para que el grano no repita los bloques de la rejilla.
Las motas se mezclan en modo normal, no aditivo: con un millón de puntos, la mezcla aditiva satura los núcleos densos; la normal converge al color de las motas y deja que las de polvo oscurezcan, como en las fotos. Se dibujan antes que el volumen, así que el gas de delante las atenúa.
El LOD que no cambia el brillo
Las motas empiezan a fundirse cuando la nebulosa ocupa 150 píxeles en pantalla y están enteras a 500. De lejos, y cuando la tarjeta va al límite, se dibuja solo una fracción f de ellas, y cada una se hace más opaca en 1/√f, la misma ley que se usa entre calidades, para que el conjunto no cambie de brillo: con la mitad de las motas, un 45 % menos de coste y una diferencia media de 0,4 a 1,1 niveles de color.
Si el ritmo cae por debajo del 70 % del objetivo de fotogramas, el simulador recorta por este orden, del que más gana y menos se nota al que más se nota: el volumen a media resolución (−73 %), las motas a la mitad (−45 %), los pasos por rayo a ×0,8 y a ×0,6 (hasta −40 %) y las motas a un cuarto (−70 %). Solo después toca la resolución de toda la escena. En el flujo del agujero blanco, que es todo motas, el objetivo es fijo: añade motas hasta que el cuadro llega a 30 fotogramas por segundo (33,3 ms) y recorta si baja de ahí.
4. Sin paredes: la envolvente redonda de la caja
El volumen de cada nebulosa vive en una caja, y el gas que llegaba a sus caras se cortaba en seco. De frente no se notaba; al girar la cámara, la nebulosa era un acuario de bordes rectos. La solución es multiplicar todo el gas —y las motas, con la misma cuenta— por una envolvente que vale cero en todas las caras antes de llegar a ellas:
Un superelipsoide: redondo, sin caras planas, y con una esfera interior donde vale 1 sin hacer ninguna cuenta. Se funde entre 0,72 y 0,92 del lado de la caja.
La lección vale para cualquier volumen: todo lo que se calcule solo con x e y es un cilindro a lo largo de la visual, y de lado es una pared. Por eso cada nebulosa se mira desde cinco vistas (ver la validación).
5. Por qué está prohibido proyectar fotos
El atajo es tentador: coger la foto de Hubble o de Webb y proyectarla desde la cámara sobre unas capas a distintas profundidades. De frente clava la foto. Se probó con cuatro nebulosas (Carina, Tarántula, Laguna y Trífida) y la comparación automática daba diferencias de 2 a 5 sobre 100, casi idénticas. Pero la puntuación medía justo la vista de arranque, la única que ese método acierta por construcción, porque comparaba la foto consigo misma. Al girar la cámara, cada nebulosa era un fondo plano con recortables pegados encima.
Desde entonces la regla es fija:
- Una nebulosa es un volumen 3D: densidad y emisión en 3D, láminas con grosor y polvo que absorbe dentro. La foto nunca es una textura ni una tabla de color proyectada: solo sirve para comparar.
- Toda nebulosa se juzga desde varias vistas, no solo la de arranque.
- Una diferencia sospechosamente baja (menos de 6) es señal de copia, no de acierto.
- Los bordes de pilares y glóbulos son blandos, con una piel ionizada que brilla y se deshace; nunca un sólido de contorno duro.
- Una nebulosa real no es simétrica de espejo: alas de distinto tamaño, chorros en S, colores separados por línea de emisión.
6. La forma en 3D: los modelos publicados
Una foto es una proyección: no dice qué está delante y qué detrás. Para decidir la forma en profundidad se buscan las reconstrucciones 3D publicadas (espectroscopía de velocidades, modelos morfocinemáticos, simulaciones hidrodinámicas y las visualizaciones 3D de NASA y ESA) y el volumen se construye para cuadrar con ellas.
El caso de la Hélice: O'Dell, McCullough y Meixner (2004)
Con la velocidad del gas medida en cada punto, O'Dell y sus colaboradores mostraron que la Hélice (NGC 7293) no es un anillo ni una esfera: es un disco interior de 0,52 pársecs inclinado 23° y un toro exterior de 0,77 pársecs inclinado 53°, casi perpendiculares entre sí, con nudos en el frente de ionización del disco. El volumen del simulador se rehízo con esa geometría: el disco en [O III] a 23° y el toro en Hα y [N II] a 53°, inclinados en sentidos opuestos (76° entre los dos planos), con la proporción de radios del artículo y la línea de nodos en el ángulo de la foto de Hubble.
| Nebulosa | Modelo 3D publicado | Veredicto |
|---|---|---|
| Hélice (NGC 7293) | Disco y toro casi perpendiculares (O'Dell et al. 2004) | Cuadra |
| Anillo (M57) | Barril triaxial visto casi por su eje, unos 20° (O'Dell et al. 2013; Webb, Wesson et al. 2024) | Cuadra; faltan los arcos exteriores de MIRI |
| Orión (M42) | Blíster cóncavo sobre la nube molecular, la Barra de canto y el Velo delante (Wen y O'Dell 1995) | Cuadra |
| Cabeza de Caballo (B33) | Pilar que sale del borde de la nube, iluminado por σ Orionis (visualización 3D de ESA/Hubble, 2013) | Cuadra |
| Acantilados de Carina | Pared de una cavidad con pilares y gas que se evapora hacia ella (visualización 3D de NASA, 2025) | Cuadra |
| Velo del Cisne | Lámina de choque arrugada vista de canto (Hester 1987) | Cuadra |
| Burbuja (NGC 7635) | Cáscara de viento con la estrella fuera del centro (ESA/Hubble 2016) | Cuadra |
| Roseta (NGC 2237) | Nube en lámina fina atravesada por la cavidad de viento (Wareing et al. 2018) | Cuadra |
| Mariposa (NGC 6302) | Bipolar de cintura estrecha con toro de polvo (Wright et al. 2011) | Cuadra; inclinación sin contrastar |
| Cangrejo (M1) | Filamentos en una cáscara gruesa, con 310.000 espectros (Martin et al. 2021) | Parcial: nuestros filamentos llenan el volumen |
| Pilares de la Creación (M16) | Orientación de cada pilar respecto al cúmulo (McLeod et al. 2015) | Parcial: inclinaciones sin contrastar |
En 15 nebulosas del catálogo no se ha encontrado ninguna reconstrucción 3D publicada (Laguna, Trífida, Corazón, California, Pacman, Delfín y otras). En ellas el volumen se construye con la física —frentes de ionización, burbujas de viento, polvo delante o detrás— y se comprueba con las cinco vistas, sin una referencia 3D con la que medirlo.
7. La paleta Webb y el detalle de cerca
Webb no es luz visible
Las imágenes de Webb con NIRCam y MIRI son infrarrojas: sus colores son una asignación de bandas, no lo que vería un ojo. La paleta Webb del simulador reproduce esa asignación, y añade dos cosas que en luz visible no existen: la emisión térmica del polvo (los granos iluminados, anaranjados; los fríos, púrpura oscuro) y el hidrógeno molecular de los nudos densos. La lleva la nebulosa del León (NGC 2392), comparada con la imagen de Webb de 2026.
Lo que aparece al acercarse
Cuando un vóxel pasa de ocupar 7 píxeles en el centro de la caja, empieza a encenderse, con fundido hasta 14 píxeles, el detalle de cerca: octavas finas de láminas en el shader, más pasos repartidos hacia la cámara, una población local de motas alrededor de lo que se mira y el volumen siempre a resolución completa. Tres trampas que costaron vueltas:
- El ruido con signo se promedia a gris. Sumado a lo largo de un rayo espeso, un ruido que va de −1 a +1 no se ve. Lo que se ve son láminas: crestas finas, (1 − |2n − 1|)8, en cascada multiplicativa.
- El ruido de valor dibuja rectas. Los rayos paralelos a un plano de su retícula acumulan su varianza y aparece una cruz en el centro de la pantalla. Se corrige igualando la varianza en cada posición y girando la retícula.
- El umbral mide el zoom, no la rejilla. Se calcula siempre con el vóxel de 128³, para que la calidad elegida no encienda el detalle antes de tiempo.
Todo ese código va en una variante aparte del shader que solo se compila de cerca: dentro del bucle, aunque no se ejecute, costaba un 20 % de lejos.
8. La validación: cinco vistas, lado a lado y un crítico ocular
Láminas de cinco vistas
Cada nebulosa se pinta sin navegador, con el mismo shader, desde cinco sitios: de frente, a 45°, de lado, desde arriba y desde detrás. Es lo que caza las paredes, los cilindros, las losas de estrellas y los recortables que de frente no se ven.
Lado a lado con la foto
Después, render y foto se ponen lado a lado y a la misma escala: la foto se orienta con el norte arriba y el este a la izquierda, las dos se recortan con las mismas funciones y se comparan el reparto de tonos (doce sectores de color, pesados por brillo y saturación), el perfil radial del rojo y del azul del centro al borde, la mediana, la saturación y el grano. Sale una puntuación de 0 (igual) a 100.
El crítico ocular
El número compara un antes con un después; no dice si algo está bien. Hubo una ronda con más de 360 escenarios «limpios» según las medidas y la pantalla llena de fallos. Por eso cada lámina la mira además un crítico ocular, que contesta a lo que ve y no a la cifra: si de lado hay una pared, si hay rectas del retículo, si la nebulosa es simétrica de espejo, si los colores están separados por línea como en la foto. Si el crítico ve una pared, no se sube, dé la cifra que dé.
9. Cuánto cuesta en la tarjeta gráfica
Todo se mide en la tarjeta integrada de un portátil, la peor de las habituales. La conclusión más importante: el coste es el sombreado de cada muestra, no el espacio vacío. Con el volumen vacío, el caso peor cuesta 6 ms de 306; saltarse el vacío con un mapa de ocupación, como hacen muchos juegos, no ganaría nada aquí.
| Cambio | Efecto medido |
|---|---|
| Una variante del shader por nebulosa (forma y paleta fijas: el compilador tira las demás ramas) | −10 a −25 %, imagen idéntica |
| Volumen a media resolución | −73 % |
| Pasos por rayo ×0,6 | −40 % |
| Motas a la mitad (con el alfa compensado) | −45 % |
| Detalle de cerca encendido | +16 % (Orión, Hélice) a +34 % (Pilares) |
| Cámara quieta: cuatro pasadas acumuladas y congeladas | 0 ms de volumen |
La acumulación se hace con los pasos completos. Acumular varias pasadas con menos pasos parece lo mismo y no lo es: la exponencial de una suma gruesa no es la media de las finas, y con un tercio de los pasos la Cabeza de Caballo salía con un ribete claro. Y el refinado va por franjas de pantalla con un presupuesto de unos 20 ms por fotograma: sin franjas, pararse daba un tirón de medio segundo.
10. El motor de polvo de los agujeros blancos
El polvo y el gas que salen del agujero blanco no pasan por el motor de nebulosas: los pinta Nebula Dust Engine, un motor de polvo para three.js escrito para Orbit Universe y publicado como código abierto con licencia MIT, con su editor de demostración.
- Motas sin búferes. La posición, la edad, la corriente, el color y el tamaño de cada mota salen de un hash de su número de vértice: no ocupan memoria, el procesador no toca nada en cada fotograma y se pueden reservar hasta 16,7 millones.
- Se reserva mucho y se dibuja lo que cabe. El techo depende de la tarjeta, y el LOD por tiempo de cuadro recorta desde ahí para mantener 30 fotogramas por segundo, con la misma luz total: más motas hacen el flujo más fino, no más brillante.
- La luz de una mota va con el flujo, no con su tamaño. Con la luz proporcional a los píxeles, las motas grandes del gas frío mandaban y salía una bola rosa saturada.
- Una nube volumétrica integra el viento a lo largo de cada rayo con seis muestras repartidas por igual en el ángulo visto desde el centro, que para una densidad en 1/r² es exacto en la parte radial. De cerca pone la nube continua; de lejos mandan las motas.
- Doppler relativista. El color es una temperatura vista con el factor D = 1 / (γ (1 − β cos θ)), y el brillo va con D³: lo que se acerca, azul y brillante; lo que se aleja, rojo y apagado.
11. Para verlo en el simulador
Cada enlace abre el escenario. Gira la cámara con el ratón o con el dedo: es la mejor prueba de que es un volumen.
- Hélice (NGC 7293): el disco y el toro de O'Dell.
- Orión (M42): el blíster, la Barra y el Velo; acércate al Trapecio para ver el detalle de cerca.
- Cabeza de Caballo: polvo que se come la luz.
- Pilares de la Creación, en paleta SHO.
- Acantilados de Carina.
- León (NGC 2392), en paleta Webb.
- Roseta, Velo del Cisne, Mariposa, Anillo, Cangrejo y Trompa de Elefante.
- El agujero blanco, con el motor de polvo.
12. Fuentes
- C. R. O'Dell, P. R. McCullough y M. Meixner (2004), «Unraveling the Helix Nebula: Its Structure and Knots», Astronomical Journal 128, 2339. ADS.
- C. R. O'Dell y colaboradores (2013), Astronomical Journal 145, 92 (el Anillo, M57).
- R. Wesson y colaboradores (2024), el Anillo con Webb, Monthly Notices of the Royal Astronomical Society 528, 3392.
- Z. Wen y C. R. O'Dell (1995), Astrophysical Journal 438, 784 (modelo 3D de Orión).
- J. J. Hester (1987), Astrophysical Journal 314, 187 (los filamentos del Velo como láminas de choque de canto).
- C. J. Wareing y colaboradores (2018), Monthly Notices of the Royal Astronomical Society 475, 3598 (la Roseta).
- N. J. Wright y colaboradores (2011), la Mariposa (NGC 6302) en 3D, Monthly Notices of the Royal Astronomical Society 418, 370. arXiv:1107.4554.
- T. Martin, D. Milisavljevic y L. Drissen (2021), el Cangrejo en 3D, Monthly Notices of the Royal Astronomical Society 502, 1864. arXiv:2101.02709.
- A. F. McLeod y colaboradores (2015), los Pilares de la Creación con MUSE, Monthly Notices of the Royal Astronomical Society 450, 1057.
- J. A. Cardelli, G. C. Clayton y J. S. Mathis (1989), «The relationship between infrared, optical, and ultraviolet extinction», Astrophysical Journal 345, 245.
- L. G. Henyey y J. L. Greenstein (1941), «Diffuse radiation in the Galaxy», Astrophysical Journal 93, 70.
- B. Strömgren (1939), «The physical state of interstellar hydrogen», Astrophysical Journal 89, 526.
- D. E. Osterbrock y G. J. Ferland (2006), Astrophysics of Gaseous Nebulae and Active Galactic Nuclei, University Science Books.
- A. N. Kolmogorov (1941), «The local structure of turbulence in incompressible viscous fluid for very large Reynolds numbers», Doklady Akademii Nauk SSSR 30, 301.
- Fotos de referencia: ESA/Hubble heic0307a y heic9910a; ESA/Webb weic2205a y weic2616a. Todas con licencia CC BY 4.0.
- Nebula Dust Engine (MIT), el motor de polvo del simulador.