Sahne animasyonu

Sceneform, modelleri animasyonlu olarak içe aktarmanıza olanak tanır. Animasyonu oynatmak ve kontrol etmek için Sceneform API'leri kullanabilir ve modelleri bir iskelete ekleyebilirsiniz.

Örneğin, Sceneform Animasyon örneğinde, Android'den Andy'nin modellerini ve bir beyzbol şapkasını oluşturmak için kullanılan dosyalar yer alır. Andy modeli animasyon verilerini, beyzbol şapkası ise animasyonsuz bir modeldir. Örneği çalıştırdığınızda Andy Breakdance'ı sallayıp kollarını sallar ve şapka bir düğüm kullanarak başını sabit tutar.

Sceneform model animasyonu ve Android mülk animasyonu

Sceneform'da model animasyonu ile Android'de mülk animasyonu arasında ayrım yapmak önemlidir.

  • Model animasyonları, modelleme ve animasyon yazılımı kullanılarak sanatçılar tarafından önceden oluşturulur. Bu reklamlar iskelet animasyonu verileri içerir. Bu animasyonların *.fbx dosyası olarak dışa aktarılması, ardından Sceneform'da kullanılmak üzere bir *.sfb dosyasına aktarılması gerekir.

  • Mülk animasyonu temel bir Android kavramıdır ve Sceneform'a özel değildir. Bu tür animasyonlar, alıcı ve ayarlayıcı içeren Java nesnesindeki değişebilir değerleri değiştirebilir. Animasyonlu değerler dinamik olarak ayarlanabilir ancak bir *.sfb dosyası olarak paketlenemez.

    Hem mülk hem model animasyonu Android's Animator API'yi destekler. İkisi de dinleyicileri, oynatma kontrolünü (start/stop/end/pause/cancel), süreyi ve başlangıç gecikmesini destekler.

    Model animasyonlarında TimeInterpolators oynatması için yalnızca sınırlı destek sağlanır. Model animasyonlarında ters oynatma desteklenmez.

  • Sceneform animasyon modellemenin nasıl kullanıldığını görmek için Animasyon örneğini inceleyin.

  • Sceneform'u çalışırken gösteren özellik animasyonunu görmek için Güneş Sistemi örneğini inceleyin.

Model animasyon kavramları

Animasyonlu modellerle çalışmaya başlamadan önce iskelet animasyonu ile ilgili belirli kavramların yanı sıra Sceneform için geçerli olan kısıtlamaları ve özellikleri anlamanız iyi olacaktır.

  • Kemiğim. Animasyonlu model, bir hiyerarşide üst-alt ilişkileri oluşturan birbirine bağlı kemikler içerir. Animasyon, oynatma sırasında kemiklerin konumunu ve yönünü değiştirir.

    Aynı şekilde Node adlı çocuğu da Sceneform'da taşıdığınızda tüm çocuklar da hareket eder. Node Kemikler animasyonla taşınabilir veya SkeletonNode sınıfı aracılığıyla düğüm olarak erişilebilir. Kemiklere Node olarak erişildiğinde animasyonla her karenin üzerine bir animasyon oynanıyorsa yeni konumların üzerine yazılır.

  • İskelet. İskelet, tüm kemikleri bir araya getirerek üst-alt ilişkileri hiyerarşisini oluşturur.

    Örneğin, bir insan kolunun modeli, "sol omuz", "sol üst kol", "sol dirsek" ve "sol ön kol" gibi kemikler içerebilir. Bu hiyerarşinin üst öğesi olarak "sol omuzdan" başlayarak "alt üst kol" çocuk olarak atanır. "Sol üst kol"un altları "dirsek" ve "alt" kemikler olabilir. Omuz kemiği döndürüldüğünde üst kol, ön kol, dirsek ve aşağıdaki kemikler hareket eder.

    Sceneform'un, iskeletteki kemikler arasındaki üst-alt ilişkilerini değiştirecek bir API'si yok. Bu işlem, harici modelleme ve animasyon paketinde önceden yapılmalıdır.

    Organik olmayan nesneleri tasvir eden modeller bile gerçekçiliği kolaylaştırmak için iskeletlerden yararlanabilir. Örneğin bir koltuğun modelinde kemikler ve iskelet olabilir.

  • Dış görünüm Dış görünüm, modelin çizilen yüzey ağına uygulanan bir ağırlıktır. Deri ağının konumu ve şekli yakındaki kemiklerden hesaplanır. Bu kemik ile kemik arasındaki bağlantı, modelin deforme olmasını sağlayarak daha gerçekçi bir hareket sağlıyor.

    Dış görünüm, modelleme ve animasyon paketi kullanılarak önceden hazırlanmalıdır. Sahne, bir modelin görünümünü değiştirmek için cilt ağının malzemesini değiştirebilir.