Belirsiz Işıklar Oluşturulması

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Güçlü bir ışığın yanıp sönenmesi: bir çevrenin tonunu etkileyen güçlü bir güçtür. Örneğin, aynı parlaklıkta ışılan bir evin koridoru, sıcak ve davet edici gibi hissedebilir, ancak eğer ışığını aynı ana sayfakoridoruna eklerseniz, kayı

Tüm 3D yaratımile, herhangi bir hedefe ulaşmak için birçok yol var. Bu rehberde, Studio'da sadece birkaç temel kaynağa sahip olan aletler ve yöntemleri kullanarak hızlı bir ışık animasyonu oluşturabilirsiniz. İçindekiler arasında, bir .rbxm

Kıpırdayan ışıklar oluşturmak için aşağıdaki yöntemi izleyin:

  • Lambanın parlaklığını zamanla etkilemek için bir parlaklık NumberSequence .
  • Her bir süper kızılışın kaç saniye süreceğini belirlemek için bir döngü süresi özelliğidir.
  • Bir Script modelinin çocuğu ile iki özelliğin nasıl çalıştığını yapılandırır MeshParts lambanın ışığını yanık etmek için.

Örnek Lambayı İçe aktarma

Bu rehber, bir yandıraşık ışık tekniğini göstermek için yüksek kaliteli, özelleştirilebilir bir bankacılık Lambası modelini kullanır. Bu modeli kullanarak temel ilkeleri anlayabilirsiniz, sonra Studio veya başka bir üçüncü parti modelleme yazılımınızda oluşturduğunuz kendi modellerinize uygulayabilirsiniz.

BankersLamp.rbxm :

  1. In the Explorer window, right-click Çalışma Alanı . A bir konteyner menüsü displays.

  2. Select Dosyadan Hızlı Erişim… A bir dosya tarayıcı gösterir.

  3. Seç the BankersLamp .rbxm , then click the button. The model displays within the viewport.

Bir Parlaklık Dizisi Oluşturulması

Bir NumberSequence , bir durumömrü boyunca 0'dan 1'e kadar bir dizi sayı değerini temsil eden bir veri türüdür. Bu tür bir veri türü, ışıklanma ışığının parlaklığının değişmesini özelleştirmek için kullanışlabilir, çünkü

Bir NumberSequence 'in X ekseninde zaman vardır ve Y ekseninde ise yüzdesel parlaklık temsil edilir. İşlemci başlangıcı ve bitişindeki her kare bir keypoint ile bel

Lambanın bir parlaklığı varsayılır olarak NumberSequence ı yoksa, bir parlaklık özelliğini oluşturabilirsiniz, bir NumberSequence yazayarlayın, sonra set cadence'inizdeki bir ışığa tıklayarak deneyin, keypoint'ları farklı değerleri ekleyerek sizin set cadence'inizdeki ışığa

Bir parlaklık oluşturmak için bir NumberSequence :

  1. Lamba modeline yeni bir NumberSequencer özelliği ekleyin.

    1. In the Explorer window, select the lamp model.

    2. Özellikler Penceresinde, Özellikler bölümüne gidin ve Özellik Ekleme düğmesine tıklayın. 2>Özellik Ekleme2> diyalog kutusu görüntülenir.

    3. In the Özellik Ekleme diyalogunda,

      1. İsim alanına Parlaklık Kurvası girin.

      2. Click the Type dropdown menu, then select NumberSequencer .

      3. Kaydetme düğmesine tıklayın. Yeni özellik Özellikler sekmesindeki Özellikler bölümünde görüntülenir.

  2. Yeni Parlaklık Kurvası özelliğini seçin ve sonra düğmesine tıklayın. Bir sayı serisi pop-up görüntülenir.

  3. Aşağıdaki eylemlerden birini yapın:

    • Bir noktadaki parlaklığı değiştirmek için bir tuşa tıklayın veya onu yukarı veya aşağı sürükle veya Değer alanına bir değer girin.
    • Yeni kaynak noktalarını grafiğin herhangi bir noktasına tıklayın.
    • Bir tuş değiştiriciyi silmek için, tuş değiştiricisi seçin, sonra Sil düğmesine basın.
    • Parlaklık için rastgele bir menzil eklemek için herhangi bir tuş noktasına tıklayın ve çerçeveleri yukarı veya aşağı sürükle. O anda, ışık pembe çerçevede rastgele bir parlaklık üretir.

Örneğin, aşağıdaki grafik ışığı ilk ışığı için tüm parlaklığa kadar sürekli parlatır, 50% tüm parlaklığı ikinci ışığı için, sonra %75 tüm parlaklığı üçüncü ışığ için.

Bir Loop Oluşturma Süresi Oluşturulur

Şimdi, Lamba ışığının parlaklığının nasıl değiştiğini belirlemek için bir Datatype.NumberSequencer var, lambanın parlaklığının bir ömür boyu boyunca nasıl süreceğini belirlemelisiniz. Diğer bir deyişle, bu ışık döngüsünün tekrarlanmasının süresini kontrol ediyors

