Ir al contenido

Atmosphere

Atmosphere es el más extraño de los tipos de espacio de pantalla debido a una restricción del motor de Roblox que ninguno de los otros comparte: solo un Atmosphere puede renderizarse en Lighting a la vez. Si tienes dos instancias de Atmosphere ambas emparentadas a Lighting, solo una de ellas contribuye visiblemente al fotograma renderizado. Roblox elige una e ignora la otra.

Esto está bien para el caso típico (la mayoría de los juegos tienen un Atmosphere ambiental único integrado en su escena), pero crea un problema en el momento en que intentas emitir múltiples duplicados de Atmosphere. Los Atmosphere emitidos en pila compiten por el único espacio de renderizado, produciendo parpadeos y comportamiento impredecible mientras Roblox alterna entre ellos fotograma a fotograma.

La solución del plugin: cuando haces Transform a un Atmosphere, el plugin establece su atributo EmissionMode en "Animate" automáticamente (en lugar del valor predeterminado habitual "Emit"). El patrón de clon singleton en modo Animate significa que solo hay un duplicado de Atmosphere vivo a la vez — exactamente lo que Roblox puede renderizar.

Una instancia de Atmosphere de Roblox, emparentada a Lighting.

El Atmosphere no se mueve. Se aplica a toda la escena como un efecto volumétrico global — controlando cómo se ve el aire en sí. Density hace el aire más espeso (más neblina, más atenuación con la distancia); Color tiñe esa neblina; Glare controla cómo el sol se ilumina cuando se mira directamente; Decay define cómo la geometría distante se desvanece en la neblina.

Los otros tipos de espacio de pantalla (Blur, Bloom, ColorCorrection) comienzan con EmissionMode = "Emit" después de Transform. Atmosphere comienza con EmissionMode = "Animate" en su lugar. Eso es un caso especial que Transform maneja únicamente para Atmosphere — todos los demás tipos usan Emit de forma predeterminada, incluidos los otros tipos de espacio de pantalla donde apilarlos produce parpadeo inofensivo en lugar de competencia por el espacio de renderizado.

El panel de propiedades aún muestra el menú desplegable; puedes cambiarlo después de Transform — pero hacerlo reintroduce el problema de apilamiento contra el que protege el valor predeterminado.

Si cambias el EmissionMode de Atmosphere a "Emit" y luego llamas a Particle:Emit() repetidamente, el plugin creará múltiples duplicados de Atmosphere. Roblox renderizará solo uno de ellos a la vez, y la elección de cuál parpadeará mientras los duplicados aparecen y desaparecen. El plugin no vuelve a aplicar el modo Animate en el momento de la emisión — la protección es solo en el momento del Transform. Si quieres una salida visual predecible, deja el menú desplegable de EmissionMode en Animate para Atmosphere.

La superficie completa, agrupada por sección del panel.

Etiqueta del panelAtributo de datosTipoPredeterminadoQué hace
ModeEmissionModeenumAnimateSe establece en Animate al hacer Transform; déjalo como está para Atmosphere
LoopAnimateLoopbooleanfalseSi el ciclo Animate se repite (establécelo en true para animación continua de Atmosphere)
EnabledEnabled (atributo)booleanfalseActivar/desactivar principal (a nivel de plugin — el Atmosphere de Roblox no tiene Enabled nativo)
RateRatenumber10No se usa para Atmosphere en la práctica (solo un duplicado a la vez)
LifetimeLifetimeNumberRange1Segundos por ciclo del bucle Animate
Etiqueta del panelAtributo de datosTipoPredeterminadoQué hace
DensityAtmDensityNumberSequence0.3Qué tan espesa es la atmósfera — visibilidad a través del aire
OffsetAtmOffsetNumberSequence0.25Desplazamiento vertical de la capa de neblina
GlareAtmGlareNumberSequence0Intensidad del resplandor solar
HazeAtmHazeNumberSequence0Profundidad de la neblina atmosférica
ColorAtmColorColorSequencegris claro (0.78, 0.78, 0.78)Gráfico de tinte atmosférico
DecayAtmDecayColorSequencegris azulado (0.416, 0.471, 0.541)Gráfico de color de degradación a distancia
Etiqueta del panelAtributo de datosTipoPredeterminadoQué hace
Anim. StepsTotalKeyFramesnumber100Resolución de pre-muestreo para los gráficos
LingerPartLifenumber0Segundos que el Atmosphere permanece después de que termina el ciclo
Emit IntoEmitParentInstancenilDónde se emparenta el duplicado — reemplaza a Lighting

El prefijo Atm en los atributos de datos (AtmDensity, AtmColor, etc.) evita colisiones con los nativos de Roblox Atmosphere.Density, .Color, etc. — el plugin lee cada valor del panel desde el atributo con prefijo y lo escribe en la propiedad sin prefijo en el duplicado durante la animación.


Un gráfico NumberSequence para el grosor atmosférico. El Atmosphere.Density de Roblox va de 0 (aire perfectamente claro) a 1 (niebla impenetrable). La mayoría de los valores de autoría se encuentran entre 0.1 (neblina ligera) y 0.5 (niebla densa).

Animar Density produce un efecto de “el clima cambia con el tiempo”. Un gráfico que sube de 0.1 a 0.4 y baja de nuevo a lo largo de un Lifetime largo simula la niebla entrando y saliendo.

Un gráfico NumberSequence para el Atmosphere.Offset de Roblox — un valor normalizado de 0 a 1 que controla dónde se sitúa el gradiente de neblina a lo largo del eje vertical. Los valores más bajos sesgan la neblina hacia el suelo; los valores más altos la sesgan hacia el cielo. El plugin limita el gráfico a valores no negativos.

