Lighting

Tampilkan yang Tidak Digunakan Lagi

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Tidak Dapat Dibuat
Layanan

Layanan Perangkat Penerangan mengontrol lampu global dalam pengalaman. Ini termasuk berbagai property yang dapat disesuaikan yang dapat Anda gunakan untuk mengubah cara lampu tampak dan berinteraksi dengan objek lain, seperti yang dijelaskan dalam Propinsi Perangkat Penerangan .

Lighting juga dapat berisi objek Atmosphere untuk menyajikan efek atmosfer yang realistis, termasuk kepadatan partikel, kabut, refleksi, dan warna. Lihat Efek Atmosfer untuk detail.

Selain itu, Penerangan (dengan Workspace.CurrentCamera ) mungkin berisi efek post-processing seperti SunRaysEffect dan 1> Class.BlurEffect1>. Lihat 4> Efek Post-Processing4> untuk lebih banyak informasi.

Contoh Kode

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

Rangkuman

Properti

Metode

Acara

Properti

Ambient

Baca Paralel

Warna penerangan diterapkan untuk area yang terletak di bawah langit, seperti area luar.

Item ini bernilai 0, 0, 0 (hitam).

Selama saluran merah, hijau dan biru ini tidak melebihi saluran yang sesuai dalam Lighting.OutdoorAmbient maka perubahan warna akan dibatasi untuk area yang tertutup dari matahari/bulan.Nilai

Catat, ketika Lighting.GlobalShadows dinonaktifkan tidak ada perbedaan antara area yang ditutup dan area yang tidak. Dalam kasus ini Lighting.OutdoorAmbient akan diabaikan dan warna dari propperti Ambient akan diterapkan di mana-mana.

Untuk lebih banyak propperti yang mengubah warna penerangan, silakan lihat Lighting.ColorShiftBottom dan Lighting.ColorShiftTop.

Brightness

Baca Paralel

Intensitas penerangan di tempat.

Mengubah nilai ini akan mengubah dampak cahaya sumber (matahari atau bulan) pada penerangan peta. Saat kecerahan ditetapkan ke 0, tidak ada efek karena Lighting.ColorShift_Top atau Lighting.ColorShift_Bottom sebagai sumber cahaya tidak mem

Sementara property ini tidak dibungkukkan, efeknya dibungkukkan antara 0 dan 2. Artinya menetapkan Kecerahan ke 10 tidak akan berbeda dengan menetapkannya ke 2.

Catatan, Lighting.Ambient dan Lighting.OutdoorAmbient juga dapat digunakan untuk mengubah seberapa terang tempat tampak. Misalnya, menetapkan Lighting.OutdoorAmbient ke 255, 255, 255

ClockTime

Tidak Direplikasi
Baca Paralel

Representasi numerik (dalam jam) waktu hari saat ini yang digunakan oleh Lighting .

Catatan, property ini tidak sesuai dengan waktu nyata hari dan tidak akan berubah selama permainan kecuali jika diubah oleh script.

Untuk mengukur waktu Lighting berbentuk seperti string 24 jam berdurasi Lighting.CurrentTime . Mengubah Lighting.CurrentTime atau menggunakan 1> Class.Lighting:SetMinutesAfterMidnight()1> akan mengubah nilai ini juga.

Menggunakan ClockTime mengharuskan waktu untuk diatur:


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

Menggunakan Lighting.TimeOfDay mengharuskan waktu untuk diatur dan bentuk string:


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

Menggunakan Lighting:SetMinutesAfterMidnight() tidak memerlukan pemrosesan tambahan:


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

ColorShift_Bottom

Baca Paralel

Warna yang diwakili dalam cahaya yang ter反射 di permukaan yang berlawanan dengan matahari atau bulan.

Permukaan Class.BasePart yang dipengaruhi oleh ColorShift_Bottom bergantung pada posisi dan orientasi Class.BasePart relatif terhadap matahari atau bulan. Di mana matahari berada secara langsung di atas Class.BasePart, geseran warna hanya akan diterapkan ke permukaan bawah.

