Kısaca
- Movie Render Graph callback’leri, render işi veya çekim başlamadan ve tamamlandıktan sonra özel mantık çalıştırabilir.
- Callback sınıfı, MovieGraphScriptBase sınıfından türetilip ilgili fonksiyonlar geçersiz kılınarak hazırlanır.
- Çekim bazlı callback’ler için Global Output Settings Node içindeki Flush Disk Writes Per Shot seçeneği etkinleştirilebilir.
- Callback sınıfını her Unreal Editor açılışında kullanılabilir kılmak için ilgili Python sınıfı init_unreal.py dosyasından içe aktarılabilir.
Unreal Engine 5.4’teki Movie Render Graph (MRG), render işlerinden önce ve sonra ek işlemler çalıştırmak için callback sistemi sunuyor. Epic Games’in resmî belgelerine göre bu işlemler, grafiğe eklenen Execute Script Node üzerinden yapılandırılabiliyor. Bu rehber; render başlangıcında hazırlık yapmak, iş tamamlandığında çıktı verilerini incelemek veya çekim bazında işlem yürütmek isteyen ekipler için temel kurulum akışını ele alıyor.
Callback’ler ne zaman işe yarar?
Callback, render akışının belirli bir noktasında çalışan özel koddur. İş başlangıcı ve bitişi için job callback’leri; her bir çekimin başlangıcı ve bitişi için shot callback’leri kullanılabilir. Örneğin, iş tamamlandıktan sonra çıktı verilerine bakmak veya çekim tamamlandığında o çekime ait dosya yollarını ele almak mümkün olur.
MRG’deki Execute Script Node, callback’leri grafik yapılandırmasının içine eklemeyi sağlar. Callback sınıfı, Unreal’ın Python API’sindeki MovieGraphScriptBase sınıfından türetilir. İlgili fonksiyonlar @unreal.ufunction(override=True) ile geçersiz kılınır. Bir callback sınıfı kaydedildikten sonra Execute Script Node içindeki seçim menüsünden kullanılabilir.
1. Movie Render Queue eklentisini ve grafiği hazırlayın
Önce Unreal Editor’da Edit > Plugins yolunu izleyerek Rendering bölümündeki Movie Render Queue eklentisini etkinleştirin ve editörü yeniden başlatın. Projede render edilecek bir Level Sequence bulunması gerekir.
Movie Render Graph’a Movie Render Queue üzerinden erişilir. Epic’in belgesindeki akış şöyledir:
Window > Cinematics > Movie Render Queueyoluyla Movie Render Queue penceresini açın.Render düğmesine basıp ilgili Level Sequence’i seçin.
Settings sütunundaki
Unsaved ConfigmenüsündenMovie Render Graph (Beta)seçeneğini açın.Create New Assetbölümünden Movie Render Graph oluşturup adlandırın ve kaydedin.Oluşturduğunuz grafik yapılandırmasını Settings sütunundan açıp düzenleyin.
Mevcut iş akışında Movie Render Queue (MRQ) ile Movie Render Graph birlikte kullanılabilir. MRQ, işleri sıraya koyma ve toplu render için arayüz sağlarken MRG, render işlemlerini düğüm tabanlı bir grafikle yapılandırır.
2. Python callback sınıfını oluşturun
Aşağıdaki örnek, işe başlama ve iş bitişi callback’lerini gösterir. on_job_finished çağrısı, render işi tamamlandığında çalışır; bu nokta başarılı bitişin yanı sıra iptal durumunda da kullanılabilir. Sonuç bilgisindeki success niteliğiyle işin başarılı olup olmadığı kontrol edilebilir.
import unreal
@unreal.uclass()
class CallbackOverrides(unreal.MovieGraphScriptBase):
@unreal.ufunction(override=True)
def on_job_start(self, in_job_copy):
super().on_job_start(in_job_copy)
unreal.log("Render işi başlıyor")
@unreal.ufunction(override=True)
def on_job_finished(self, in_job_copy, in_output_data):
super().on_job_finished(in_job_copy, in_output_data)
unreal.log("Render işi tamamlandı veya iptal edildi")Bu örnekte iş başlangıcında ve bitişinde günlük kaydı oluşturuluyor. Kendi işlem mantığını eklemeden önce callback’in hangi aşamada çalıştığını ve hangi verileri aldığını netleştirmek önemlidir. İş ve grafik yapılandırmaları callback’e kopya olarak iletilir; bu nedenle callback içinde yapılan değişiklikler kuyruktaki asıl varlığı doğrudan değiştirmez.
Sınıfın Execute Script Node menüsünde görünmesi için kaydedilmesi gerekir. Epic’in örneğinde sınıfı kaydetme işlemi oturum için yapılır. Her açılışta erişilebilir olmasını isteyenler, sınıfı /Content/Python/init_unreal.py dosyalarından birine import edebilir. Bu, sınıfın editör başlangıcında yüklenmesini sağlar.
3. Job ve shot callback’leri arasında seçim yapın
on_job_start tek bir render işi başlarken; on_job_finished işin sonunda çalışır. Bir Level Sequence birden fazla çekim içeriyorsa on_shot_start ve on_shot_finished her çekim için ayrı ayrı kullanılabilir. Shot başlangıcı callback’i, çekim kurulmadan önce çalışır. Shot bitişi callback’ine ise o çekimin çıktı verileri iletilir.
Çekim bazlı callback’leri etkinleştirmenin iki yolu vardır: grafikteki Global Output Settings Node üzerinde Flush Disk Writes Per Shot seçeneğini işaretlemek veya sınıfta is_per_shot_callback_needed fonksiyonunu geçersiz kılıp True döndürmek. Bu seçimi gelişigüzel açmayın: Epic, dosyaların diske yazılmasını beklediği için bu ayarın render süresini artırabileceğini belirtiyor.
Mimarlık ve archviz iş akışında ne sağlar?
Birden fazla planı veya sahneyi sıraya koyan görselleştirme ekipleri, iş ve çekim düzeyindeki callback’lerle tekrar eden işlemleri render akışına bağlayabilir. İş tamamlandığında çıktı verilerine ve dosya yollarına erişmek, örneğin çekimlerin ürettiği dosyaları sonraki bir işleme adımına yönlendirmek için temel oluşturur. Ancak belgeler belirli bir dosya adlandırma standardı veya hazır bir archviz otomasyonu tarif etmiyor; bu mantığın projeye göre geliştirilmesi gerekir.
Render farm veya farklı bir süreçle entegrasyon hedefleniyorsa, MRQ’nun yerel ve ayrı süreçte render seçenekleri de önem taşır. Ayrı süreçte render için proje değişikliklerinin kaydedilmiş olması gerekir. Callback’leri gerçek teslim ayarlarına geçmeden önce küçük bir test işinde doğrulayın; özellikle çekim bazlı disk yazma seçeneğinin süreye etkisini ve sınıfın editör başlangıcında yüklenip yüklenmediğini kontrol edin.
Sık yapılan hatalar
Movie Render Queue eklentisini etkinleştirdikten sonra editörü yeniden başlatmayı atlamak.
Shot callback’lerinin kendiliğinden çalışacağını varsaymak; bunlar için per-shot disk yazma gereksinimi ayrıca etkinleştirilmelidir.
İş bitişini yalnızca başarılı render olarak yorumlamak. Callback iptal durumunda da çağrılabilir; başarı bilgisini kontrol edin.
Callback içindeki kopya iş veya grafik yapılandırması üzerinde yapılan değişikliklerin kuyruktaki asıl varlığı güncellediğini sanmak.
Her shot sonunda dosya yazımının beklenmesinin render süresini uzatabileceğini gözden kaçırmak.
Sık sorulan sorular
Movie Render Graph callback’leri ne işe yarar?
Render işi veya çekim başlamadan ve tamamlandıktan sonra özel kod çalıştırmayı sağlar. İş ya da çekim düzeyindeki callback’ler, grafikteki Execute Script Node üzerinden yapılandırılabilir.
Unreal Engine’de shot callback’leri nasıl etkinleştirilir?
Global Output Settings Node içindeki `Flush Disk Writes Per Shot` seçeneği işaretlenebilir. Alternatif olarak callback sınıfında `is_per_shot_callback_needed` fonksiyonu geçersiz kılınarak `True` döndürülebilir.
Callback sınıfı her editör açılışında nasıl kullanılabilir?
Sınıf, `/Content/Python/init_unreal.py` dosyalarından birine import edilebilir. Böylece editör başlangıcında yüklenmesi sağlanır.
Kaynaklar
2 kaynakKaynak metinler yeniden yayımlanmaz; kısa alıntılar tırnak içinde verilir, geri kalanı özgün özet ve yorumdur.
Türkiye’de mimarlık ve görselleştirme ofisleri için callback’lerin asıl değeri, tekrarlanan render sonrası kontrolleri veya çekim bazlı işlemleri daha düzenli bir akışa bağlama potansiyeli. Özellikle çok planlı sunumlarda iş verisi ve dosya yollarına erişebilmek, özel otomasyon geliştirmek için yararlı bir başlangıç sunuyor.
Bununla birlikte, bu özellik tek başına hazır bir render farm çözümü değil; Python sınıfının kurulumu ve proje yapısına uygun şekilde test edilmesi gerekiyor. Shot başına disk yazımını beklemek süreyi etkileyebilir. Ofisler, teslim öncesinde callback’leri küçük bir işte doğrulamalı; ayrı süreçte render kullanılıyorsa proje değişikliklerini kaydetmeyi unutmamalı.




Yorumlar 0