El valor predeterminado es 0.25 — un ligero sesgo hacia el suelo que es un ajuste intermedio razonable para la mayoría de las escenas al aire libre.

Un gráfico NumberSequence para la intensidad del resplandor solar. Los valores más altos producen un bloom más visible alrededor del sol cuando se mira directamente; 0 (el valor predeterminado) no produce resplandor adicional.

Animar Glare hacia arriba brevemente es la forma de representar un momento de “el sol sale” — el cielo se ilumina, el sol destella visiblemente, luego se asienta. Útil para transiciones de despejado de nubes, tomas al final de una tormenta, efectos mágicos de invocación solar.

Un gráfico NumberSequence para la profundidad de la neblina — qué tan espesa aparece la neblina visual en el horizonte. Diferente de Density (que controla el grosor del aire de forma uniforme); Haze afecta solo la banda de neblina del horizonte distante.

Combinado con Density y Decay, Haze controla cómo la geometría distante se desvanece en la atmósfera. Una combinación de Haze alto y Density alto hace que el horizonte desaparezca en el aire; los valores bajos mantienen el horizonte nítido.

Un gráfico ColorSequence para el tinte atmosférico. El color se multiplica contra la escena renderizada, aplicado a través de la capa de neblina.

Un Color azul pálido a lo largo de toda la vida produce un matiz azul cielo normal. Un gráfico que cambia de azul pálido a edad 0 a naranja cálido a edad 1 simula una transición de atardecer a lo largo del Lifetime del ciclo. Un gráfico que cicla entre azul pálido, blanco, gris y amarillo cálido simula un ciclo completo de día y noche si el Lifetime es lo suficientemente largo.

Un gráfico ColorSequence para el color de degradación a distancia — hacia qué color se desvanecen los objetos distantes a medida que la neblina los oscurece.

En el mundo real, las montañas distantes tienden a verse de color gris azulado porque la atmósfera dispersa la luz azul de longitud de onda corta. Ese es el color natural de Decay. Para escenas estilizadas, puedes elegir cualquier cosa: los objetos distantes desvaneciéndose al rojo sugerirían un entorno infernal o peligroso; desvaneciéndose al blanco sugieren niebla densa o nieve.

El color Decay se aplica con más fuerza a los objetos lejos de la cámara, trabajando en combinación con Haze y Density.

El valor predeterminado es Lighting. Atmosphere solo se renderiza cuando está emparentado dentro de Lighting — anular Emit Into para apuntar a otro lugar desactiva efectivamente el efecto. Déjalo vacío para uso normal.


Algunas peculiaridades específicas de Atmosphere.

Atmosphere no tiene propiedad Enabled nativa. La clase Atmosphere de Roblox no hereda de PostProcessEffect (la clase padre para Blur/Bloom/ColorCorrection), por lo que carece del booleano Enabled que comparten esos tipos. El plugin maneja esto internamente — el atributo Enabled en el Atmosphere fuente controla la lógica de pulso de emisión del plugin, pero el renderizado “siempre activo” del duplicado significa que no hay un indicador equivalente para cambiar en el clon. Desde la perspectiva del usuario, el panel aún muestra un interruptor Enabled y se comporta como se esperaría; la diferencia es interna.

No mantengas múltiples emisores de Atmosphere activos simultáneamente. Cada uno emite un duplicado Atmosphere singleton, y Roblox solo puede renderizar uno a la vez. Si tienes dos emisores funcionando, la salida visible parpadea entre sus resultados. Si estás creando múltiples presets atmosféricos (un preset de cielo despejado, uno tormentoso, uno de atardecer), mantén solo un emisor Enabled en cada momento.

Un Atmosphere de referencia existente en Lighting interactúa con los emitidos. La mayoría de los juegos ya tienen un Atmosphere permanente configurado por su diseñador de iluminación para el aspecto ambiental. Cuando emites un Atmosphere transformado encima, Roblox alterna entre los dos — lo que generalmente significa que el emitido gana mientras está vivo, y el de referencia toma el control después. Planifica el cambio: anima Density hacia abajo al final de tu ciclo para que el Atmosphere emitido se desvanezca de forma elegante de vuelta al de referencia.

No cambies EmissionMode después del Transform. El plugin establece EmissionMode en Animate en el momento del Transform, pero no lo aplica después. Cambiar a Emit más tarde funcionará mecánicamente pero producirá una salida parpadeante mientras Roblox arbitra entre múltiples duplicados. El menú desplegable aparece en el panel por coherencia con los otros tipos; déjalo en Animate específicamente para Atmosphere.

Color y Decay son ambos gráficos ColorSequence. La mayoría de los tipos tienen como máximo un ColorSequence (Color para Part, TintColor para ColorCorrection). Atmosphere es el único tipo con dos gráficos ColorSequence independientes. Si has estado pensando en “el color de la atmósfera” como un valor único, en realidad son dos — Color es el tinte del aire, Decay es el color hacia el que los objetos distantes se desvanecen.

ImageLabel es el tipo final en la Particiliary — y el único tipo de interfaz de usuario. Donde todos los tipos anteriores estaban en espacio 3D o en el flujo de post-procesamiento, ImageLabel opera en la capa 2D de GUI: la superposición plana que se sitúa encima del mundo renderizado. Emisión polar, posicionamiento relativo a la pantalla, un sistema de flipbook diferente al de las mallas — el modelo arquitectónico es diferente a todo lo que hemos visto hasta ahora.