
Render Farm Üzerinde USD Kullanan Maya Sahnelerini Render Etmek
Genel bakış
Universal Scene Description, Pixar'ın kurum içi formatı olmaktan çıkarak pek çok Maya pipeline'ının omurgasına dönüştü. Stüdyonuz katmanlı USD aşamalarından oluşan shot'lar oluşturuyorsa, departmanlar arasında yayımlanmış asset'lere referans veriyorsa ve sonucu bir procedural aracılığıyla render motoruna iletiyorsa USD'nin artık bir yan deney olmadığını biliyorsunuzdur — bu, sahnenin omurgasıdır. Bir deadline baskısıyla karşılaşana kadar daha az fark edilen şey ise bir iş istasyonunda mükemmel şekilde render edilen sahnenin başka bir farm üzerinde aynı sonucu vermeyeceğidir. Farm'ın doğru MayaUSD derlemesine, doğru render motoru USD desteğine ve aşamanın referans verdiği her asset yolunu çözecek bir mekanizmaya sahip olması gerekir. Bunlardan biri eksik olduğunda net bir hata mesajı almazsınız — başarısız kareler, sessiz geri dönüşler ya da basitçe orada olmayan geometri ile karşılaşırsınız.
Biz yönetilen bir render farm işletiyoruz ve Maya+USD işleri, stüdyoların iş istasyonlarından taşımakta en çok zorlandığı workflow'lardan biri. Bu rehber, USD'nin uzaktan neden kendi kendine yeten bir .ma dosyasına kıyasla daha zor render edildiğini, çalışması için neyin hizalanması gerektiğini ve bunu bizim tarafımızda nasıl ele aldığımızı — kolay hata yapılan kısımlar dahil — adım adım açıklıyor.

Maya USD render pipeline: katmanlı USD aşamalarından MayaUSD eklentisine, Arnold USD procedural'a ve render edilmiş karelere, asset çözümü ve ortam eşleştirmesi ile birlikte.
USD neden kendi kendine yeten bir sahneden daha zor uzaktan render edilir
Geleneksel bir Maya sahnesi büyük ölçüde kendi kendini açıklayıcı niteliktedir: açın, mesh'ler ve materyaller yerli yerinde, render motorunu yönlendirin ve kareler çıkar. USD ile yönlendirilen bir sahne ise bitmiş bir üründen çok bir tarife benzer. .usd, .usda veya .usdc dosyaları, yükleme zamanında nihai bir aşama oluşturmak üzere birleştirilen katmanlı talimatlar kümesidir — sublayer'lar, referanslar, payload'lar ve varyantlar. Bu birleştirme güçlüdür; ancak şu anlama gelir: render eden makinede üç ayrı öğenin birbirinin yerini tutarak mevcut ve uyumlu olması gerekir.
Birincisi, MayaUSD eklentisinin kendisidir. MayaUSD, Maya'nın USD aşamalarını okuyup oluşturmasına ve render'a iletmesine olanak tanıyan köprüdür. Farm'ın Maya'sında MayaUSD yüklü değilse ya da sanatçılarınızın oluşturduğu sürümden farklı biçimde aşamayı oluşturan bir sürüm varsa sahne ya açılamaz ya da USD üzerinden gelen parçalar eksik açılır.
İkincisi, asset yol çözümlemesidir. Bir USD aşaması, diğer dosyalara — geometri, texture'lar, iç içe geçmiş USD katmanları — yol üzerinden referans verir. İş istasyonunuzda bu yollar çözümlenir çünkü veriler aşamanın beklediği yerde bulunur. Bir farm üzerinde, aynı dizin yapısı ve aynı çözücü davranışı yeniden üretilmedikçe bu referansların yarısı hiçbir şeye işaret etmez. "Evde çalışan" USD sahnesinin farm'dan boş gelmesinin en yaygın nedeni budur: piksel render edilmiştir, yalnızca referanslar bulunamaz.
Üçüncüsü, render motorunun USD desteğidir. Render motoru, Maya'nın kendisine ilettiği USD verisini anlamak zorundadır. Arnold için bu yol, Arnold USD procedural üzerinden geçer; bu procedural, tüm aşamayı önce Maya'ya genişletmek yerine render zamanında USD içeriğini okur. Procedural yüklü değilse ya da sürümü veriyle eşleşmiyorsa render motoru okuyamadıklarını sessizce atlar.
Bu aynı zamanda bazı bulut render hizmetlerinin iyi bilinen açığının ortaya çıktığı yerdir. AWS'nin kendi Deadline Cloud for Maya takipçisi, tam olarak bu tür sorunları ele alan MayaUSD desteğiyle ilgili açık bir sorun içermektedir (aws-deadline/deadline-cloud-for-maya#409). Bu, USD sahnelerinin güvenilir biçimde render edilmesi için uçtan uca çözülmesi gereken altyapı türünü güzel biçimde örneklemektedir. Sonuç olarak USD rendering, açıp kapanan tek bir özellik değil — tümünün uyum içinde olması gereken sürümler ve yollar zinciridir.

