GrandMA3 Plugin ile Phaser Kontrolü: Lua Temelli Yaklaşım
GrandMA3'te Lua tabanlı plugin yazarak phaser parametrelerini dinamik olarak nasıl kontrol edeceğinizi öğrenin.
GrandMA3'te Plugin ile Phaser Kontrolü
GrandMA3'ün güçlü Lua tabanlı plugin altyapısı, phaser engine'ini doğrudan kod üzerinden yönetmenize olanak tanır. Sahne programlama sürecini otomatikleştirmek veya özel kullanıcı arayüzleri oluşturmak isteyenler için bu yaklaşım büyük esneklik sağlar.
Phaser Nedir ve Neden Plugin ile Kontrol Edilir?
GrandMA3'teki Phaser, fixture'lar arasında döngüsel hareketler ve efektler oluşturan motor sistemidir. Hız, genişlik, ofset ve dalga formu gibi parametreler standart arayüzden yönetilebilse de, plugin yazarak bu değerleri dinamik olarak, harici girdilere veya zaman bazlı hesaplamalara göre değiştirmek mümkün olur.
Temel Plugin Yapısı
GrandMA3'te bir plugin oluşturmak için önce konsolun Menu > Plugin bölümüne gidin ve yeni bir plugin objesi ekleyin. Her plugin bir Main() fonksiyonu içermelidir:
local function Main(display_handle, argument)
-- Kodunuz buraya
end
return Mainİpucu: Plugin dosyalarınızı düzenlemek için dahili editör yerine harici bir metin editörü kullanıp dosyayı import etmek, özellikle uzun scriptlerde çok daha pratiktir.
Phaser Parametrelerine Erişim
Plugin içinden phaser verilerine ulaşmak için ObjectPath ve GetObj fonksiyonlarını kullanırsınız. Aktif bir preset veya sequence üzerindeki phaser bloğuna şu şekilde erişebilirsiniz:
local phaserObj = GetObj("Root.ShowData.Presets[1].PhaserSteps[1]")Phaser step'in hız değerini okumak veya yazmak için GetAttributeIndex ve SetAttributeIndex metodları devreye girer. Hangi attribute index'inin hangi parametreye karşılık geldiğini anlamak için konsolun DataPool tablosuna başvurabilirsiniz.
Hız ve Ofset Kontrolü
Aşağıdaki örnek, bir phaser'ın hızını plugin üzerinden değiştirmenin temel yolunu gösterir:
local function SetPhaserSpeed(speed)
local cmd = "Attribute 'PhaserSpeed' at " .. speed
Cmd(cmd)
end
SetPhaserSpeed(0.5)Cmd() fonksiyonu, GrandMA3 komut satırına doğrudan string göndererek fixture veya efekt parametrelerini değiştirmenin en güvenilir yollarından biridir. Bu sayede phaser hızını, ofsetini veya genişliğini programatik olarak ayarlayabilirsiniz.
Gelişmiş Kullanım: Dinamik Ofset Hesaplama
Birden fazla fixture arasında phaser ofsetini eşit aralıklarla dağıtmak (fan efekti) sık karşılaşılan bir ihtiyaçtır. Plugin ile bu işlem otomatize edilebilir:
- Seçili fixture sayısını
SelectionCount()ile alın - 360 dereceyi fixture sayısına bölün
- Her fixture için hesaplanan ofseti Cmd() ile uygulayın
local count = SelectionCount()
local step = 360 / count
for i = 1, count do
local offset = (i - 1) * step
Cmd("Fixture " .. i .. " Attribute 'PhaserOffset' at " .. offset)
endÖnemli Not: SelectionCount() fonksiyonu yalnızca aktif programmer seçimini döndürür. Plugin'i çalıştırmadan önce ilgili fixture'ların seçili olduğundan emin olun.Plugin'i Executor'a Bağlamak
Hazırladığınız plugin'i bir executor butonuna atayarak sahne sırasında anında çağırabilirsiniz. Bunun için:
- Executor üzerine sağ tıklayın ve Assign seçin
- Plugin objenizi listeden seçin
- Executor modunu Flash veya Go olarak ayarlayın
Bu yöntem, karmaşık phaser manipülasyonlarını tek bir tuşa indirger ve canlı performans sırasında hız kazandırır. Lua'nın sunduğu matematiksel fonksiyonlar ve GrandMA3'ün API katmanı birleştiğinde, phaser kontrolü üzerinde neredeyse sınırsız bir esneklik elde edersiniz.