Lighting

Mostrar obsoleto

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Não criável
Serviço

El servicio Iluminación controla la iluminación global en una experiencia. Incluye una gama de propiedades ajustables que puedes usar para cambiar cómo aparece y se interactúa la iluminación con otros objetos, como se describe en Propiedades de iluminación .

Iluminación también puede contener un objeto Atmosphere para rendizar efectos atmosféricos realistas, incluidos los efectos de partículas, niebla, reflejos y color. Vea Efectos atmosféricos para obtener más información.

Además, iluminación (junto con Workspace.CurrentCamera ) puede contener efectos de postprocesado como SunRaysEffect y 1> Class.BlurEffect ". Vea4> efectos de postprocesado4> para obtener más información.

Amostras de código

Day/Night Cycle

local Lighting = game:GetService("Lighting")
local TIME_SPEED = 60 -- 1 min = 1 hour
local START_TIME = 9 -- 9am
local minutesAfterMidnight = START_TIME * 60
local waitTime = 60 / TIME_SPEED
while true do
minutesAfterMidnight = minutesAfterMidnight + 1
Lighting:SetMinutesAfterMidnight(minutesAfterMidnight)
task.wait(waitTime)
end

Resumo

Propriedades

Métodos

Eventos

Propriedades

Ambient

Ler Parallel

La tonalidad de iluminación aplicada a las áreas que están ocultas del cielo, como las áreas interiores.

Esta propiedad predeterminada 0, 0, 0 (negro).

Siempre que los canales rojos, verdes y azules de esta propiedad no excedan los canales correspondientes en Lighting.OutdoorAmbient el cambio de color se reserva para las áreas ocultas del sol/luna. El valor de Class.Lighting.OutdoorAmbient

Nota, cuando Lighting.GlobalShadows está deshabilitado, no hay distinción entre áreas ocultas y áreas que no lo son. En este caso Lighting.OutdoorAmbient se ignorará y se aplicará el tinte de la propiedad Ambient en todos lados.

Para obtener más propiedades que afectan el color de la iluminación, consulte Lighting.ColorShiftBottom y Lighting.ColorShiftTop .

Brightness

Ler Parallel

La intensidad de iluminación en el lugar.

Cambiar este valor cambiará el impacto de la fuente de luz (el sol o la luna) en la iluminación del mapa. Cuando se establece el brillo en 0, no habrá efecto debido a Lighting.ColorShift_Top o Lighting.ColorShift_Bottom como la fuente de luz no está teniendo ningún efecto. Nota, propiedad

Mientras esta propiedad no está fijada, el efecto está fijado entre 0 y 2. Significa establecer el brillo a 10 no será diferente a establecerlo en 2.

Nota, Lighting.Ambient y Lighting.OutdoorAmbient también se pueden usar para influir en la cantidad de luz que aparece en un lugar. Por ejemplo, estableciendo Lighting.OutdoorAmbient a 255, 255, 255 hará que el lugar apare

ClockTime

Não replicado
Ler Parallel

Una representación numérica (en horas) del tiempo actual del día usado por Lighting .

Nota, esta propiedad no coincide con el tiempo real del día y no cambiará durante el juego a menos que se haya cambiado por un script.

Para medir el tiempo con formato de Lighting utiliza Lighting.CurrentTime . Cambiar Lighting.CurrentTime o usar 1> Class.Lighting:SetMinutesAfterMidnight()1> también cambiará esta propiedad.

El tiempo de ClockTime requiere el tiempo para ser normalizado:


minutesAfterMidnight = 0
while true do
minutesAfterMidnight += 1
local minutesNormalised = minutesAfterMidnight % (60 * 24)
local hours = minutesNormalised / 60
Lighting.ClockTime = hours
task.wait()
end

Usar Lighting.TimeOfDay requiere que el tiempo sea normalizado y una forma de cuerda formatada:


