Dizine dön

Unreal Tarafı — Araçlar, Warping, Saha Deneyimi

Animasyon R-005 Çizen: Alparslan Tamam

UE 5.8 Animation Data Modifier'ları, çalışma zamanı düzeltme node'ları (Stride / Orientation / Slope Warping, Foot Placement), Motion Matching, Control Rig post-process, teşhis araçları, locomotion'ın neden kötü hissettirdiğine dair saha deneyimi ve Claude'un animasyondaki yeri.

Animation Data Modifiers (UE 5.8)

Konum: Engine/Plugins/Animation/AnimationModifierLibrary/.../Public/

Modifier Ne yapar
CopyBonesModifier Bir kemiğin transformunu diğerine kopyalar
CurveFromSyncMarkersModifier Deneysel — sync marker’lardan float curve üretir
EncodeRootBoneModifier / ZeroOutRootBoneModifier Root motion’ı 1. kareye göreli yapar
ReOrientRootBoneModifier Mesh dünya pozunu koruyarak root’u döndürür
FootstepAnimEventsModifier Ayak/zemin kesişiminden otomatik footstep notify
MirrorModifier Mirror Data Table ile aynalama
MotionExtractorModifier Bir kemiğin hareketini eğriye bake eder

Hiçbiri poz kalitesini yeniden şekillendirmiyor — retiming, yumuşatma veya key azaltma/ekleme yapan bir modifier YOK. Bizim işimize yarayabilecek ikisi: MotionExtractorModifier (yeniden export etmeden hız/ayak-kilidi eğrisi üretir) ve FootstepAnimEventsModifier (notify yerleştirmeyi otomatikleştirir).

Özel modifier yazılabilir: temel sınıf Blueprintable, OnApply/OnRevert BlueprintNativeEvent. Python’a açık bir giriş noktası motor kaynağında bulunamadı — Python ile modifier yazmak doğrulanmış bir yol değil. (engine source)

Çalışma zamanı düzeltme node’ları

Node Neyi gizler Ne gerektirir
Stride Warping Adım boyu ile gerçek hız uyuşmazlığı ROOT MOTION ŞART — header’da açıkça yazıyor
Orientation Warping Gövde/hareket yönü ayrışması ROOT MOTION ŞART; yön zaten uyuşuyorsa hiçbir şey yapmaz
Slope Warping Eğimde ayak açısı Per-foot IK/FK ayak kemiği tanımı
Foot Placement Ayak kilitleme/çözme IK ayak zinciri; eğri opsiyonel
Offset Root Bone Hızlı duruş/dönüşte ışınlanma Root motion attribute veya pin
Inertialization Klipler arası geçiş sıçraması Kaynak klipten bir şey istemiyor
Power IK UE 5.8’de YOK; üçüncü parti, UE5’te çalışmadığı bildiriliyor

PoseSearch eklentisi varsayılan kapalı. Epic dokümanı “herhangi bir miktarda animasyon varlığıyla” çalıştığını söylüyor, tasarım gereği büyük veritabanı şartı yok. Ama Epic’in kendi referansı olan Game Animation Sample 500+ klip / ~10 GB ile geliyor. Birkaç klip için teknik olarak kullanılabilir ama işlevsel olarak “en az kötü klibi seç”e dönüşür. Bizim sorunumuz (belirli bir poz kalitesini düzeltmek) için orantısız makine. (Epic docs + inference)

Control Rig post-process

FAnimNode_ControlRig herhangi bir AnimGraph’a, USkeletalMesh::PostProcessAnimBlueprint dahil, yerleştirilebiliyor (LOD eşiğiyle kapatılabilir). Prosedürel bir düzeltme (kalça salınımı sönümleme, kol yayı sınırlama) için doğru çalışma zamanı yeri burası — tüm node’lardan sonra, mesh genelinde çalışıyor. (engine source)

Teşhis araçları

  • Rewind Debugger / Animation Insights — kayıt alıp kare kare sarma.
  • ShowDebug ANIMATION — UAnimInstance::DisplayDebug, ekranda aktif montage/state machine/curve dökümü.
  • Pose Watch — belirli bir AnimGraph node’unun pozunu viewport’ta izole eder; bir warping node’unu suçlamak için kullanışlı.
  • Curve Editor — Foot Placement ve distance matching’in tükettiği eğrileri DCC’ye dönmeden incelemek/elle yazmak için.

Saha deneyimi — locomotion neden kötü hissettiriyor

Sıklık sırasıyla bildirilen sebepler:

# Sebep Kaynak
1 Oynatma hızı / adım uyuşmazlığı → ayak kayması. IK ayağı sadece dikeyde sabitler; yatay patinaj oynatma hızının gerçek hıza uymamasından gelir. dev blog
2 Ağırlıksız start/stop — eksik klipten değil, destek ayağına göre doğru duruş pozunun seçilmemesinden ve “baskı altında impulse” şeklinin olmamasından. dev blog
3 Tepkisiz dur→başla geçişi — Guerrilla (Horizon Zero Dawn) bunu kısa yerinde “shuffle” ve küçük “step” animasyonlarıyla çözdü; seçim animasyon event’leriyle, yani kod+animasyon sözleşmesiyle. GDC 2017
4 Root motion ile kod tabanlı hareketin ayrışması. dev blog
5 Blend süreleri, ivme eğrileri, input gecikmesi — çok tartışılıyor ama birinci elden “şu sayı yanlıştı” hesabı az. düşük güven

