Lighting
*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.
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
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à
L'illuminazione tonalità applicata alle aree che sono prive di luce del cielo, come le aree interne.
L'intensità di illuminazione nel Posto.
Una rappresentazione numerica (in ore) del tempo attuale del giorno usato da Lighting .
Il colore rappresentato dalla luce riflessa dalle superfici opposte al sole o alla luna.
Il colore rappresentato dalla luce riflessa dalle superfici che guardano al sole o alla luna.
Luce ambientale che deriva dall'Ambiente.
Luce speculare ottenuta dall'Ambiente.
Il valore di compensazione per l'esposizione.
La profondità dalla Workspace.CurrentCamera , in studs, a cui la nebbia sarà completamente opaca.
La profondità dalla Workspace.CurrentCamera , in studs, a cui inizia a Mostrarenebbia.
La latitudine geografica, in gradi, della scena, che influenza il risultato di `Class.Lighting time sul posizione del sole e della luna.
Attiva l'illuminazione dinamica basata sul voxel per il Gioco.
L'illuminazione tonalità applicata alle aree esterne.
Controlla quanto sono sfocate le ombre.
Determina il sistema di illuminazione per il rendimento del Mondo3D. Non scriptabile.
Una rappresentazione di 24 ore di tempo reale utilizzato da Lighting .
Metodi
Restituisce il numero di minuti che sono passate dopo mezzanotte per i fini di illuminazione.
Restituisce un Vector3 rappresentante la direzione della luna dalla posizione 0, 0, 0.
Ritorna la fase attuale della luna.
Restituisce un Vector3 rappresentante la direzione del sole dalla posizione 0, 0, 0.
Imposta Lighting.TimeOfDay e Lighting.ClockTime al numero minuti specificato dopo mezzanotte.
Eventi
Proprietà
Ambient
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
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
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 = 0while true dominutesAfterMidnight += 1local minutesNormalised = minutesAfterMidnight % (60 * 24)local hours = minutesNormalised / 60Lighting.ClockTime = hourstask.wait()end
L'uso di Lighting.TimeOfDay richiede il tempo per essere normalizzato e una forma di stringa formattata:
minutesAfterMidnight = 0while true dominutesAfterMidnight += 1local minutesNormalised = minutesAfterMidnight % (60 * 24)local seconds = minutesNormalised * 60local 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..":"..secsLighting.TimeOfDay = timeStringtask.wait()end
L'utilizzo di Lighting:SetMinutesAfterMidnight() non richiede alcun ulteriore elaborazione:
minutesAfterMidnight = 0while true dominutesAfterMidnight += 1Lighting:SetMinutesAfterMidnight(minutesAfterMidnight)task.wait()end
ColorShift_Bottom
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
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
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
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
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 è LegacyLighting.Technology = Enum.Technology.LegacyLighting.ExposureCompensation = 5
FogColor
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 studsLighting.FogStart = 25Lighting.FogEnd = 200
Nota, la nebbia non oscura la skybox.
FogEnd
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 studsLighting.FogStart = 25Lighting.FogEnd = 200
Il colore della nebbia può essere regolato usando Lighting.FogColor .
Nota, la nebbia non oscura la skybox.
FogStart
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 studsLighting.FogStart = 25Lighting.FogEnd = 200
Il colore della nebbia può essere regolato usando Lighting.FogColor .
Nota, la nebbia non oscura la skybox.
GeographicLatitude
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
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
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.
Intent
OutdoorAmbient
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 .
Quality
ShadowSoftness
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
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
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 = 0while true dominutesAfterMidnight += 1local minutesNormalised = minutesAfterMidnight % (60 * 24)local seconds = minutesNormalised * 60local 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..":"..secsLighting.TimeOfDay = timeStringtask.wait()end
L'utilizzo di Lighting.ClockTime richiede il tempo per essere normalizzato:
minutesAfterMidnight = 0while true dominutesAfterMidnight += 1local minutesNormalised = minutesAfterMidnight % (60 * 24)local hours = minutesNormalised / 60Lighting.ClockTime = hourstask.wait()end
L'utilizzo di Lighting:SetMinutesAfterMidnight() non richiede alcun ulteriore elaborazione:
minutesAfterMidnight = 0while true dominutesAfterMidnight += 1Lighting:SetMinutesAfterMidnight(minutesAfterMidnight)task.wait()end
Metodi
GetMinutesAfterMidnight
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
local Lighting = game:GetService("Lighting")
Lighting.TimeOfDay = "14:00:00"
print(Lighting:GetMinutesAfterMidnight())
GetMoonDirection
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
Campioni di codice
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
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
Campioni di codice
local Lighting = game:GetService("Lighting")
Lighting.TimeOfDay = "14:00:00"
Lighting.GeographicLatitude = 41.73
print(Lighting:GetSunDirection())
SetMinutesAfterMidnight
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 = 0while true dominutesAfterMidnight += 1local minutesNormalised = minutesAfterMidnight % (60 * 24)local seconds = minutesNormalised * 60local 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 .. ":" .. secsLighting.TimeOfDay = timeStringtask.wait()end
L'utilizzo di Lighting.ClockTime richiede il tempo per essere normalizzato:
minutesAfterMidnight = 0while true dominutesAfterMidnight += 1local minutesNormalised = minutesAfterMidnight % (60 * 24)local hours = minutesNormalised / 60Lighting.ClockTime = hourstask.wait()end
L'utilizzo di Lighting:SetMinutesAfterMidnight() non richiede alcun ulteriore elaborazione:
minutesAfterMidnight = 0while true dominutesAfterMidnight += 1Lighting:SetMinutesAfterMidnight(minutesAfterMidnight)task.wait()end
Parametri
Il numero di minuti dopo mezzanotte.
Restituzioni
Campioni di codice
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:
- Cambiare Lighting.GlobalShadows non attivera questo evento
- Le proprietà della nebbia, Lighting.FogColor , Lighting.FogStart e Lighting.FogEnd non attiveranno questo evento
In casi in cui questo comportamento non è desiderato, l'evento Object.Changed o la funzione Object:GetPropertyChangedSignal() possono essere utilizzati.
Parametri
Campioni di codice
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)