Lighting

Visualizza obsoleti

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Non costruibile
Assistenza

Il servizio Illuminazione controlla l'illuminazione globale in un'esperienza. Include una gamma di proprietà regolabili che puoi utilizzare per cambiare il modo in cui appare e interagisce con altri oggetti, come riassunto in Proprietà di illuminazione .

Illuminazione può anche contenere un oggetto Atmosphere per rendere effetti atmosferici realistici, tra cui la densità delle particelle, la nebbia, il riflesso e il colore. Vedi Effetti atmosferici per i dettagli.

Inoltre, Illuminazione (insieme con Workspace.CurrentCamera ) potrebbe contenere effetti post-elingue come SunRaysEffect e 1> Class.BlurEffect1>. Vedi 4> Elaborazione post-效果4> per ulteriori informazioni.

Campioni di codice

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

Sommario

Proprietà

Metodi

Eventi

Proprietà

Ambient

Lettura Parallela

L'illuminazione tonalità applicata alle aree che sono prive di luce del cielo, come le aree interne.

Questa proprietà predefinita 0, 0, 0 (nero).

Fintanto che i canali rossi, verdi e blu di questa proprietà non superano i corrispondenti canali in Lighting.OutdoorAmbient il cambiamento di colore sarà riservato alle aree oscure dal sole / dalla luna. Il valore effettivo di Class.

Nota, quando Lighting.GlobalShadows è disabilitato non c'è alcuna distinzione tra aree coperte e aree che non lo sono. In questo caso Lighting.OutdoorAmbient sarà ignorato e l'ombra dall'属性 Ambient sarà applicata ovunque.

For more properties that influence the color of lighting, please see Lighting.ColorShiftBottom and Lighting.ColorShiftTop .

Brightness

Lettura Parallela

L'intensità di illuminazione nel Posto.

Cambiando questo valore influenzerà l'impatto della fonte di luce (sole o luna) sulla illuminazione della mappa. Quando la luce è impostata su 0, non ci sarà effetto a causa di Lighting.ColorShift_Top o Lighting.ColorShift_Bottom come la fonte di luce non ha effetto. Nota, non influ

Mentre questa proprietà non è bloccata, l'effetto è bloccato tra 0 e 2. Ciò significa che impostare la luce su 10 non è diverso da impostarla su 2.

Nota, Lighting.Ambient e Lighting.OutdoorAmbient possono anche essere utilizzati per influenzare il modo in cui appare un luogo. Ad esempio, impostare Lighting.OutdoorAmbient su 255, 255, 255 renderà il lu

ClockTime

Non Replicato
Lettura Parallela

Una rappresentazione numerica (in ore) del tempo attuale del giorno usato da Lighting .

Nota, questa proprietà non corrisponde all'ora reale del giorno e non cambierà durante il gioco a meno che non sia stata modificata da uno script.

Per una misura di Lighting tempo formattato come una stringa di 24 ore usa Lighting.CurrentTime . Cambiando Lighting.CurrentTime o usando 1> Class.Lighting:SetMinutesAfterMidnight()1> cambierà anche questa Proprietà.

L'utilizzo di ClockTime richiede il tempo per essere normalizzato:


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

L'uso di Lighting.TimeOfDay richiede il tempo per essere normalizzato e una forma di stringa formattata:


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

L'utilizzo di Lighting:SetMinutesAfterMidnight() non richiede alcun ulteriore elaborazione:


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

ColorShift_Bottom

Lettura Parallela

Il colore rappresentato dalla luce riflessa dalle superfici opposte al sole o alla luna.

Le superfici di un BasePart influenzate da ColorShift_Bottom dipendono dalla posizione e dall'orientamento della BasePart rispetto al sole o alla luna. Dove il sole è direttamente sopra un BasePart, lo spostamento del colore si applicerà solo alla superficie inferiore.

Questo effetto può essere aumentato o ridotto modificando Lighting.Brightness .

ColorShift_Bottom influenza le superfici contrarie per Lighting.ColorShift_Top

Nota, Lighting.ColorShift_Top e ColorShift_Bottom interagiranno con le proprietà Lighting.Ambient e Lighting.OutdoorAmbient se sono più grandi di 0, 0, 0. Inoltre, l'influenza di ColorShift_Bottom può essere molto diffic

ColorShift_Top

Lettura Parallela

Il colore rappresentato dalla luce riflessa dalle superfici che guardano al sole o alla luna.

Le superfici di un BasePart influenzate da ColorShift_Top dipendono dalla posizione e dall'orientamento della BasePart rispetto al sole o alla luna. Dove il sole è direttamente sopra un BasePart, lo spostamento del colore si applicerà solo alla superficie superiore.

Questo effetto può essere aumentato o ridotto modificando Lighting.Brightness .

