Animasyon Harmanlama Temelleri


23

Diyelim ki koşabilen, yürüyebilen ve elbette durabilecek karakterlerle bir çerçevem ​​var.

Animasyon karışımının çalışma zamanında dinamik animasyonlar oluşturarak bunlar arasında sorunsuzca geçiş süreci olduğunu düşünmekte haklı mıyım?

Öyleyse, bunun nasıl çalıştığının temel teorisi nedir ve nasıl uygularım?


1
Bir animasyonun son karesinden diğerinin ilk karesine kadar her kemik arasında doğrusal bir enterpolasyon olduğuna inanıyorum.
isimsiz olarak

Ya da ağırlıklı bir ortalama istiyorsanız, düzgün adımlarla doğrusal enterpolasyon (:
Gustavo Maciel

@ Gustavo-Gtoknu az önce söyledikleriniz hakkında daha fazla bilgi verebilir misiniz?
SirYakalot

diğerinin tersi üzerinde harmanlanacak her iki karenin alfa ile doğrusal enterpolasyonunu yaparsınız. Her ikisi de zamanın fonksiyonu içinde. Farklı bir etkiye sahip olmak için enterpolasyonda yumuşaklığı giderebilir veya ağırlıklı bir ortalama kullanabilirsiniz.
Gustavo Maciel

Yanıtlar:


18

Karakter animasyonu karışımı daha geneldir ve şunlar için kullanılabilir:

  • 2 klip arasında yumuşak geçişlerin hesaplanması;
  • Mevcut olanlardan tamamen yeni animasyonlar oluşturma (aynı anda potansiyel olarak 2'den fazla);
  • TK benzeri davranışlar gerçekleştirmek;
  • vb.

Temel fikir, her bir eklem rotasyonu için, farklı animasyon kliplerine sahip iki özdeş iskelet için değerleri arasında hesaplamanızdır. Animasyon klipleri rotasyonlarla gösterilir. Dolayısıyla, doğru sonuçlar istiyorsanız (Euler açılarını kullanıyor olsanız bile) doğrusal enterpolasyon kullanmanız gereken şey değildir. Örneğin slerp kullanabilirsiniz, ancak daha karmaşık çözümler mevcuttur.

Bu karmaşık çözümler ile karmaşık bir sorundur. Temel olarak, A ve B iki animasyon klibiniz varsa:

  • Eğer A ve B tamamen farklıysa (atlama ve yüzmeyi karıştırma), o zaman şans / garip sonuçlar elde edersiniz;
  • Eğer A ve B birbirine benziyorsa (iki yürüyen animasyon klibi), o zaman, örneğin her iki sol ayak da yerdeyken bunları karıştıracak şekilde senkronize etmelisiniz.
  • vb.

İlgileniyorsanız, zorlukları daha iyi anlayabilmeniz için bu makaleyi okuyarak başlamanızı öneririm: http://graphics.cs.wisc.edu/Papers/2003/KG03/regCurves.pdf

En güncel olanı değil, ama okunması kolay.

Umarım bu yardımcı olur. Saygılarımla.


5

Öncelikle, iskelet animasyonu (özellikle 3B grafikler) hakkında konuştuğunuzu farz ediyorum, çünkü animasyon harmanlaması sadece iskelet animasyon için geçerli. 2D sprite tabanlı animasyonlardan (sorunuzda belirtmediniz) bahsediyorsanız, animasyon karışımını hemen hemen unutabilirsiniz.

Bunun dışında ...

Animasyon karışımının çalışma zamanında dinamik animasyonlar oluşturarak bunlar arasında sorunsuzca geçiş süreci olduğunu düşünmekte haklı mıyım?

Terimin ne demek istediği, evet. "Dinamik animasyonlar üretmek" ifadesi küçük bir yanıltıcıdır; Bu yordamsal animasyon akla getiriyor ve tam olarak yaptığınız şey bu değil.

"Animasyon karıştırma", diğer klibin ağırlığı azalırken, her iki animasyondan bir kısmını kullanarak, bir klibin ağırlığını yukarı çekerken iki animasyon klibi arasında geçiş yaptığınız zamandır. Bu, iskelet animasyonuyla en iyi şekilde çalışır, böylece her bir eklemin dönüşü, her bir klibin ağırlığının zaman içinde değişmesiyle, o eklemin animasyonu arasındaki orta noktaya ayarlanır. Yani, her bir eklemin rotasyonunu aşağıdaki gibi hesaplarsınız:

rotCombined = weightA*rotA + weightB*rotB

Şimdi, animasyon karıştırma iskelet animasyonuyla en iyi şekilde çalışırken, aynı zamanda tepe animasyonu ile de (ör., MD2) yapabilirsiniz. Bu daha çok tarihi bir nottur çünkü birkaç modern oyun motoru köşe animasyonu kullanıyor, ancak köşe pozisyonlarını iki farklı animasyondaki köşe pozisyonu arasında bir ağırlık olarak ayarlayabilirsiniz. Bu, eğer iki animasyon çok farklı olsaydı, bazı garip görünen enterpolasyonlara (ör., Ağın bölümleri çöküyor ya da içten dışa dönüyor) neden olabilir, oysa iskelet animasyonu, ağın çeşitli bölümlerinin bütün kalmasını sağlar.


Bunu 2D grafiklerle yapamayacağınızı söylerken sprite tabanlı animasyon mu kastediyorsunuz? Tek tek vücut parçalarının pozisyonuna ve rotasyonuna bağlı olarak oluşturulmuş bazı 2B animasyonları nasıl harmanlayacağımı bulmaya çalışıyorum, ancak bunun 2B olduğu için neden mümkün olmadığını anlamıyorum.
mallardz

Çünkü sprite animasyonunda yeni kareler üretmenin yolu yok. 3D animasyonda, tek tek görüntüler önceden oluşturulmaz.
14'te

Anladım, ancak 2D animasyonun yalnızca hareketli grafiğin tamamını değiştirmesine bağlı olması gerekmez. Birden fazla spritten bir nesne oluşturabilir ve bunların dönüş ve konumlarını vb. Birlik'te yapması kolay ve kendi motorlarını kullananlar için 3D harmanlamanın daha zor olmadığını hayal ediyorum
mallardz

1
ah evet sprite tabanlı animasyon demek istedim, cevabımı düzenleyeceğim
jhocking
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.