Efek ini dapat ditingkatkan atau dikurangi dengan mengubah Lighting.Brightness.

ColorShift_Bottom mengubah permukaan yang berlawanan menjadi Lighting.ColorShift_Top

Catatan, Lighting.ColorShift_Top dan ColorShift_Bottom akan berinteraksi dengan Lighting.Ambient dan Lighting.OutdoorAmbient property jika mereka lebih besar dari 0, 0, 0. Selain itu, pengaruh

ColorShift_Top

Baca Paralel

Warna yang diwakili oleh cahaya yang ter反射 dari permukaan yang menghadap matahari atau bulan.

Permukaan Class.BasePart yang dipengaruhi oleh ColorShift_Top bergantung pada posisi dan orientasi Class.BasePart relatif terhadap matahari atau bulan. Di mana matahari berada secara langsung di atas Class.BasePart , geseran warna hanya akan diterapkan ke permukaan atas.

Efek ini dapat ditingkatkan atau dikurangi dengan mengubah Lighting.Brightness.

Sementara ColorShift_Top mengubah permukaan yang terpapar cahaya, Lighting.ColorShift_Bottom mengubah permukaan yang terlindung dari cahaya.

Catatan, ColorShift_Top dan ColorShift_Bottom akan berinteraksi dengan Lighting.Ambient dan Lighting.OutdoorAmbient property jika mereka lebih besar dari 0, 0, 0.

EnvironmentDiffuseScale

Baca Paralel

Cahaya ambient yang dihasilkan dari lingkungan.Nilai property ini bervariasi dengan 0.

Ini mirip dengan Lighting.Ambient dan Lighting.OutdoorAmbient property tetapi itu dinamis dan dapat berubah menurut langit dan waktu hari. Rekomended ketika property ini meningkat, Ambient dan OutdoorAmbient berkurang sesuai.

Ini juga membuat skybox muncul di malam hari.

EnvironmentSpecularScale

Baca Paralel

Cahaya spekuler dihasilkan dari lingkungan.Nilai property ini bervariasi 0.

Ini akan membuat objek halus mencerminkan lingkungan. Sangat penting untuk membuat logam lebih realistis.

ExposureCompensation

Baca Paralel

Item ini menentukan jumlah kompensasi eksposisi yang menerapkan bias pada tingkat eksposisi adegan sebelum langkah tonemap. Standar untuk 0.

  • Nilai +1 menunjukkan dua kali lebih banyak eksposur dan -1 berarti setengah eksposur.
  • Nilai 0 menunjukkan tidak ada kompensasi eksposisi yang akan dilakukan.
  • Jangkauan: -5 hingga 5

Properti ini di replikasi dan dapat diatur dari skrip atau Studio.


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

Anda dapat menggunakan property ini untuk menyesuaikan jumlah eksposisi sebelum langkah tonemap untuk menunjukkan lebih banyak rincian di area yang lebih terang atau gelap. Ini diperlukan saat kita beralih ke pipa HDR.

Ketika Lighting.Technology ditetapkan ke Legacy, property ini tidak berpengaruh.


local Lighting = game:GetService("Lighting")
-- Kompenensasi Eksposisi tidak berpengaruh karena Teknologi Lighting adalah Warisan
Lighting.Technology = Enum.Technology.Legacy
Lighting.ExposureCompensation = 5

FogColor

Baca Paralel

Propogasi hilang saat Lighting berisi objek Atmosphere .

Sebuah nilai Color3 yang memberikan warna Lighting fog.

Bagaimana kabut bekerja?

Kabut di Roblox ditunjukkan dalam pesawat perpendekar ke arah Workspace.CurrentCamera . Ini memudar di antara propperti Lighting.FogStart di mana tidak terlihat, ke propperti Lighting.FogEnd di mana itu sepenuhnya opake. Efek kabut adalah mencampur warna

