MAYA İLE USD WORKFLOW KURMAK VE DEPARTMANLAR ARASI TRANSFER YAPMAK
Büyük sahnelerde aynı dosyayı herkesin açıp kaydetmesi, üretim hızını düşürür ve hatayı büyütür. Maya tarafında USD workflow kurmak ise modeli, rig’i, animasyonu ve ışık ayarlarını birbirine karıştırmadan “katmanlı” biçimde birleştirmenizi sağlar. Böylece ekipler paralel çalışır, shot assembly daha öngörülebilir hale gelir ve sahne transferi bir kriz olmaktan çıkar.
USD (Universal Scene Description), varlıkları ve shot’ları katmanlar (layers) ve kompozisyon (composition) kurallarıyla bir araya getirmenize yardımcı olur. Bu yaklaşım; yayınlama (publish), referanslama, varyant set’leri, payload kullanımı ve versiyonlama gibi pratikleri standartlaştırmak için güçlü bir zemin sunar. Özellikle “kim neyi değiştirdi, nerede bozuldu” sorularını azaltır.
Bu yazıda Maya ile USD workflow kurmanın temel yapı taşlarını, departmanlar arası handoff (transfer) düzenini ve günlük iş akışında karar vericilerin en çok zorlandığı noktaları ele alacağız. Son bölümde, ekiplerin hızla uygulayabileceği örnek bir klasör yapısı, isimlendirme yaklaşımı ve iki gerçekçi kod örneği de bulacaksınız. Eğitim ihtiyacınız varsa Maya eğitimi sayfasına da göz atabilirsiniz.
USD tabanlı Maya pipeline tasarlamak ve kurmak
Bir USD workflow kurarken ilk hedef, tek bir “mega dosya” yerine birbirine bağlanan küçük, sorumluluğu net parçalar üretmektir. USD bunu; layering, composition arcs (reference, payload, sublayer) ve variant set kavramlarıyla mümkün kılar. Maya tarafında mayaUsd eklentileriyle bu yapıyı hem okumak hem yazmak pratikleşir.
Genel bir üretim akışında varlıklar (asset) ve çekimler (shot) ayrı dünyalardır. Asset tarafında model, lookdev, rig gibi departmanlar aynı varlığın farklı katmanlarını üretir. Shot tarafında ise animasyon, layout ve ışık ekipleri bu katmanları bir araya getirir. USD yaklaşımıyla “asset USD” ve “shot USD” ayrımı yapmak, transferin doğru yapılması için kritik olur.

İyi kurgulanmış bir pipeline’da her departmanın ürettiği çıktı, diğer departmanın dosyasını “ezmeden” üstüne eklenir. Örneğin model ekibi topoloji ve ölçüleri belirler; lookdev ekibi materyal ve shader bağlarını layer olarak ekler; rig ekibi kontrol sistemini ayrı bir layer’da tutar. Shot ekibi ise bu katmanları çağırır, yalnızca shot’a özgü dönüşümleri ve animasyonu ekler.
Asset publish yapısını katman mantığıyla kurmak
Asset publish için “tek dosya, tek kaynak” yaklaşımı yerine, üretilecek katmanları önceden tanımlamak işe yarar. Örnek bir katman seti: model, lookdev, rig, fx, proxy. Her katman kendi sorumluluğunu taşır ve bağımlılıkları sınırlı tutulur. Böylece bir katmanda yapılan değişiklik diğer katmanların tekrar yayınlanmasını gerektirmez.
Shot assembly düzenini kompozisyon kurallarıyla kurmak
Shot assembly, doğru kompozisyon arc seçimiyle hız kazanır. Ağır geometri için payload, hızlı önizleme için proxy katmanı, final render için full-res katmanı gibi seçenekler shot içinde kontrollü biçimde seçilebilir. Bu yaklaşım, renderfarm ve günlük preview süreçlerini de stabilize eder.
Departmanlar arası handoff standardını netleştirmek
Departmanlar arası transfer “dosya atmak” değil, beklentileri standardize etmektir. USD workflow’da handoff; hangi prim path’lerin sabit kalacağı, hangi attribute’ların kim tarafından yazılacağı ve hangi varyantların zorunlu olacağı gibi kurallarla yönetilir. Karar vericiler için en büyük kazanım, üretim hattının ölçülebilir hale gelmesidir: hangi publish ne zaman çıktı, hangi shot hangi asset sürümünü kullanıyor, geriye dönük izlenebilir.
Transfer standardını tanımlarken şunlar net olmalı:
- Prim path sözleşmesi: Örn.
/Assets/Char/Herogibi kök yolların değişmemesi - Layer sorumlulukları: Model layer topolojiyi, lookdev layer materyal bağlarını yazar
- Variant set şeması: Örn.
lod,material,groomgibi set’lerin isimleri - Versiyonlama: Yayınlanan sürümlerin okunacağı stabil bir “latest” katmanı veya resolver kuralı
Path ve namespace sözleşmesini sürdürülebilir kurmak
USD’de path değiştiğinde sahne kurulumunun kırılması çok kolaydır. Bu yüzden isimlendirme ve namespace kararlarını erken almak gerekir. Örneğin her asset için /Assets altında tek bir kök prim tutmak ve child prim’leri departman katmanlarının eklemesi daha güvenlidir. Bu yapı, shot assembly sırasında arama ve debug süresini ciddi biçimde azaltır.
Versiyonlama ve onay akışını görünür kılmak
Bir katman yayınlandığında, hangi sürümün “onaylı” olduğu anlaşılır olmalıdır. Bazı ekipler v001, v002 gibi klasör versiyonlarını tercih eder; bazıları asset resolver ile sürümü otomatik çözer. Hangi yöntem seçilirse seçilsin, animasyon ve ışık ekiplerinin “hangi rig sürümünü kullandım” sorusuna tek yerden cevap bulması gerekir.
Maya içinde USD sahnesi yönetmek ve birleştirmek
Maya’da USD sahnesi yönetimi genellikle iki düzeyde ele alınır: USD Stage’i Maya içinde düzenlemek ve Maya sahnesinden USD dışa aktarmak. MayaUsd araçları, USD Stage Editor ve proxy shape yaklaşımıyla sahneyi katmanlı biçimde açmanıza yardımcı olur. Bu noktada pratik bir hedef şudur: sahne açılış süresi kısa kalmalı, ekipler yalnızca ihtiyaç duyduğu katmanı yüklemeli, ağır veriler payload ile ertelenmelidir.
Örneğin layout veya animasyon ekibi, karakterin full-res geometri katmanını yüklemek yerine proxy LOD kullanabilir. Işık ekibi ise final render aşamasında full-res katmanları açabilir. USD’nin “deferred loading” yaklaşımı, doğru kurulduğunda hem günlük çalışma hem de render aşamasında kazanım sağlar.