minutesAfterMidnight = 0
while true do
minutesAfterMidnight += 1
local minutesNormalised = minutesAfterMidnight % (60 * 24)
local seconds = minutesNormalised * 60
local hours = string.format("%02.f", seconds//3600)
local mins = string.format("%02.f", math.floor(seconds/60 - (hours*60)))
local secs = string.format("%02.f", math.floor(seconds - hours*3600 - mins *60))
local timeString = hours..":"..mins..":"..secs
Lighting.TimeOfDay = timeString
task.wait()
end

Usar Lighting:SetMinutesAfterMidnight() no requiere ningún procesamiento adicional:


minutesAfterMidnight = 0
while true do
minutesAfterMidnight += 1
Lighting:SetMinutesAfterMidnight(minutesAfterMidnight)
task.wait()
end

ColorShift_Bottom

Ler Parallel

El tono representado en la luz reflejada en las superficies opuestas a aquellas que se enfrentan al sol o la luna.

Las superficies de un BasePart influenciadas por ColorShift_Bottom dependen de la posición y orientación de la BasePart relativa al sol o la luna. Cuando el sol está directamente sobre el techo, un BasePart, el cambio de color solo se aplicará a la superficie inferior.

Este efecto se puede aumentar o reducir al alterar Lighting.Brightness .

ColorShift_Bottom afecta a las superficies opuestas para Lighting.ColorShift_Top

Nota, Lighting.ColorShift_Top y ColorShift_Bottom interactuarán con las propiedades Lighting.Ambient y Lighting.OutdoorAmbient si son mayores que 0, 0, 0. Además, la influencia de ColorShift_Bottom puede ser muy difícil de identificar

ColorShift_Top

Ler Parallel

La tonalidad representada en el color que refleja la superficie al mostrar el sol o la luna.

Las superficies de un BasePart influenciadas por ColorShift_Top dependen de la posición y orientación de la BasePart relativa al sol o la luna. Cuando el sol está directamente sobre el techo, un BasePart, el cambio de color solo se aplicará a la superficie superior.

Este efecto se puede aumentar o reducir al alterar Lighting.Brightness .

Mientras que ColorShift_Top afecta las superficies expuestas a la luz, Lighting.ColorShift_Bottom afecta las superficies protegidas de la luz.

Nota, ColorShift_Top y ColorShift_Bottom interactuarán con las propiedades Lighting.Ambient y Lighting.OutdoorAmbient si son mayores que 0, 0, 0.

EnvironmentDiffuseScale

Ler Parallel

Luz ambiental que se deriva del entorno, ambiente. El valor de esta propiedad se establece por defecto en 0.

Es similar a Lighting.Ambient y Lighting.OutdoorAmbient propiedad, pero es dinámica y puede cambiar según el cielo y el tiempo de día. Se recomienda cuando esta propiedad se incrementa, Ambient y OutdoorAmbient se reducen en consecuencia.

También hace que el cielo aparezca por la noche.

EnvironmentSpecularScale

Ler Parallel

Luz especular que se deriva del entorno, ambiente. El valor de esta propiedad se establece por defecto en 0.

Hará que los objetos lisos reflejen el entorno, ambiente. Especialmente importante para hacer que el metal sea más realista.

ExposureCompensation

Ler Parallel

Esta propiedad determina la cantidad de compensación de exposición que aplica un sesgo al nivel de exposición de la escena antes de la etapa de mapa de tono. Por defecto, 0.

  • Un valor de +1 indica el doble de exposición y -1 significa la mitad de la exposición.
  • Un valor de 0 no indica que se realice compensación de exposición.
  • Rango: -5 a 5

Esta propiedad se replica y se puede configurar desde scripts o Studio .


local Lighting = game:GetService("Lighting")
Lighting.ExposureCompensation = 5

Puedes usar esta propiedad para ajustar la cantidad de exposición antes de la etapa del mapa de tonos para mostrar más detalles en áreas más claras o oscuras. Esto es necesario a medida que avanzamos hacia un pipeline HDR.

Cuando Lighting.Technology está configurado como Legacy, esta propiedad no tiene efecto.


local Lighting = game:GetService("Lighting")
-- ExposureCompensation no tiene efecto porque la tecnología de Lighting es Legacy
Lighting.Technology = Enum.Technology.Legacy
Lighting.ExposureCompensation = 5

FogColor

Ler Parallel

Las propiedades de niebla están ocultas cuando Lighting contiene un objeto Atmosphere .

Un valor Color3 que da la tonalidad de la niebla Lighting .

¿Cómo funciona el humo?

El efecto de niebla en Roblox se muestra en un avión perpendicular a la dirección Workspace.CurrentCamera . Se desvanecerá entre el propiedad Lighting.FogStart donde no es visible, hasta la propiedad Lighting.FogEnd donde es completamente opaca. El efecto de niebla es que mezcla el color con el color de Fog.

En distancias mayores a Lighting.FogEnd, el color se determinará en su totalidad por el Color de la niebla. Sin embargo, en las distancias entre Lighting.FogStart y Lighting.FogEnd, la cantidad de color que se mezcla depende de la posición.

Roblox's fog usa interpolación lineal entre Lighting.FogStart y Lighting.FogEnd . Esto significa que si Lighting.FogStart es 10 y 1> Class


local Lighting = game:GetService("Lighting")
-- fog will fade between 25 and 200 studs
Lighting.FogStart = 25
Lighting.FogEnd = 200

Nota, la niebla no oscurece la caja del cielo.

FogEnd

Ler Parallel

Las propiedades de niebla están ocultas cuando Lighting contiene un objeto Atmosphere .

La profundidad desde la Workspace.CurrentCamera , en studs, en la que la niebla estará completamente opaca.

¿Cómo funciona el humo?

La niebla en Roblox se muestra en un avión perpendicular a la dirección de mirada de Workspace.CurrentCamera . Se desvanecerá entre la propiedad Lighting.FogStart donde no es visible, hasta la propiedad FogEnd donde es completamente opaca. El efecto de la niebla es que mezcla el color con el Lighting.FogColor.

En distancias mayores que FogEnd, el color se determinará en su totalidad por el Lighting.FogColor . Sin embargo, en las distancias entre Lighting.FogStart y FogEnd, el grado en que se mezcla el color depende de la posición.

La niebla de Roblox usa la interpolación lineal entre Lighting.FogStart y FogEnd. Esto significa que si Lighting.FogStart es 10 y FogEnd es 20, a una distancia de 15 studs la niebla estará en un 50%. Eso significa que el color de un píxel en 1


local Lighting = game:GetService("Lighting")
-- fog will fade between 25 and 200 studs
Lighting.FogStart = 25
Lighting.FogEnd = 200

El color de la niebla se puede ajustar con Lighting.FogColor .

Nota, la niebla no oscurece la caja del cielo.

FogStart

Ler Parallel

Las propiedades de niebla están ocultas cuando Lighting contiene un objeto Atmosphere .

La profundidad desde la Workspace.CurrentCamera , en studs, en la que comienza a mostrarse la niebla.

¿Cómo funciona el humo?

El efecto de niebla en Roblox se muestra en un avión perpendicular a la dirección de la mirada. Se desvanece entre la propiedad FogStart donde no es visible, hasta la propiedad FogEnd donde es completamente opaca. El efecto de niebla es que mezcla el color con la propiedad Class.Lighting.FogColor .

En distancias mayores que Lighting.FogEnd , el color se determinará en su totalidad por el Lighting.FogColor . Sin embargo, en las distancias entre FogStart y Lighting.FogEnd el grado en que se mezcla el color depende de la posición.

La niebla de Roblox usa la interpolación lineal entre FogStart y Lighting.FogEnd . Esto significa que si FogStart es 10 y Lighting.FogEnd es 20, a una distancia de 15 studs la niebla estará en un 50%. Eso significa que el color de un píxel en 15 stud


local Lighting = game:GetService("Lighting")
-- fog will fade between 25 and 200 studs
Lighting.FogStart = 25
Lighting.FogEnd = 200

El color de la niebla se puede ajustar con Lighting.FogColor .

Nota, la niebla no oscurece la caja del cielo.

GeographicLatitude

Ler Parallel

La latitud geográfica, en grados, de la escena, que afecta el resultado de `Class.Lighting tiempo en la posición del sol y la luna.

Al calcular la posición del sol, también se tiene en cuenta la inclinación de la tierra.

Cambiar GeographicLatitude cambiará la posición del sol en cada Lighting.TimeOfDay . Los desarrolladores que buscan obtener la posición del sol o la luna deberían usar Lighting:GetSunDirection() o Lighting:GetMoonDirection() .

Amostras de código

Sun direction

local Lighting = game:GetService("Lighting")
local UNIT_Z = Vector3.new(0, 0, 1)
local EARTH_TILT = math.rad(23.5) -- The Earth's tilt in radians.
local HALF_SOLAR_YEAR = 182.6282 -- Half the length of an average solar year
local function getSunDirection()
local gameTime = Lighting:GetMinutesAfterMidnight()
local geoLatitude = Lighting.GeographicLatitude
local dayTime = gameTime / 1440
local sourceAngle = 2 * math.pi * dayTime
local sunPosition = Vector3.new(math.sin(sourceAngle), -math.cos(sourceAngle), 0)
local latRad = math.rad(geoLatitude)
local sunOffset = -EARTH_TILT * math.cos(math.pi * (dayTime - HALF_SOLAR_YEAR) / HALF_SOLAR_YEAR) - latRad
local sunRotation = CFrame.fromAxisAngle(UNIT_Z:Cross(sunPosition), sunOffset)
local sunDirection = sunRotation * sunPosition
return sunDirection
end
print(getSunDirection())

GlobalShadows

Ler Parallel

Alterna iluminación dinámica basada en el voxel en el juego

¿Qué hace GlobalShadows?

Cuando se establece en verdadero, las sombras se renderizan en áreas protegidas dependiendo de la posición del sol y la luna. El color de iluminación aplicado a estas áreas se determina por la propiedad Lighting.Ambient. El color de iluminación en todas las otras áreas se determina por la propiedad Lighting.OutdoorAmbient.

Al desactivar, no se dibujan sombras y no se realiza ninguna distinción entre áreas interiores y exteriores. Como resultado, la propiedad Lighting.Ambient determina el tono de iluminación y Lighting.OutdoorAmbient no hará nada.

Las sombras se calculan utilizando un sistema de voxel, y cada voxel de iluminación es un 4x4x4 studs. Esto significa que los objetos deben ser más grandes que 4x4x4 studs para mostrar una sombra realista. Las sombras también se recalculan cuando BaseParts se mueven.

Nota, esta propiedad no está relacionada con las sombras de los personajes que se muestran sin importar lo que esté configurado en GlobalShadows.

Para obtener más información sobre iluminación dinámica de Roblox, por favor vea este blog post.

Alternar Sombras Globales

Los desarrolladores que alternan la configuración GlobalShadows notarán que desactivarlo hace que el lugar sea significativamente más oscuro. Esto se debe a que cuando GlobalShadows está desactivado Lighting.Ambient se usa para calcular el tono de iluminación en ambos espacios interiores y exteriores. Esta oscuridad se puede resolver estableciendo Class.Lighting.Amb

En la mayoría de los casos, se recomienda dejar GlobalShadows habilitado debido a la aspecto, lookvisual superior. Vea guía de propiedades de iluminación para obtener una comparación.

Não scriptável
Ler Parallel

OutdoorAmbient

Ler Parallel

El tinte de iluminación aplicado a las áreas exteriores.

Esta propiedad predeterminada 127, 127, 127.

Siempre que los canales rojos, verdes y azules de Lighting.Ambient no excedan los canales correspondientes en esta propiedad, el tono de la iluminación en las áreas exteriores se determinará por

Nota, cuando Lighting.GlobalShadows está deshabilitado no hay distinción entre áreas ocultas del cielo y áreas que no lo son. En este caso OutdoorAmbient se ignorará y se aplicará el tinte de la propiedad Lighting.Ambient en todos lados.

Para más propiedades que afectan el color de la iluminación, consulte Lighting.ColorShift_Bottom y Lighting.ColorShift_Top .

Não scriptável
Ler Parallel

ShadowSoftness

Ler Parallel

Controla la calidad de las sombras. El valor predeterminado de esta propiedad es 0.2.

Esta propiedad solo funciona cuando el modo Lighting.Technology está en ShadowMap o Future y el dispositivo es capaz de ShadowMap.

Technology

Ler Parallel
Segurança do script Roblox

Determina el sistema de iluminación para renderizar el mundo 3D. No se puede scriptable y solo se puede modificar en Studio. Vea Enum.Technology para obtener las opciones disponibles y tecnología de iluminación para descripciones y efectos de luz detallados de cada opción.

TimeOfDay

Ler Parallel

Una representación de cadena de 24 horas del tiempo actual del día usado por Lighting .

Nota, esta propiedad no coincide con el tiempo real del día y no cambiará durante el juego a menos que se haya cambiado por un script.

Para una medida numérica de Lighting tiempo de uso Lighting.ClockTime . Cambiando Lighting.ClockTime o usando 1> Class.Lighting:SetMinutesAfterMidnight()1> también cambiará esta propiedad.

El uso de TimeOfDay requiere el tiempo para ser normalizado y una forma de cuerda formatada:


minutesAfterMidnight = 0
while true do
minutesAfterMidnight += 1
local minutesNormalised = minutesAfterMidnight % (60 * 24)
local seconds = minutesNormalised * 60
local hours = string.format("%02.f", seconds//3600)
local mins = string.format("%02.f", math.floor(seconds/60 - (hours*60)))
local secs = string.format("%02.f", math.floor(seconds - hours*3600 - mins *60))
local timeString = hours..":"..mins..":"..secs
Lighting.TimeOfDay = timeString
task.wait()
end

Usar Lighting.ClockTime requiere que el tiempo sea normalizado:


minutesAfterMidnight = 0
while true do
minutesAfterMidnight += 1
local minutesNormalised = minutesAfterMidnight % (60 * 24)
local hours = minutesNormalised / 60
Lighting.ClockTime = hours
task.wait()
end

Usar Lighting:SetMinutesAfterMidnight() no requiere ningún procesamiento adicional:


minutesAfterMidnight = 0
while true do
minutesAfterMidnight += 1
Lighting:SetMinutesAfterMidnight(minutesAfterMidnight)
task.wait()
end

Métodos

GetMinutesAfterMidnight

Escrever Parallel

Devuelve el número de minutos que han pasado después de medianoche para los fines de iluminación.

Este número será casi idéntico a Lighting.ClockTime multiplicado por 60.

Este número no siempre será igual al valor dado en Lighting:SetMinutesAfterMidnight() ya que regresa minutos después de medianoche en el día actual.

Para Lighting tiempo en formato de cadena, consulte Lighting.TimeOfDay .


Devolução

El número de minutos después de medianoche.

Amostras de código

Lighting:GetMinutesAfterMidnight

local Lighting = game:GetService("Lighting")
Lighting.TimeOfDay = "14:00:00"
print(Lighting:GetMinutesAfterMidnight())

GetMoonDirection

Escrever Parallel

Devuelve un Datatype.Vector3 representando la dirección de la luna desde la posición 0, 0, 0.

Nota, cuando la luna tenga 'establecer' y ya no esté visible, el Vector3 devuelto por esta función seguirá apuntando hacia la luna debajo del mapa.

Los desarrolladores que desean cambiar la posición de la luna deberían usar las propiedades Lighting.ClockTime o Lighting.GeographicLatitude.

Existe una variante de esta función para obtener la dirección del sol, Lighting:GetSunDirection() .


Devolução

Vector3 representando la dirección de la luna desde la posición 0, 0, 0.

Amostras de código

Lighting:GetMoonDirection

local Lighting = game:GetService("Lighting")
Lighting.TimeOfDay = "14:00:00"
print(Lighting:GetMoonDirection())

GetMoonPhase

Devuelve la fase actual de la luna. No hay forma de cambiar la fase de la luna, por lo que esto siempre devolverá 0.75.


Devolução

GetSunDirection

Escrever Parallel

Devuelve un Datatype.Vector3 representando la dirección del sol desde la posición 0, 0, 0.

Nota, cuando el sol se haya puesto y ya no esté visible, el Vector3 devuelto por esta función seguirá apuntando hacia el sol debajo del mapa.

Los desarrolladores que desean cambiar la posición del sol deberían usar las propiedades Lighting.ClockTime o Lighting.GeographicLatitude.

Existe una variante de esta función para obtener la dirección de la luna, Lighting:GetMoonDirection() .


Devolução

Vector3 representando la dirección del sol desde la posición 0, 0, 0.

Amostras de código

Lighting:GetSunDirection

local Lighting = game:GetService("Lighting")
Lighting.TimeOfDay = "14:00:00"
Lighting.GeographicLatitude = 41.73
print(Lighting:GetSunDirection())

SetMinutesAfterMidnight

void

Establece Lighting.TimeOfDay y Lighting.ClockTime en el número de minutos dado después de medianoche.

¿Cómo puedo hacer un scriptde día / noche?

SetMinutesAfterMidnight permite un valor numérico para usar, por ejemplo en un ciclo día/noche Script , sin la necesidad de convertir en una cadena en el formato requerido por Lighting.TimeOfDay . También permite valores mayores que 24 horas para que coincidan con los tiempos del día siguiente. Ver los códigos de ejemplo a continuación para obtener un ejemplo.

Usar Lighting.TimeOfDay requiere que el tiempo sea normalizado y una forma de cuerda formatada:


minutesAfterMidnight = 0
while true do
minutesAfterMidnight += 1
local minutesNormalised = minutesAfterMidnight % (60 * 24)
local seconds = minutesNormalised * 60
local hours = string.format("%02.f", seconds // 3600)
local mins = string.format("%02.f", math.floor(seconds / 60 - (hours * 60)))
local secs = string.format("%02.f", math.floor(seconds - hours * 3600 - mins * 60))
local timeString = hours .. ":" .. mins .. ":" .. secs
Lighting.TimeOfDay = timeString
task.wait()
end

Usar Lighting.ClockTime requiere que el tiempo sea normalizado:


minutesAfterMidnight = 0
while true do
minutesAfterMidnight += 1
local minutesNormalised = minutesAfterMidnight % (60 * 24)
local hours = minutesNormalised / 60
Lighting.ClockTime = hours
task.wait()
end

Usar Lighting:SetMinutesAfterMidnight() no requiere ningún procesamiento adicional:


minutesAfterMidnight = 0
while true do
minutesAfterMidnight += 1
Lighting:SetMinutesAfterMidnight(minutesAfterMidnight)
task.wait()
end

Parâmetros

minutes: number

El número de minutos después de medianoche.


Devolução

void

Amostras de código

Setting Lighting Time

local Lighting = game:GetService("Lighting")
Lighting:SetMinutesAfterMidnight(840)

Eventos

LightingChanged

Este evento se activa cuando se cambia una propiedad de Lighting o se agrega o elimina un Sky de Lighting .

Aunque este evento se activa cuando la mayoría de las propiedades de Lighting cambian, los desarrolladores deberían estar al tanto de las pocas excepciones:

En los casos en que este comportamiento no se desee, el evento Object.Changed o la función Object:GetPropertyChangedSignal() se pueden usar.

Parâmetros

skyChanged: bool

Amostras de código

Lighting.LightingChanged

local Lighting = game:GetService("Lighting")
local function onLightingChanged(skyboxChanged)
if skyboxChanged then
print("Skybox has changed")
else
print("The skybox did not change.")
end
end
Lighting.LightingChanged:Connect(onLightingChanged)