Bir döngü süresi oluşturmak için:

  1. Lamba modeline yeni bir döngü süresi özelliği ekleyin.

    1. In the Explorer window, select the lamp model.

    2. Özellikler Penceresinde, Özellikler bölümüne gidin ve Özellik Ekleme düğmesine tıklayın. 2>Özellik Ekleme2> diyalog kutusu görüntülenir.

    3. In the Özellik Ekleme diyalogunda,

      1. İsim alanına, LoopDuration'ı girin.

      2. Click the Type dropdown menu, then select Number .

      3. Kaydetme düğmesine tıklayın. Yeni özellik Özellikler sekmesindeki Özellikler bölümünde görüntülenir.

  2. Yeni LoopDuration özelliğini 1 olarak ayarlar. Bu, NumberSequence'ı bir saniye sonra tekrarlar.

Light Flicker'ı Kodlama

Şimdi, Lambanızın parlaklığını kontrol etmenin tüm elemanlarına sahip olduğunuzdan emin olduğunuzda, her şeyi bir arada getirecek ve ışığı süpürmeye başlayacak bir Script oluşturma zamanı.

Işığın birbirine migreni yazmak için:

  1. In the Explorer window, hover over the lamp model and click the ⊕ button. A contextual menu displays.
  2. Menüden bir Skripti girin.
  3. Yeni senaryoda, takip edilengirin:

local RunService = game:GetService("RunService")
-- Modellere atan özellik değerlerini alır.
local brightnessCurve = script.Parent:GetAttribute("BrightnessCurve")
local loopDuration = script.Parent:GetAttribute("LoopDuration")
-- Değişecek model instanslarına atıfta bulunur.
local light = script.Parent.lamp_hood.SpotLight
local bulb = script.Parent.lightbulb
local beam = script.Parent.lamp_hood.Beam
-- Değişecek özelliklerin orijinal değerlerini saklar.
local origLightBrightness = light.Brightness
local origBeamBrightness = beam.Brightness
local origBulbColor = bulb.Color
-- Belirli bir sürede NumberSequencer (ns) ile ilgili değer alır (nsTime)
function evaluateNumberSequence(ns: NumberSequence, nsTime: number)
-- 0 veya 1'deysek, ilk veya son keypoint'in değerini döndürür, aynı anda.
if nsTime == 0 then
return ns.Keypoints[1].Value
end
if nsTime == 1 then
return ns.Keypoints[#ns.Keypoints].Value
end
-- Aksi takdirde, her bir keypoint'in yüksek sayıda adımını geçer.
for i = 1, #ns.Keypoints - 1 do
-- Mevcut ve bir sonraki giriş noktasını alır.
local currKp = ns.Keypoints[i]
local nextKp = ns.Keypoints[i + 1]
-- nsTime klavye noktalarının saatleri arasındaysa,
if nsTime >= currKp.Time and nsTime < nextKp.Time then
-- nsTime'ın anahtar noktalarının zamanları arasında nerede yattığını hesaplar, bunu alpha olarak çağrır.
local alpha = (nsTime - currKp.Time) / (nextKp.Time - currKp.Time)
-- nsTime'ın alpha kullanıyoruz arasındaki değeri iade eder.
return currKp.Value + (nextKp.Value - currKp.Value) * alpha
end
end
end
RunService.Heartbeat:Connect(function()
-- 0 ile 1 arasındaki zaman için çözümler.
local t = time() / loopDuration
local numberSequenceTime = t - math.floor(t)
-- NumberSequencer'ın değerini bu anda alır.
local brightnessValue = evaluateNumberSequence(brightnessCurve, numberSequenceTime)
-- Bu değere dayanarak parlaklık ve renk özelliklerini ayarlar.
light.Brightness = origLightBrightness * brightnessValue
beam.Brightness = origBeamBrightness * brightnessValue
bulb.Color = Color3.new(
origBulbColor.r * brightnessValue,
origBulbColor.g * brightnessValue,
origBulbColor.b * brightnessValue
)
end)

deneyiminizi oynatırken , Kalp atışı işlevi her kareyi aşağıdakileri yerine getirir:

  1. Mevcut zamana dayanarak <a href="/tutorials/use-case-tutorials/lighting/reference/engine/datatype.numberSequencer">brightnessCurve</a> ve <a href="/tutorials/use-case-tutorials/lighting/reference/engine/datatype.numberSequencer">Datatype.NumberSequencer</a> içindeki bir zaman (numberSequenceTime içindeki bir zaman) çözüyor.
    • Bu, sayı dizisinin başlangıcı ve sonu arasında 0 ve 1 arasındaki zaman arasındadır, her ikisi de aynıdır.
  2. Değer ( brightnessValue ) of the brightnessCurve``Datatype.NumberSequence at time 1> numberSequencerTime1> .
    • evaluateNumberSequence() der ki zamanın herhangi bir NumberSequence ile ilişkili değerini hesaplar.
    • Bu değer, zaman değiştiren özelliklere uygulanacak relatif parlaklık birimi olarak kullanılır.
  3. Lambaların özelliklerini değiştirerek brightnessValue ın ışığın parlaklığı, ışının parlaklığı ve ambarın rengi ile çarpanır.

Bu özelliklerin zamanla değişmesi sonucu aşağıdaki bir parıltı efekti oluşur.