Payload ve proxy seçimlerini pratikleştirmek
Payload kullanımı, sahne performansını doğrudan etkiler. Ağır mesh’ler ve çok sayıda prim içeren set’ler için payload tercih etmek; sahneyi hızlı açıp seçili kısımları ihtiyaç oldukça yüklemeyi sağlar. Bunun yanında proxy katmanı, viewport performansını korurken animasyon ve blocking işlerini rahatlatır. Burada kritik nokta, proxy ile full-res arasında dönüşümlerin tutarlı kalmasıdır.
Override katmanlarını shot odaklı yönetmek
Shot tarafında yapılan değişiklikler (animasyon, shot transform’ları, shot’a özgü materyal tweak’leri) mümkün olduğunca override layer’da tutulmalıdır. Böylece asset publish güncellendiğinde shot içindeki değişiklikler korunur. Aynı zamanda geri dönüş (rollback) gerektiğinde shot override layer’ını izole ederek hızlı debug yapılabilir.
USD composition ile transfer riskini azaltmak
Departmanlar arası transferde en sık yaşanan problem, aynı verinin birden fazla yerde “yetkisiz” biçimde yazılmasıdır. USD composition kurallarıyla bu risk azaltılabilir: hangi layer’ın hangi attribute’u yazacağı belli olur, güçlü-zayıf katman ilişkisi netleşir. Örneğin materyal bağları lookdev layer’da tutuluyorsa, animasyon layer’ının bu bağları değiştirmemesi bir kural haline getirilebilir.
Bu kurguda şu kavramlar işinizi kolaylaştırır: sublayer ile katman sıralaması, reference ile varlık çağırma, payload ile ağır veriyi erteleme, variant set ile seçenekleri yönetme. Ayrıca “opinions” mantığını anlatmak, departmanlar arası iletişimi güçlendirir: Bir layer’da yazılan görüş, daha güçlü bir layer ile geçersiz kılınabilir; bu da kontrolsüz değişikliklerin izini sürmeyi kolaylaştırır.
Variant set stratejisini anlaşılır kurmak
Variant set’ler “seçenek yönetimi” için çok etkilidir; ancak kontrolsüz çoğalırsa karmaşaya dönüşür. Bu yüzden set isimlerini sınırlı tutmak ve her set’in amacını dokümante etmek gerekir. Örneğin lod set’i yalnızca geometri yoğunluğunu, material set’i yalnızca materyal varyasyonlarını, groom set’i yalnızca saç/ tüy seçeneklerini temsil etmelidir. Böylece shot assembly sırasında kararlar hızlı alınır.
Layer stack düzenini şeffaf izlemek ve düzeltmek
Layer stack (katman yığını) debug’ı, transfer sorunlarında en hızlı çözümdür. Bir obje görünmüyorsa, bir materyal kaybolduysa ya da transform bozulduysa, çoğu zaman sorun layer sıralamasındadır. Katmanları isimlendirme standardı ve klasör yapısı ile birlikte tutmak, ekipler arası iletişimi güçlendirir.
İsimlendirme ve klasör yapısını standardize etmek
USD workflow’un sürdürülebilir olması için dosya sistemi kararları çok önemlidir. Tutarlı bir klasör yapısı, otomasyon yazmayı kolaylaştırır; publish ve assemble adımları script’lenebilir hale gelir. Aşağıdaki örnek yapı, farklı ölçeklerde işe yarayabilecek temel bir iskelet sunar. Buradaki amaç, asset ile shot dünyasını ayırmak ve her departmanın çıktısını net bir “hedef dosya”ya yönlendirmektir.
Klasör ve dosya şemasını otomasyona uygun kurmak
# Örnek USD klasör yapısı (asset odaklı)
assets/
char_hero/
model/
publish/
char_hero_model.usda
lookdev/
publish/
char_hero_lookdev.usda
rig/
publish/
char_hero_rig.usda
usd/
publish/
char_hero_asset.usda # composition entry (asset root)
shots/
seq010/
sh010/
layout/
publish/
sh010_layout.usda
anim/
publish/
sh010_anim.usda
lighting/
publish/
sh010_lighting.usda
usd/
publish/
sh010_shot.usda # composition entry (shot root)Bu yapıda “entry” dosyaları, diğer katmanları çağıran kompozisyon dosyalarıdır. Örneğin char_hero_asset.usda model, lookdev ve rig katmanlarını doğru sırada birleştirir. Shot tarafında sh010_shot.usda ise layout ve animasyon override’larını, ayrıca ışık ayarlarını stack içinde konumlandırır. Bu ayrım sayesinde departmanlar birbirine dosya taşımak yerine “yayınlanmış hedefe” bağlanır.
İsimlendirme kararlarını ekipçe sahiplenmek ve yaşatmak
İsimlendirme standardı olmadan USD’nin esnekliği, kısa sürede dağınıklığa dönüşür. Bu yüzden “kök prim adı”, “variant set adları”, “publish dosya adları” ve “kategori klasörleri” ekipçe netleştirilmelidir. Karar vericiler için pratik bir kontrol listesi: yeni bir asset açıldığında herkes aynı path’i mi kullanıyor, publish dosyaları aynı şablona mı uyuyor, shot isimleri sequence/shot formatına uygun mu?
Maya ile USD export otomasyonunu kurmak ve ölçeklemek
Manuel export, küçük projede idare edebilir; ama ekip büyüdükçe aynı adımları tekrar etmek hataya davetiye çıkarır. Maya içinde USD export otomasyonunu kurmak; hangi node’ların export edileceği, hangi root prim kullanılacağı, hangi formatın seçileceği (usda/usdc) gibi kararları standardize eder. Ayrıca CI benzeri bir kontrol mekanizması kurmak, hatalı publish’lerin erken yakalanmasını sağlar.
Aşağıdaki örnek, Maya Python tarafında seçili bir root grubu USD olarak dışa aktarmaya yönelik sade bir yaklaşımı gösterir. Stüdyonuza göre parametreleri zenginleştirebilir, export preset’leri ve metadata ekleyebilirsiniz.
Python ile MayaUsd export adımını otomatiklemek
# Maya Python - örnek USD export (mayaUsd kurulu varsayılır)
import os
import maya.cmds as cmds
def export_usd(root, out_path, start=1, end=1):
if not cmds.objExists(root):
raise RuntimeError("Root node not found: %s" % root)
out_dir = os.path.dirname(out_path)
if not os.path.isdir(out_dir):
os.makedirs(out_dir)
# Basit export örneği: seçili root'u USD'ye yaz
cmds.select(root, r=True)
cmds.mayaUSDExport(
file=out_path,
selection=True,
frameRange=(start, end),
defaultPrim=os.path.basename(root).replace("|", "_"),
mergeTransformAndShape=True,
stripNamespaces=False,
exportDisplayColor=False,
exportUVs=True
)
print("USD exported:", out_path)
# kullanım
export_usd("|char_hero_grp", "D:/project/assets/char_hero/usd/publish/char_hero_model.usda")Bu export adımını “publish aracı” içine yerleştirerek model, rig ve animasyon ekiplerinin tek tuşla standart çıktı üretmesini sağlayabilirsiniz. Önemli olan, her departmanın export ettiği verinin kapsamını net tutmaktır. Örneğin animasyon publish’inde materyal bağları yazılmamalı; rig publish’inde shot transform’ları yer almamalıdır.
USD layer birleştirmeyi script ile yönetmek
Export kadar önemli bir diğer adım, katmanları “entry” dosyasında birleştirmektir. Aşağıdaki örnek, USD Python ile basit bir composition dosyası üretir: model, lookdev ve rig katmanlarını sublayer olarak sıralar. Bu yaklaşım, asset entry dosyasını otomatik güncellemek için temel bir başlangıçtır.
# USD Python - basit sublayer composition örneği
from pxr import Sdf
asset_entry = Sdf.Layer.CreateNew("char_hero_asset.usda")
asset_entry.subLayerPaths.append("../model/publish/char_hero_model.usda")
asset_entry.subLayerPaths.append("../lookdev/publish/char_hero_lookdev.usda")
asset_entry.subLayerPaths.append("../rig/publish/char_hero_rig.usda")
# Katmanı kaydet
asset_entry.Save()Bu örnek, pratikte resolver, mutlak/bağıl path yönetimi, publish sürüm seçimi gibi konularla genişletilir. Ancak temel prensip aynıdır: departman çıktıları “bağımsız katmanlar” olarak yayınlanır, entry dosyası ise yalnızca bu katmanların doğru sırayla bir araya getirilmesini sağlar. Böylece transfer süreçleri hızlı ve hataya daha dayanıklı hale gelir.