Pada jarak lebih besar dari Lighting.FogEnd, warna akan ditentukan sepenuhnya oleh FogColor. Namun pada jarak antara Lighting.FogStart dan Lighting.FogEnd derajat keseluruhan warna bercampur bergantung pada posisi.

Roblox's fog menggunakan intervensi lini antara Lighting.FogStart dan Lighting.FogEnd . Ini berarti jika Lighting.FogStart adalah 1


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

Catat, kabut tidak menutupi ruang langit.

FogEnd

Baca Paralel

Propogasi hilang saat Lighting berisi objek Atmosphere .

Kedalaman dari Workspace.CurrentCamera, dalam studs, di mana kabut akan benar-benar opak.

Bagaimana kabut bekerja?

Kabut di Roblox ditunjukkan dalam pesawat perpendekarian ke arah Workspace.CurrentCamera tampilan. Ini memudar di antara Lighting.FogStart property di mana tidak terlihat, ke FogEnd property di mana itu benar-benar opake. Efek kabut adalah mencampur warna dengan Class.Lighting.

Pada jarak lebih besar dari FogEnd, warna akan ditentukan sepenuhnya oleh Lighting.FogColor. Namun, pada jarak antara Lighting.FogStart dan FogEnd, derajat ketukan warna bergantung pada posisi.

Roblox's fog menggunakan interpolasi linier antara Lighting.FogStart dan FogEnd. Ini berarti jika Lighting.FogStart adalah 10 dan FogEnd adalah 20, dalam jarak 15 studs fog akan berada di 50%. Itu berarti warna piksel di


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

Warna kabut dapat disesuaikan menggunakan Lighting.FogColor .

Catat, kabut tidak menutupi ruang langit.

FogStart

Baca Paralel

Propogasi hilang saat Lighting berisi objek Atmosphere .

Kedalaman dari Workspace.CurrentCamera, dalam studs, di mana kabut mulai tampilkan.

Bagaimana kabut bekerja?

Kabut di Roblox ditunjukkan dalam pesawat perpendekarian ke arah Workspace.CurrentCamera tampilan. Ini memudar di antara propperti FogStart di mana tidak terlihat, ke properti Lighting.FogEnd di mana itu benar-benar opake. Efek kabut adalah mencampur warna dengan propperti

Pada jarak lebih besar dari Lighting.FogEnd, warna akan ditentukan sepenuhnya oleh Lighting.FogColor. Namun, pada jarak antara FogStart dan Lighting.FogEnd, derajat ketukuhan warna bergantung pada posisi.

Roblox's fog menggunakan interpolasi lini antara FogStart dan Lighting.FogEnd . Ini berarti jika FogStart adalah 10 dan Lighting.FogEnd adalah 20, dalam jarak 15 studs fog akan berada di 50%. Itu berarti warna piksel di 1


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

Warna kabut dapat disesuaikan menggunakan Lighting.FogColor .

Catat, kabut tidak menutupi ruang langit.

GeographicLatitude

Baca Paralel