Maya'nın USD Katman Düzenleyicisi'nde katmanlı bir USD aşaması — sublayer'lar ve referanslar görünür — yanında Arnold RenderView çıktısı.
Farm'ımızda Maya + USD'yi nasıl render ediyoruz
Yaklaşımımız tek bir kare bile kuyruğa girmeden önce başlar: ortamı sahnenize göre eşleştiririz, sahnenizden sabit bir farm imajına uymalarını beklemeyiz. Bir stüdyo bize USD tabanlı bir Maya işi gönderdiğinde Maya sürümünü, MayaUSD derlemesini, render motorunu ve asset'lerin oluşturulduğu USD sürümünü doğrularız; ardından node'ları buna göre hazırlarız. Amaç, aşamanın node'larımız üzerinde, sanatçılarınızın makinelerinde oluştuğu gibi oluşmasıdır — aynı eklenti davranışı, aynı çözüm, aynı procedural.
Render tarafında, Arnold ile Maya USD için en önemli iki parçanın her ikisinin de temiz biçimde başlatılması gerekir: aşamayı Maya içinde oluşturmak için MayaUSD ve render zamanında USD içeriğini okumak için Arnold USD procedural. Node havuzu genelinde her ikisinin de doğru şekilde yüklenip çalıştığı production Maya işleri render ettik — bu, "farm USD desteği iddia ediyor mu" değil "bu aşama, bu referanslarla, sanatçının beklediği kareleri üretiyor mu" sorusunun pratikte gerçek testidir. Arnold burada CPU node'larımız üzerinde çalışır ki bu, pek çok stüdyonun nihai kalitedeki USD çalışmaları için Arnold'ı kullandığı biçimle örtüşür; aynı sahneler projenin gerektirdiği durumlarda GPU üzerinde de çalışabilir.
Belirtmeye değer bir ayrıntı: birkaç pipeline'dan geçmiş USD sahneleri çoğunlukla artık kullanılmayan render motorlarına ait eklenti referansları ve kopuk node öznitelikleri barındırır. Stüdyonun aylarca önce terk ettiği bir eklentiyi hâlâ isteyen ya da son render yolunda yer almayan bir motordan öznitelikler taşıyan sahneler görüyoruz. Node'larımız üzerinde bu artıklar zararsızdır — Maya onların üzerinden geçerek gerçekten kullandığınız motor ile render eder. Temiz log'lar istiyorsanız göndermeden önce Maya'da bilinmeyen eklenti isteklerini ve artık node'ları kaldırabilirsiniz; ancak bu estetik bir tercih meselesidir, bir render'ı durduran şey bu değildir. "Zararsız artık" ile "aslında başarısız olan şey" arasındaki farkı bilmek, USD render'ın sorunsuz gitmesini sağlayanın büyük bölümünü oluşturur.
Donanım konusunda beklentileri netleştirmek adına dürüst bir kısıtlamayı paylaşalım: GPU node'larımız, GPU başına 32 GB belleğe sahip RTX 5090 kartlarla donatılmıştır ve bu bellek kart başına ayrıdır — bir makinedeki iki kart arasında havuzlanmaz. CPU-Arnold USD çalışmaları için bu tavan çoğunlukla gündeme gelmez; ancak çok büyük texture'lar ya da yoğun volumetrik içerikli sahnelerde GPU yolunu kullanıyorsanız, bir iş başladıktan sonra bir kare sığmazlık sorunuyla karşılaşmak yerine GPU başına bellek kullanımını önceden kontrol etmenizi öneririz.
Mevcut dosya alanınızdan render alın, yeniden yüklemek zorunda kalmayın
Yukarıda açıklanan asset çözüm sorununa, stüdyo projesini bağlı bir dosya alanında tutuyorsa temiz bir çözüm vardır. Asset'leriniz LucidLink üzerinde yaşıyorsa aynı dosya alanını render node'larına mount edebiliriz; böylece USD aşaması, referanslarını sanatçılarınızın gördüğü verilerle tam olarak çözümler — devasa bir asset kütüphanesini yeniden yüklemek ya da dizin yapısını el ile yeniden oluşturmak gerekmez. Aşama gerçek yollar mount edildiği için gerçek yollarla oluşur.
Bu, paketlenmiş tek dosyalı bir sahneye kıyasla USD için çok daha önemlidir; çünkü USD tam da bu harici referanslara dayanır. Gerçeğin kaynağını mount etmek, "referans bulunamadı" hatalarının tüm bir sınıfını ortadan kaldırır — yanlış kopyalanacak hiçbir şey yoktur çünkü farm, stüdyonun okuduğu aynı ağacı okur. LucidLink ile çalışan ekipler için bu genellikle, uğraşlı bir yükleme-ve-umarım-çalışır döngüsü ile sadece çözümlenen bir render arasındaki fark olur.