Uygulamada en sık sorunları azaltmak ve ölçmek
USD workflow kurulduktan sonra asıl değer, sürdürülebilirliği ölçebilmekte ortaya çıkar. Ekiplerin en sık yaşadığı sorunlar genellikle şunlardır: path değişikliği nedeniyle kırılan referanslar, varyant set karmaşası, yanlış layer’da yazılan attribute’lar, ağır sahne yüklemeleri ve yayınlama disiplininin zayıflaması. Bu riskleri azaltmak için kontrol noktaları tanımlamak faydalıdır.
Örneğin publish sırasında otomatik kontroller (lint) koşabilirsiniz: defaultPrim var mı, root path sözleşmesine uyuyor mu, varyant set isimleri onaylı listede mi, asset entry dosyası güncel mi? Bu tür kontroller, hatayı render aşamasında değil publish anında yakalamanızı sağlar. Ayrıca ekip içi görünürlük artar: yayınlama kalitesi ölçülür, tekrar iş (rework) azalır.
Kalite kontrol listesiyle publish doğrulaması yapmak
Basit bir kontrol listesi bile büyük fark yaratır: (1) Katmanlar doğru sırada mı, (2) shot override yalnızca shot verisini mi içeriyor, (3) payload kullanımında performans hedefi sağlanıyor mu, (4) isimlendirme standardı bozulmuş mu, (5) varyant set’ler gerekli mi ve anlaşılır mı? Bu maddeler, departmanlar arası transferin “insana bağlı” olmaktan çıkıp sürece bağlı olmasına katkı sağlar.
Onboarding sürecini hızlandıracak kısa rehberler yazmak
Yeni ekip üyeleri için USD kavramları ilk başta soyut gelebilir. Bu yüzden 1–2 sayfalık kısa rehberler hazırlamak, adaptasyonu hızlandırır: layer sorumlulukları, publish adımları, shot assembly yaklaşımı, sık kullanılan path’ler ve varyant set’ler. Böylece bir kişi ayrıldığında bilgi kaybı azalır ve ekip ölçeklenirken süreç bozulmaz.
Sonuçta transferi hızlandırmak ve ekipleri paralel çalıştırmak
Maya ile USD workflow kurmak, yalnızca teknik bir entegrasyon değildir; departmanlar arası iş bölümünü netleştirip üretimi paralelleştiren bir yöntemdir. Katmanlı yapı sayesinde model, rig, animasyon ve ışık ekipleri birbirinin dosyasını “kilitlemeden” ilerler. Kompozisyon kuralları, varyant set’ler ve payload yaklaşımıyla hem performans hem de izlenebilirlik kazanırsınız.
Eğer ekibinizde sahne transferi sıkıntı yaratıyorsa, küçük bir pilot shot ile başlayıp isimlendirme ve publish standartlarını oturtmak iyi bir ilk adım olur. Bu süreçte doğru eğitim ve ortak dil, uygulamayı hızlandırır; ekiplerin USD’yi aynı şekilde kullanmasını sağlar. İhtiyaç duyduğunuzda Maya eğitimi içeriğiyle, üretim hedeflerinize uygun bir workflow tasarlamayı destekleyebilirsiniz.






