Qısaca
- Movie Render Graph callback-ləri render işi və ya kadr başlamazdan və tamamlandıqdan sonra xüsusi məntiqi işə sala bilər.
- Callback sinfi MovieGraphScriptBase sinfindən törədilir və uyğun funksiyalar yenidən təyin olunur.
- Kadr üzrə callback-lər üçün Global Output Settings Node daxilindəki Flush Disk Writes Per Shot seçimini aktivləşdirmək olar.
- Callback sinfini Unreal Editor hər dəfə açıldıqda əlçatan etmək üçün müvafiq Python sinfi init_unreal.py faylından import edilə bilər.
Unreal Engine 5.4-dəki Movie Render Graph (MRG) render işlərindən əvvəl və sonra əlavə əməliyyatlar icra etmək üçün callback sistemi təqdim edir. Epic Games-in rəsmi sənədlərinə əsasən, bu əməliyyatları qrafikə əlavə edilən Execute Script Node vasitəsilə konfiqurasiya etmək mümkündür. Bu bələdçi render başlamazdan əvvəl hazırlıq görmək, iş tamamlandıqda çıxış məlumatlarını yoxlamaq və ya kadr üzrə əməliyyat aparmaq istəyən komandalar üçün əsas quraşdırma gedişatını nəzərdən keçirir.
Callback-lər nə vaxt faydalıdır?
Callback render axınının müəyyən mərhələsində icra olunan xüsusi koddur. İşin başlanğıcı və bitməsi üçün job callback-lərindən, hər bir kadrın başlanğıcı və bitməsi üçün isə shot callback-lərindən istifadə etmək olar. Məsələn, iş başa çatdıqdan sonra çıxış məlumatlarına baxmaq və ya kadr tamamlandıqda həmin kadra aid fayl yollarını emal etmək mümkündür.
MRG-dəki Execute Script Node callback-ləri qrafik konfiqurasiyasına əlavə etməyə imkan verir. Callback sinfi Unreal-ın Python API-sindəki MovieGraphScriptBase sinfindən törədilir. Müvafiq funksiyalar @unreal.ufunction(override=True) ilə yenidən təyin olunur. Callback sinfi qeydiyyata alındıqdan sonra onu Execute Script Node daxilindəki seçim menyusundan istifadə etmək mümkündür.
1. Movie Render Queue plaginini və qrafiki hazırlayın
Əvvəlcə Unreal Editor-da Edit > Plugins yolunu izləyərək Rendering bölməsindəki Movie Render Queue plaginini aktivləşdirin və redaktoru yenidən başladın. Layihədə render ediləcək Level Sequence olmalıdır.
Movie Render Graph-a Movie Render Queue vasitəsilə daxil olmaq mümkündür. Epic-in sənədlərindəki ardıcıllıq belədir:
Window > Cinematics > Movie Render Queueyolu ilə Movie Render Queue pəncərəsini açın.Render düyməsinə basıb müvafiq Level Sequence-i seçin.
Settings sütunundakı
Unsaved ConfigmenyusundanMovie Render Graph (Beta)seçimini açın.Create New Assetbölməsindən Movie Render Graph yaradın, ona ad verin və yadda saxlayın.Yaratdığınız qrafik konfiqurasiyasını Settings sütunundan açıb redaktə edin.
Mövcud iş axınında Movie Render Queue (MRQ) ilə Movie Render Graph birlikdə istifadə oluna bilər. MRQ işləri növbəyə düzmək və toplu render üçün interfeys təqdim edir, MRG isə render proseslərini düyün əsaslı qrafiklə konfiqurasiya edir.
2. Python callback sinfini yaradın
Aşağıdakı nümunədə işin başlanması və bitməsi üçün callback-lər göstərilir. on_job_finished render işi tamamlandıqda çağırılır; bu mərhələdən uğurla başa çatma ilə yanaşı ləğv halında da istifadə etmək olar. İşin uğurlu olub-olmadığını nəticə məlumatındakı success atributu ilə yoxlamaq mümkündür.
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 nümunədə iş başlayanda və bitəndə jurnala qeyd əlavə olunur. Öz əməliyyat məntiqinizi yazmazdan əvvəl callback-in hansı mərhələdə işə düşdüyünü və hansı məlumatları aldığını dəqiqləşdirmək vacibdir. İş və qrafik konfiqurasiyaları callback-ə surət şəklində ötürülür; buna görə callback daxilində edilən dəyişikliklər növbədəki ilkin obyekti birbaşa dəyişmir.
Sinfin Execute Script Node menyusunda görünməsi üçün onu qeydiyyata almaq lazımdır. Epic-in nümunəsində sinif sessiya üçün qeydiyyata alınır. Hər açılışda əlçatan olmasını istəyirsinizsə, sinfi /Content/Python/init_unreal.py fayllarından birinə import edə bilərsiniz. Beləliklə, sinif redaktor işə düşəndə yüklənir.
3. Job və shot callback-ləri arasında seçim edin
on_job_start bir render işi başlayanda, on_job_finished isə işin sonunda çalışır. Level Sequence bir neçə kadrdan ibarətdirsə, on_shot_start və on_shot_finished callback-lərindən hər kadr üçün ayrıca istifadə etmək olar. Kadrın başlanğıcı callback-i kadr qurulmazdan əvvəl işə düşür. Kadrın bitməsi callback-inə isə həmin kadrın çıxış məlumatları ötürülür.
Kadr üzrə callback-ləri aktivləşdirməyin iki yolu var: qrafikdəki Global Output Settings Node üzərində Flush Disk Writes Per Shot seçimini işarələmək və ya sinifdə is_per_shot_callback_needed funksiyasını yenidən təyin edib True qaytarmaq. Bu seçimi səbəbsiz yerə aktivləşdirməyin: Epic bildirir ki, faylların diskə yazılmasını gözləmək render müddətini artıra bilər.
Memarlıq və archviz iş axınında nə verir?
Bir neçə kadrı və ya səhnəni növbəyə qoyan vizuallaşdırma komandaları iş və kadr səviyyəli callback-lərlə təkrarlanan əməliyyatları render axınına qoşa bilərlər. İş tamamlandıqda çıxış məlumatlarına və fayl yollarına daxil olmaq, məsələn, kadrların yaratdığı faylları növbəti emal mərhələsinə yönləndirmək üçün əsas yaradır. Bununla belə, sənədlərdə konkret fayl adlandırma standartı və ya hazır archviz avtomatlaşdırması təsvir edilmir; bu məntiq layihəyə uyğun hazırlanmalıdır.
Render farm və ya başqa proseslə inteqrasiya planlaşdırılırsa, MRQ-nun yerli və ayrı prosesdə render seçimləri də əhəmiyyətlidir. Ayrı prosesdə render üçün layihədəki dəyişikliklər yadda saxlanmalıdır. Callback-ləri real təhvil parametrlərinə keçməzdən əvvəl kiçik test işində yoxlayın; xüsusilə kadr üzrə diskə yazma seçiminin müddətə təsirini və sinfin redaktor açılarkən yüklənib-yüklənmədiyini yoxlayın.
Tez-tez rast gəlinən səhvlər
Movie Render Queue plaginini aktivləşdirdikdən sonra redaktoru yenidən başlatmağı unutmaq.
Shot callback-lərinin öz-özünə işləyəcəyini düşünmək; bunlar üçün hər kadr üzrə diskə yazma tələbi ayrıca aktivləşdirilməlidir.
İşin bitməsini yalnız uğurlu render kimi qəbul etmək. Callback ləğv halında da çağırıla bilər; uğur məlumatını yoxlayın.
Callback daxilindəki iş və ya qrafik konfiqurasiyası surətində edilən dəyişikliklərin növbədəki ilkin obyekti yenilədiyini düşünmək.
Hər shot sonunda fayl yazılmasının gözlənilməsinin render müddətini uzada biləcəyini nəzərdən qaçırmaq.
Mənbələr
2 mənbəMənbə mətnləri yenidən dərc edilmir; qısa sitatlar işarələnir, qalanı bizim xülasə və şərhimizdir.
Türkiyədəki memarlıq və vizuallaşdırma ofisləri üçün callback-lərin əsas faydası təkrarlanan rendersonrası yoxlamaları və ya kadr üzrə əməliyyatları daha nizamlı iş axınına qoşmaq potensialıdır. Xüsusilə çoxkadrli təqdimatlarda iş məlumatlarına və fayl yollarına daxil olmaq xüsusi avtomatlaşdırma hazırlamaq üçün faydalı başlanğıc yaradır.
Bununla belə, bu xüsusiyyət öz-özlüyündə hazır render farm həlli deyil; Python sinfini qurmaq və layihə strukturuna uyğun şəkildə sınaqdan keçirmək lazımdır. Hər shot üçün diskə yazılmasını gözləmək render müddətinə təsir edə bilər. Ofislər təhvil verməzdən əvvəl callback-ləri kiçik bir işdə yoxlamalı, ayrı prosesdə renderdən istifadə edirlərsə, layihədəki dəyişiklikləri yadda saxlamağı unutmamalıdırlar.
Tez-tez verilən suallar
Movie Render Graph callback-ləri nə üçündür?
Render işi və ya kadr başlamazdan əvvəl və tamamlandıqdan sonra xüsusi kodu işə salmağa imkan verir. İş və ya kadr səviyyəli callback-ləri qrafikdəki Execute Script Node vasitəsilə konfiqurasiya etmək olar.
Unreal Engine-də shot callback-ləri necə aktivləşdirilir?
Global Output Settings Node daxilindəki `Flush Disk Writes Per Shot` seçimini işarələmək olar. Alternativ olaraq callback sinfində `is_per_shot_callback_needed` funksiyasını yenidən təyin edib `True` qaytarmaq mümkündür.
Callback sinfini redaktor hər dəfə açıldıqda necə əlçatan etmək olar?
Sinfi `/Content/Python/init_unreal.py` fayllarından birinə import etmək olar. Beləliklə, redaktor işə düşəndə sinif yüklənir.