Render node'larına canlı olarak mount edilen bir stüdyo LucidLink dosya alanı — node'lar asset'leri yerinde okur, yeniden yükleme gerekmez.
Dahil olanlar — yalnızca makineler değil, lisanslar ve DCC uygulamaları
Bizden adanmış kapasite kiraladığınızda render motoru lisansları ve DCC uygulamaları da bunun bir parçasıdır. Maya, render motoru — Arnold, V-Ray, Redshift, Octane, Cycles — ve destekleyici eklentiler, kendinizin getirip node başına lisanslayacağınız şeyler olmak yerine sağladığımız şeyin içinde yer alır. USD işi için bu genellikle Arnold lisanslamasının çalışmanın bir parçası olarak bizim tarafımızda halledildiği anlamına gelir; bloktaki her node için ayrıca render lisansı temin etmek zorunda kalmazsınız.
Bu, makine başına oranın, üzerine render motoru lisanslarını ekleyene kadar daha düşük görünebileceği bare-metal ya da kendin inşa et yaklaşımlarına karşı değerlendirilmeye değer bir noktadır — bu lisanslar, kendi ana bilgisayarınızdaki her node başına yılda birkaç yüzden bin doların çok üzerine kadar çıkabilir. Onları bir arada sunmak, modelin sessiz sedasız iş yapan kısmıdır: render edilen sahne, Maya, MayaUSD, procedural ve motor lisansının aynı anda mevcut olduğu sahnedir; bunları birlikte sağlamak bu zinciri sağlam tutmanın yoludur.
Gerçek bir geçiş: Bulut zamanlayıcısı çalıştıramayınca Maya ve USD sahneleri
Somutlaştırmak gerekirse: yakın zamanda, mevcut bulut zamanlayıcısı kurulumu tam olarak bu sorunla başarısız olan — Maya'nın söz konusu ortamda USD asset'leriyle çalışamadığı — bir İngiliz görsel efekt stüdyosuyla çalıştık. Pipeline'ları, LucidLink dosya alanı üzerinde Arnold ile Maya'yı kullanıyordu. Dosya alanlarını node'lara mount ettik, ortamı sahnelerine göre eşleştirdik ve log'larda MayaUSD ile Arnold USD procedural'ın makinelerin tamamında doğru şekilde başlatıldığını ve render edildiğini doğruladık. Sahne, yaşamının önceki dönemlerinden kalan bazı artık referanslar taşıyordu; bunlar sorunsuz geçildi ve kareler çıktı. Stüdyo "USD render'larımız sürekli başarısız oluyor" noktasından temiz bir çalışmaya geçti ve oradan ölçeklendirdi. Stüdyonun kimliğini paylaşmıyoruz; ancak workflow — Maya, USD, Arnold, LucidLink — artık istisnadan çok norm haline gelmektedir.
Herhangi bir farm'a USD işi göndermeden önce hazırlık kontrol listesi
Bizimle ya da başka bir yerde render alsanız da, farm'da bir USD sahnesinin sizi şaşırtmaması için önceden doğrulanmaya değer başlıca noktalar şunlardır:
| Kontrol | Neden önemlidir |
|---|---|
| MayaUSD derlemesi authoring sürümünüzle eşleşiyor | Aşama, sanatçılarınızın makinelerinde oluştuğu gibi oluşmalıdır |
| Render motorunun USD desteği var (ör. Arnold USD procedural) | Motor USD verisini okumalı, sessizce atlamış olmamalıdır |
| Asset yolları render tarafında çözümleniyor | Kaynak dosya alanını mount edin ya da tam dizin ağacını yeniden oluşturun |
| Asset'lerin USD sürümü biliniyor | Sürüm uyuşmazlıkları, katman ve varyantların oluşturulma biçimini değiştirir |
| Node başına render motoru lisansı mevcut | Lisanssız bir node, filigranla ya da hiç render edemez |
| Artık eklenti referansları tespit edildi | Zararsız olanı, gerçekten başarısız olandan ayırt edin |
| GPU başına bellek kontrol edildi (GPU'da render ediliyorsa) | Yoğun veri içeren USD sahneleri tek bir kartın belleğini aşabilir |
Başarısız USD render'ların büyük çoğunluğu ilk üç satırdan birine dayanır. Bunları bir işten önce değil, sonra ele almamızın nedeni şudur: USD ile temiz bir çalışma ile boş bir kare arasındaki fark genellikle tek bir uyuşmayan sürüm ya da çözümlenemeyen yoldur — ve bunu 480. karede değil test karesinde yakalamak çok daha ucuzdur.
Tam da bu nedenle, bir Maya USD çalışmasını genellikle temsili bir kare ile başlatırız: daha büyük bir bloğa geçmeden önce stüdyonun aşamanın oluştuğunu ve karelerin node'larımız üzerinde indiğini görebilmesi ve pipeline'ı uçtan uca doğrulayabilmesi için tam blok öncesinde bir kare çalıştırırız. USD ile, tek bir karedeki zinciri kanıtlamak herhangi bir özellik listesinden daha değerlidir.
Maya rendering'in USD özelinin ötesinde bir farm üzerinde nasıl çalıştığına dair daha geniş bir resim istiyorsanız Maya bulut rendering rehberimiz genel workflow'u kapsamaktadır; Maya için render farm seçme rehberimiz ise nasıl değerlendireceğinizi ele almaktadır. Bu USD çalışmasının üzerinde çalıştığı adanmış node kiralaması render farm kiralama sayfamızda açıklanmaktadır. Formatın kendisi için Pixar'ın OpenUSD belgesi, aşamaların nasıl oluşturulduğuna dair kanonik referanstır.
FAQ
Q: Render farm'ınız USD kullanan Maya sahnelerini destekliyor mu? A: Evet. MayaUSD derlemesini ve render motorunun USD desteğini sahnenizle eşleştirerek USD kullanan Maya işlerini render ediyoruz. Production çalışmalarında, MayaUSD ile Arnold USD procedural'ın node havuzu genelinde doğru biçimde başlatıldığını ve render edildiğini log'larla doğruladık. Temel nokta şudur: sanatçılarınızın kullandığı MayaUSD derlemesi, USD sürümü ve asset yollarının render tarafında yeniden üretilmesidir.
Q: Hangi Maya ve USD sürümlerini destekliyorsunuz? A: Sizi tek bir sabit imaja bağlamak yerine, asset'lerinizin oluşturulduğu Maya sürümünü, MayaUSD derlemesini ve USD sürümünü eşleştiriyoruz. USD oluşturma, katmanların, referansların ve varyantların nasıl çözümleneceği konusunda sürüm farklılıklarına duyarlıdır; bu nedenle authoring ortamını eşleştirmek, aşamanın iş istasyonlarınızdaki gibi oluşmasını sağlar.
Q: Arnold USD procedural'ı destekliyor musunuz? A: Evet — Maya ve Arnold için Arnold USD procedural, render zamanında USD içeriğini okuyan yoldur ve biz onu Arnold ile birlikte sağlıyoruz. Mevcut olması ve verinizle sürüm uyumlu olması zorunludur; aksi takdirde render motoru okuyamadıklarını atlar. Tam blok çalıştırmadan önce başlatıldığını doğruluyoruz.
Q: Kendi Arnold lisansımı getirmem gerekiyor mu? A: Hayır. Arnold dahil render motoru lisansları, sağladığımız adanmış kapasitenin bir parçasıdır — node başına kendinizin lisanslaması gereken bir şey değil, dahil olarak sunulmaktadır. Kendi ana bilgisayarınızı getiren bir kurulumda bu lisansları makine maliyetinin üzerine eklemeniz gerekir; onları bir arada sunmak, render zincirini sağlam tutma biçimimizin bir parçasıdır.
Q: Asset'leri yeniden yüklemek zorunda kalmamak için LucidLink dosya alanımızı mount edebilir misiniz? A: Evet. Projeniz LucidLink üzerinde yaşıyorsa bu dosya alanını render node'larına mount edebiliriz; böylece USD aşaması referanslarını sanatçılarınızın gördüğü verilerle tam olarak çözümler. USD için bu, yaygın bir başarısızlık modunu ortadan kaldırır — çünkü farm, farklı biçimde yapılandırılmış olabilecek bir kopyadan değil, sizin okuduğunuz asset ağacının aynısından okur.
Q: Maya USD sahnelerimizi çalıştıramayan bir bulut zamanlayıcısı kullanıyoruz. Geçiş yapabilir miyiz? A: Stüdyoların bize geçmesinin yaygın bir nedeni budur. Ortamı sahnenize göre eşleştirir, dosya alanınız varsa mount eder ve tam çalışmaya geçmeden önce USD aşamasının oluştuğunu ve render edildiğini temsili bir karede doğrularız. Geçiş işlemi büyük ölçüde authoring ortamınızı render tarafında sadakatle yeniden üretmekle ilgilidir.
Q: Sahnemizdeki artık referanslar bir sorun teşkil eder mi? A: Genellikle hayır. Birkaç pipeline'dan geçmiş USD sahneleri çoğunlukla kopuk eklenti istekleri ve artık node öznitelikleri taşır. Node'larımızda Maya bunların üzerinden geçerek gerçekte kullandığınız motor ile render eder. Temiz log'lar için bunları Maya'da kaldırabilirsiniz; ancak bu estetik bir tercihtir — artıklar nadiren render'ı durduran şeydir.
Q: Maya USD'yi CPU mu yoksa GPU'da mı render etmeliyiz? A: Her ikisi de mevcuttur ve doğru yanıt render motorunuza ve sahnenize bağlıdır. Pek çok stüdyo, CPU node'larımızın tasarlandığı nihai kalitedeki USD çalışmaları için Arnold'ı CPU üzerinde çalıştırır. GPU da projenin gerektirdiği yerlerde mevcuttur — yalnızca GPU kartlarımızın havuzlanmayan, kart başına 32 GB bellek taşıdığını unutmayın; bu nedenle çok yoğun GPU sahneleri için GPU başına bellek kullanımını önceden kontrol etmeye değer.
About Thierry Marc
3D Rendering Expert with over 10 years of experience in the industry. Specialized in Maya, Arnold, and high-end technical workflows for film and advertising.