Kod mu animasyon mu uyum sağlar

Tek bir uzlaşı çıkmadı, ama birinci elden kaynaklardaki desen: animasyon, kodun belirlediği hız/mesafe sözleşmesine uyum sağlar; animasyon ikincil hareketlerle katkı verir. Hem Guerrilla’nın sunumu hem Epic’in stride warping dokümanı, warping’i “hareket hızlarını animasyona uydurma ihtiyacını azaltan” şey olarak çerçeveliyor. Kanıtlanmış evrensel kural değil, bulunan hesapların gösterdiği. (GDC + Epic docs, orta güven)

Warping toleransı

Tekrarlayan uyarı: oynatma hızı ve stride-warp düzeltmelerini doğal adımın %15–20’si içinde tut, yoksa poz gözle görülür şekilde geriliyor. Ölçülmüş bir eşik değil, kural-ı kaide. (dev blog, doğrulanmamış hassasiyet)

Bizim ölçümümüz: oynatma oranı 0.71–1.27, yani −%29…+%27. Bandın dışında.

Claude’un animasyondaki yeri

Gerçekten işe yaradığı yer: DCC’nin etrafındaki araç/script yazımı ve sayısal veri okuma. Blender MCP (26.6k yıldız) animasyon/rigging/keyframe aracı İÇERMİYOR — modelleme aracı. Houdini ve Maya köprüleri de aynı. İstisna Unreal: UE MCP’leri AnimSequence bilgisi, notify, sync marker ve float curve sunuyor. (github repo)

Yapamadığı: animasyonu izleyemiyor. Claude Code video dosyasını girdi olarak almıyor; video desteği isteyen GitHub issue (anthropics/claude-code#12676) hâlâ açık ve cevapsız. Uygulamada bulunan tek çözüm: kare çıkarıp zaman damgalı kontakt sayfası halinde döşemek. (github issue + blog)

“12 prensibi LLM’e checklist olarak vermek”

Fikir şu: Disney’in 12 animasyon prensibini (Thomas & Johnston, The Illusion of Life, 1981) bir denetim listesine çevirip modele “bu klibi madde madde değerlendir” demek. Araştırmada bunun gerçekten uygulandığına dair tek bir bildirilmiş örnek bulunamadı; aşağısı fikrin ne vadettiği ve nerede tıkandığı üzerine çıkarımdır, doğrulanmış pratik değil.

Neden bugünkü hâliyle çalışmaz: bir checklist ancak gözlem varsa anlam taşır ve model animasyonu izleyemiyor (yukarıdaki issue). Prensiplerin yarısı da zaten sayıya değil göze dayanır. Ayrım yapılmadan verilen liste, modelin klibi görmeden “arcs iyi, timing iyi” diye doldurduğu bir form olur.

Hangi prensip veriden okunabilir: iskelet verisi (kemik transformları, float curve’ler) elimizde olduğunda bazı maddeler ölçüme indirgenebilir, bazıları hiç.

Prensip Veriden Nasıl ölçülür
Timing Evet Key aralıkları; bir eylemin kaç karede tamamlandığı
Slow in / slow out Evet Eklem hız profili — konum/açı eğrisinin türevi başta ve sonda sıfıra yaklaşıyor mu
Arcs Kısmen El/ayak ucunun 3B yörüngesi; düz çizgi mi, yay mı
Anticipation Kısmen Ana hareketten hemen önce ters yönde küçük bir hareket var mı (root’un push-off öncesi geri gitmesi gibi)
Follow-through / overlapping action Kısmen Zincir eklemleri arasındaki zaman kayması: omuz → dirsek → bilek sırayla mı duruyor
Squash & stretch Zayıf Rigid iskelette kemik uzunluğu sabittir; ancak bone scale kanalı veya morph target varsa
Secondary action Zayıf Ana hareket dışındaki kemiklerde hareket var mı — var/yok’tan öteye geçmez
Staging, straight-ahead / pose-to-pose, exaggeration, solid drawing, appeal Hayır Görsel ve estetik yargı; kare görmeden değerlendirilemez

Uygulanabilir biçimi: liste ikiye bölünür. Ölçülebilir beş-yedi madde sayıya çevrilip kemik ve eğri verisiyle beslenir — MotionExtractorModifier’ın ürettiği hız eğrisi ve UE MCP’lerinin sunduğu curve okuma tam bu girdidir. Kalan maddeler ancak zaman damgalı kontakt sayfası üzerinden karelerle sorulabilir ve orada da yargının güvenilirliği bilinmiyor. Yani fikir, “hangi prensip hangi veriden okunur” ayrımı yapılırsa test edilebilir bir hipoteze döner; ayrım yapılmadan verilen liste ise kanıtı olmayan bir varsayım olarak kalır.

Rev Tarih Çizen Değişiklik
R-005 Alparslan İlk kayıt