Mentre ColorShift_Top influenza le superfici esposte alla luce, Lighting.ColorShift_Bottom influenza le superfici protette dalla luce.

Nota, ColorShift_Top e ColorShift_Bottom interagiranno con le proprietà Lighting.Ambient e Lighting.OutdoorAmbient se sono più grandi di 0, 0, 0.

EnvironmentDiffuseScale

Lettura Parallela

Luce ambientale che deriva dall'Ambiente. Il valore di questa proprietà predefinita 0.

È simile a Lighting.Ambient e Lighting.OutdoorAmbient proprietà ma è dinamico e può cambiare secondo il cielo e l'ora del giorno. Si consiglia quando questa proprietà viene aumentata, Ambient e OutdoorAmbient sono diminuiti di conseguenza.

Fa in modo che la skybox appaia anche di notte.

EnvironmentSpecularScale

Lettura Parallela

Luce speculare ottenuta dall'Ambiente. Il valore di questa proprietà predefinito 0.

Ciò renderà gli oggetti eleganti i riflettori dell'Ambiente. Particularmente importante per rendere il metallo più realistico.

ExposureCompensation

Lettura Parallela

Questa proprietà determina la quantità di compensazione dell'esposizione che applica un bias al livello di esposizione della scena prima della fase della mappa dei toni. Predefiniti a 0.

  • Un valore di +1 indica il doppio della esposizione e -1 significa la metà dell'esposizione.
  • Un valore di 0 indica che non verrà eseguita alcuna compensazione per l'esposizione.
  • Range: -5 a 5

Questa proprietà viene replicata e può essere impostata dagli script o Studio.


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

Puoi usare questa proprietà per regolare la quantità di esposizione prima della fase della mappa tonale per mostrare più dettagli in aree più chiare o più scure. Questo è necessario mentre passiamo a una pipeline HDR.

Quando Lighting.Technology è impostato su Legacy, questa proprietà non ha effetto.


local Lighting = game:GetService("Lighting")
-- ExposureCompensation non ha effetto poiché la tecnologia di Lighting è Legacy
Lighting.Technology = Enum.Technology.Legacy
Lighting.ExposureCompensation = 5

FogColor

Lettura Parallela

Le proprietà di Fog sono nascoste quando Lighting contiene un oggetto Atmosphere .

Un valore Color3 che dà l'effetto di una nebbia Lighting .

Come funziona il nebbia?

Fog in Roblox è visualizzato in un aereo parallelo alla direzione Workspace.CurrentCamera . Disappeare tra la direzione Lighting.FogStart dove non è visibile, alla direzione Lighting.FogEnd dove è completamente opaco. L'effetto di foglia è che mescola il colore con il colore FogColor.

A distanze maggiori di Lighting.FogEnd, il colore sarà determinato interamente dal colore foglia. Tuttavia, nelle distanze tra Lighting.FogStart e Lighting.FogEnd, la percentuale di mescolamento del colore dipende dalla posizione.

Roblox's fog usa l'interpolazione lineare tra Lighting.FogStart e Lighting.FogEnd . Ciò significa che se Lighting.FogStart è 10 e


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

Nota, la nebbia non oscura la skybox.

FogEnd

Lettura Parallela

Le proprietà di Fog sono nascoste quando Lighting contiene un oggetto Atmosphere .

La profondità dalla Workspace.CurrentCamera , in studs, a cui la nebbia sarà completamente opaca.

Come funziona il nebbia?

La nebbia in Roblox viene visualizzata in un aereo parallelo alla direzione di Workspace.CurrentCamera . Sparisce tra la direzione di Lighting.FogStart dove non è visibile, alla proprietà FogEnd dove è completamente opaca. L'effetto della nebbia è che mescola il colore con il Lighting.FogColor.

A distanze maggiori di FogEnd, il colore sarà determinato interamente dal Lighting.FogColor. Tuttavia, alle distanze tra Lighting.FogStart e FogEnd, il grado in cui il colore viene mescolato dipende dalla posizione.

Il foglio di Roblox usa l'interpolazione lineare tra Lighting.FogStart e FogEnd. Ciò significa che se Lighting.FogStart è 10 e FogEnd è 20, a una distanza di 15 studs il foglio sarà al 50%. Ciò significa che il colore di un pixel a 15 studs


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

Il colore della nebbia può essere regolato usando Lighting.FogColor .

Nota, la nebbia non oscura la skybox.

FogStart

Lettura Parallela

Le proprietà di Fog sono nascoste quando Lighting contiene un oggetto Atmosphere .

La profondità dalla Workspace.CurrentCamera , in studs, a cui inizia a Mostrarenebbia.

Come funziona il nebbia?

