# Unreal Engine Movie Render Graph’ta render callback’leri kurma rehberi

Kaynak: https://3dsinifi.com/haber/unreal-engine-movie-render-graphta-render-callbackleri · Kategori: İpuçları · Yayın: 15 Ekim 2026

> Unreal Engine 5.4’ün Movie Render Graph sistemi, render işinden veya her çekimden önce ve sonra Python callback’leri çalıştırabiliyor. Bu rehber, Execute Script Node ile kurulum ve dikkat edilmesi gerekenleri açıklıyor.

## 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:

1. `Window > Cinematics > Movie Render Queue` yoluyla Movie Render Queue penceresini açın.
2. Render düğmesine basıp ilgili Level Sequence’i seçin.
3. Settings sütunundaki `Unsaved Config` menüsünden `Movie Render Graph (Beta)` seçeneğini açın.
4. `Create New Asset` bölümünden Movie Render Graph oluşturup adlandırın ve kaydedin.
5. 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.

```python
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.

## Pro ipucu
Shot callback’lerini açmadan önce gerçekten çekim başına işlem gerekip gerekmediğini belirleyin; Flush Disk Writes Per Shot render süresini artırabilir.

## 3dsınıfı yorumu
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ı.

## Kaynaklar
- [dev.epicgames.com](https://dev.epicgames.com/documentation/en-us/unreal-engine/movie-render-pipeline-in-unreal-engine) (özet)
- [dev.epicgames.com](https://dev.epicgames.com/documentation/en-us/unreal-engine/running-pre-and-post-render-callback-mrg-scripts-in-unreal-engine?application_version=5.4) (özet)

_Yapay zekâ ile yazıldı, kaynaklarla doğrulandı. © 3dsınıfı_