Latar belakang geografis, dalam derajat, dari adegan, yang mempengaruhi hasil `Class.Lighting waktu pada posisi matahari dan bulan.

Ketika menghitung posisi matahari, tumpukan bumi juga akun.

Mengubah GeographicLatitude akan mengubah posisi matahari di setiap Lighting.TimeOfDay . Pengembang yang mencari untuk mendapatkan posisi matahari atau bulan harus menggunakan Lighting:GetSunDirection() atau Lighting:GetMoonDirection() .

Contoh Kode

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

Baca Paralel

Mengubah lampu dinamis berdasar pada voxel dalam game

Apa yang dilakukan GlobalShadows?

Ketika diatur ke benar, bayangan di render di area yang terlindung tergantung pada posisi matahari dan bulan. Warna penerangan yang diterapkan ke area ini ditentukan oleh propperti Lighting.Ambient. Warna penerangan di semua area lainnya ditentukan oleh propperti Lighting.OutdoorAmbient.

Ketika dinonaktifkan, bayangan tidak dihasilkan dan tidak ada perbedaan di antara area dalam dan luar. Sebagai hasilnya, Lighting.Ambient property menentukan bayangan penerangan dan Lighting.OutdoorAmbient tidak akan melakukan apa-apa.

Bayangan dihitung menggunakan sistem voxel, dan setiap voxel lighting adalah 4x4x4 studs. Ini berarti bahwa objek harus lebih besar dari 4x4x4 studs untuk menampilkan bayangan yang realistis. Bayangan juga dihitung ulang saat BaseParts bergerak.

Catatan, property ini tidak terkait dengan bayangan dari karakter yang ditunjukkan terlepas dari apa yang ditetapkan GlobalShadows.

Untuk informasi lebih lanjut tentang penerangan dinamis Roblox, silakan lihat blog ini posting blog.

Mengubah Bayangan Global

Pengembang yang mengaktifkan pengaturan GlobalShadows akan melihat bahwa menonaktifkannya membuat tempat itu menjadi lebih gelap. Ini karena ketika GlobalShadows dinonaktifkan Lighting.Ambient digunakan untuk menghitung warna lampingan di ruangan dalam dan luar. Kegelapan ini d

Dalam kebanyakan kasus, para pengembang direkomendasikan untuk meninggalkan GlobalShadows karena penampilanvisual superior. Lihat Panduan Lighting Properties untuk referensi.

Tidak Dapat Ditulis Skripnya
Baca Paralel

OutdoorAmbient

Baca Paralel

Warna penerangan yang diterapkan untuk area luar.

Item ini bertaut ke 127, 127, 127.

Selama saluran merah, hijau dan biru dari Lighting.Ambient tidak melebihi saluran yang sesuai di property ini, warna penerangan di luar ruangan akan

Catat, ketika Lighting.GlobalShadows dinonaktifkan, tidak ada perbedaan antara area yang ditutup dari langit dan area yang tidak. Dalam kasus ini, OutdoorAmbient akan diabaikan dan warna dari properti Lighting.Ambient akan diterapkan di mana-mana.

Untuk lebih banyak propperti yang mengubah warna penerangan, silakan lihat Lighting.ColorShift_Bottom dan Lighting.ColorShift_Top.

Tidak Dapat Ditulis Skripnya
Baca Paralel

ShadowSoftness

Baca Paralel

Mengontrol seberapa buruknya bayangan.Nilai property ini bervariasi 0,2.

Properti ini hanya berfungsi ketika mode Lighting.Technology adalah ShadowMap atau Future dan perangkat mampu ShadowMap.

Technology

Baca Paralel
Keamanan Skrip Roblox

Mengesok sistem penerangan untuk menyajikan dunia 3D. Tidak dapat diskripkan dan hanya dapat diubah di Studio. Lihat Enum.Technology untuk opsi yang tersedia dan Teknologi Penerangan untuk deskripsi dan efek visual masing-masing opsi.

TimeOfDay

Baca Paralel

Representasi string 24 jam waktu hari saat ini yang digunakan oleh Lighting .

Catatan, property ini tidak sesuai dengan waktu nyata hari dan tidak akan berubah selama permainan kecuali jika diubah oleh script.

Untuk tindakan numerik dari Lighting waktu penggunaan Lighting.ClockTime . Mengubah Lighting.ClockTime atau menggunakan 1> Class.Lighting:SetMinutesAfterMidnight()1> akan mengubah property ini juga.

Menggunakan TimeOfDay mengharuskan waktu untuk diatur dan bentuk string:


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

Menggunakan Lighting.ClockTime mengharuskan waktu untuk diatur ulang:


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

Menggunakan Lighting:SetMinutesAfterMidnight() tidak memerlukan pemrosesan tambahan:


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

Metode

GetMinutesAfterMidnight

Tulis Paralel

Mengembalikan jumlah menit yang telah berlalu setelah tengah malam untuk tujuan penerangan.

Angka ini akan hampir sama dengan Lighting.ClockTime dikalikan dengan 60.

Angka ini tidak akan selalu sama dengan nilai yang diberikan dalam Lighting:SetMinutesAfterMidnight() karena mengembalikan menit setelah tengah malam pada hari saat ini.

Untuk waktu Lighting berbentuk string, lihat Lighting.TimeOfDay .


Memberikan nilai

Jumlah menit setelah tengah malam.

Contoh Kode

Lighting:GetMinutesAfterMidnight

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

GetMoonDirection

Tulis Paralel

Mengembalikan Vector3 mewakili arah bulan dari posisi 0, 0, 0.

Catatan, ketika bulan memiliki 'atur' dan tidak lagi terlihat, Vector3 yang dikembalikan oleh fungsi ini akan terus menunjuk ke bulan di bawah peta.

Pengembang yang ingin mengubah posisi bulan harus menggunakan Lighting.ClockTime atau Lighting.GeographicLatitude属性.

Sebuah varian dari fungsi ini ada untuk mendapatkan arah matahari, Lighting:GetSunDirection() .


Memberikan nilai

Vector3 mewakili arah bulan dari posisi 0, 0, 0.

Contoh Kode

Lighting:GetMoonDirection

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

GetMoonPhase

Mengembalikan fase saat ini bulan. Tidak ada cara untuk mengubah fase bulan sehingga ini akan selalu kembali 0,75.


Memberikan nilai

GetSunDirection

Tulis Paralel

Mengembalikan a Vector3 mewakili arah matahari dari posisi 0, 0, 0.

Catatan, ketika matahari telah tenggelam dan tidak lagi terlihat, Vector3 yang dikembalikan oleh fungsi ini akan terus menunjuk ke matahari di bawah peta.

Pengembang yang ingin mengubah posisi matahari harus menggunakan Lighting.ClockTime atau Lighting.GeographicLatitude属性.

Sebuah varian dari fungsi ini ada untuk mendapatkan arah bulan, Lighting:GetMoonDirection() .


Memberikan nilai

Vector3 mewakili arah matahari dari posisi 0, 0, 0.

Contoh Kode

Lighting:GetSunDirection

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

SetMinutesAfterMidnight

void

Tetapkan Lighting.TimeOfDay dan Lighting.ClockTime ke nomor menit yang diberikan setelah pukul 12:00 tengah malam.

Bagaimana cara membuat naskah siang/malam?

SetMinutesAfterMidnight mengizinkan nilai numerik yang dapat digunakan, misalnya dalam siklus hari/malam Script, tanpa perlu dikonversi ke string dalam format yang dibutuhkan oleh Lighting.TimeOfDay . Ini juga mengizinkan nilai lebih dari 24 jam untuk diberikan yang sesuai dengan waktu p

Menggunakan Lighting.TimeOfDay mengharuskan waktu untuk diatur dan bentuk string:


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

Menggunakan Lighting.ClockTime mengharuskan waktu untuk diatur ulang:


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

Menggunakan Lighting:SetMinutesAfterMidnight() tidak memerlukan pemrosesan tambahan:


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

Parameter

minutes: number

Jumlah menit setelah tengah malam.


Memberikan nilai

void

Contoh Kode

Setting Lighting Time

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

Acara

LightingChanged

Acara ini diaktifkan ketika propinsi Lighting diubah atau propinsi Sky ditambahkan atau dihapus dari Lighting .

Meskipun acara ini menyebabkan ketika kebanyakan properti Lighting diubah, pengembang harus menyadari beberapa pengecualian:

Dalam kasus di mana perilaku ini tidak diinginkan, acara Object.Changed atau fungsi Object:GetPropertyChangedSignal() dapat digunakan.

Parameter

skyChanged: bool

Contoh Kode

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)