La nebbia in Roblox viene visualizzata in un aereo parallelo alla direzione di Workspace.CurrentCamera . Sparisce tra la proprietà FogStart dove non è visibile, alla proprietà Lighting.FogEnd dove è completamente opaca. L'effetto della nebbia è che mescola il colore con il Lighting.FogColor.

A distanze maggiori di Lighting.FogEnd , il colore sarà determinato interamente dal Lighting.FogColor . Tuttavia, nelle distanze tra FogStart e Lighting.FogEnd, il grado in cui il colore viene mescolato dipende dalla posizione.

Il foglio di Roblox usa l'interpolazione lineare tra FogStart e Lighting.FogEnd . Ciò significa che se FogStart è 10 e Lighting.FogEnd è 20, a una distanza di 15 studs il foglio sarà al 50%. Ciò significa che il colore di un pixel a 15 studs sar


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

Il colore della nebbia può essere regolato usando Lighting.FogColor .

Nota, la nebbia non oscura la skybox.

GeographicLatitude

Lettura Parallela

La latitudine geografica, in gradi, della scena, che influenza il risultato di `Class.Lighting time sul posizione del sole e della luna.

Quando si calcola la posizione del sole, viene anche preso in Accountl'inclinazione della terra.

Cambiando GeographicLatitude cambierà la posizione del sole ogni Lighting.TimeOfDay . Gli sviluppatori che cercano di ottenere la posizione del sole o della luna dovrebbero usare Lighting:GetSunDirection() o Lighting:GetMoonDirection() .

Campioni di codice

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

Lettura Parallela

Attiva l'illuminazione dinamica basata sul voxel nel Gioco

Cosa fa GlobalShadows?

Quando impostato su true, le ombre vengono rendute in aree coperte a seconda della posizione del sole e della luna. L'ombreggiatura utilizzata per queste aree viene determinata dalla proprietà Lighting.Ambient . L'ombreggiatura in tutte le altre aree viene determinata dalla proprietà Lighting.OutdoorAmbient .

Quando è disabilitato, le ombre non vengono disegnate e non viene fatto alcuna distinzione tra aree interne e esterne. Di Risultato, la proprietà Lighting.Ambient determina il colore di illuminazione e Lighting.OutdoorAmbient non farà nulla.

Le ombre vengono calcolate utilizzando un sistema di voxel, e ogni voxel di illuminazione è 4x4x4 studs. Ciò significa che gli oggetti devono essere più grandi di 4x4x4 studs per visualizzare un'ombra realistica. Le ombre vengono anche calcolate quando BaseParts si muove.

Nota, questa proprietà non è correlata alle ombre dei personaggi che vengono visualizzati indipendentemente da ciò che GlobalShadows è impostato.

For more information about Roblox's dynamic lighting, please see this post del blog .

Attiva/disattiva le ombre globali

Gli sviluppatori che attivano la impostazione GlobalShadows noteranno che la sua disattivazione rende il luogo molto più scuro. Questo perché quando GlobalShadows è disabilitato Lighting.Ambient viene utilizzato per calcolare l'hue di illuminazione in entrambi gli spazi interni e esterni. Questa oscurità può essere risolta impostando <

In most casi gli sviluppatori sono raccomandati a lasciare GlobalShadows abilitato a causa dell'aspetto visivo superiore. Vedi Guida delle proprietà di illuminazione per una comparazione.

Non programmabile
Lettura Parallela

OutdoorAmbient

Lettura Parallela

L'illuminazione tonalità applicata alle aree esterne.

Questa proprietà predefinita 127, 127, 127.

Fintanto che i canali rossi, verdi e blu di Lighting.Ambient non superano i corrispondenti canali in questa Proprietà, l'intensità della luce in aree esterne sarà determinata da

Nota, quando Lighting.GlobalShadows è disabilitato non c'è alcuna distinzione tra aree oscure dal cielo e le aree che non lo sono. In questo caso OutdoorAmbient sarà ignorato e l'hue dalla proprietà Lighting.Ambient sarà applicata ovunque.

For more properties that influence the color of lighting, please see Lighting.ColorShift_Bottom and Lighting.ColorShift_Top .

Non programmabile
Lettura Parallela

ShadowSoftness

Lettura Parallela

Controlla quanto sono sfocate le ombre. Il valore di questa proprietà predefinito è 0,2.

Questa proprietà funziona solo quando Lighting.Technology modalità è ShadowMap o Future e il dispositivo è in grado di ShadowMap.

Technology

Lettura Parallela
Sicurezza Script Roblox

Determina il sistema di illuminazione per rendere il Mondo3D. Non scriptabile e solo modificabile in Studio. Vedi Enum.Technology per le opzioni disponibili e Lighting Technology per le descrizioni dettagliate e gli effetti visivi di ciascuna opzione.

TimeOfDay

Lettura Parallela

Una rappresentazione di 24 ore di tempo reale utilizzato da Lighting .

Nota, questa proprietà non corrisponde all'ora reale del giorno e non cambierà durante il gioco a meno che non sia stata modificata da uno script.

Per un misuratore numerico di Class.Lighting tempo di utilizzo Lighting . La modifica di Lighting.ClockTime o l'utilizzo di Lighting.ClockTime cambierà anche questa Proprietà.

L'uso di TimeOfDay richiede il tempo per essere normalizzato e una forma di stringa formattata:


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

L'utilizzo di Lighting.ClockTime richiede il tempo per essere normalizzato:


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

L'utilizzo di Lighting:SetMinutesAfterMidnight() non richiede alcun ulteriore elaborazione:


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

Metodi

GetMinutesAfterMidnight

Scrivi Parallelo

Restituisce il numero di minuti che sono passate dopo mezzanotte per i fini di illuminazione.

Questo numero sarà quasi identico a Lighting.ClockTime moltiplicato per 60.

Questo numero non sarà sempre uguale al valore fornito in Lighting:SetMinutesAfterMidnight() poiché restituisce minuti dopo mezzanotte nel giorno corrente.

Per Lighting tempo formattato come una Stringa, vedi Lighting.TimeOfDay .


Restituzioni

Il numero di minuti dopo mezzanotte.

Campioni di codice

Lighting:GetMinutesAfterMidnight

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

GetMoonDirection

Scrivi Parallelo

Restituisce un Vector3 rappresentante la direzione della luna dalla posizione 0, 0, 0.

Nota, quando la luna ha 'Impostare' e non è più visibile, il Vector3 restituito da questa funzione continuerà a puntare verso la luna sotto la mappa.

Gli sviluppatori che vogliono cambiare la posizione della luna dovrebbero utilizzare le proprietà Lighting.ClockTime o Lighting.GeographicLatitude.

Una variante di questa funzione esiste per ottenere la direzione del sole, Lighting:GetSunDirection() .


Restituzioni

Vector3 rappresentante la direzione della luna dalla posizione 0, 0, 0.

Campioni di codice

Lighting:GetMoonDirection

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

GetMoonPhase

Restituisce la fase attuale della luna. Non è possibile cambiare la fase della luna in modo che questo restituisca sempre 0,75.


Restituzioni

GetSunDirection

Scrivi Parallelo

Restituisce un Vector3 rappresentante la direzione del sole dalla posizione 0, 0, 0.

Nota, quando il sole si è alzato e non è più visibile, il Vector3 restituito da questa funzione continuerà a puntare verso il sole sotto la mappa.

Gli sviluppatori che vogliono cambiare la posizione del sole dovrebbero utilizzare le proprietà Lighting.ClockTime o Lighting.GeographicLatitude.

Una variante di questa funzione esiste per ottenere la direzione della luna, Lighting:GetMoonDirection() .


Restituzioni

Vector3 rappresentante la direzione del sole dalla posizione 0, 0, 0.

Campioni di codice

Lighting:GetSunDirection

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

SetMinutesAfterMidnight

void

Imposta Lighting.TimeOfDay e Lighting.ClockTime al numero minuti specificato dopo mezzanotte.

Come posso fare uno script giorno/notte?

SetMinutesAfterMidnight consente un valore numerico di essere utilizzato, ad esempio in un ciclo giorno/notte Script , senza la necessità di convertire in una stringa nel formato richiesto da Lighting.TimeOfDay . Viene anche consentito di fornire valori maggiori di 24 ore che corrispondono a tempi nel prossimo giorno. Vedi gli script del codice qui sotto per un esemp

L'uso di Lighting.TimeOfDay richiede il tempo per essere normalizzato e una forma di stringa formattata:


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

L'utilizzo di Lighting.ClockTime richiede il tempo per essere normalizzato:


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

L'utilizzo di Lighting:SetMinutesAfterMidnight() non richiede alcun ulteriore elaborazione:


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

Parametri

minutes: number

Il numero di minuti dopo mezzanotte.


Restituzioni

void

Campioni di codice

Setting Lighting Time

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

Eventi

LightingChanged

Questo evento si attiva quando una proprietà Lighting viene modificata o un Sky viene aggiunto o rimosso da Lighting .

Anche se questo evento si attiva quando la maggior parte delle proprietà di Lighting sono cambiate, gli sviluppatori dovrebbero essere a conoscenza delle poche eccezioni:

In casi in cui questo comportamento non è desiderato, l'evento Object.Changed o la funzione Object:GetPropertyChangedSignal() possono essere utilizzati.

Parametri

skyChanged: bool

Campioni di codice

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)