Animasi Sceneform

Sceneform memungkinkan Anda mengimpor model dengan animasi. Anda dapat menggunakan Sceneform API untuk memutar dan mengontrol animasi, serta melampirkan node ke kerangka model.

Misalnya, contoh Animation Sceneform mencakup file yang digunakan untuk membuat model Android dan topi bisbol Andy. Model Andy berisi data animasi, sedangkan topi bisbol adalah model non-animasi. Saat Anda menjalankan contoh, Andy merusak dan melambaikan tangannya sementara topi tetap berada di kepalanya menggunakan node.

Animasi model scene vs animasi properti Android

Penting untuk membedakan antara animasi model di Sceneform versus animasi properti di Android.

  • Animasi model dibuat sebelumnya oleh artis menggunakan software pemodelan dan animasi. Class ini berisi data animasi kerangka. Animasi ini harus diekspor sebagai file *.fbx, lalu diimpor ke file *.sfb untuk digunakan di Sceneform.

  • Animasi properti adalah konsep dasar Android dan tidak khusus untuk Sceneform. Animasi jenis ini dapat mengubah nilai yang dapat berubah pada objek Java yang memiliki pengambil dan penyetel. Nilai animasi dapat disetel secara dinamis, tetapi tidak dapat dikemas ke dalam file *.sfb.

    Animasi properti dan model mendukung Animator API Android. Keduanya mendukung pemroses, kontrol pemutaran (start/stop/end/pause/cancel), durasi, dan penundaan mulai.

    Hanya dukungan terbatas untuk pemutaran TimeInterpolators yang disediakan dalam animasi model. Pemutaran terbalik tidak didukung dalam animasi model.

  • Untuk melihat cara kerja pemodelan animasi Sceneform, tinjau contoh Animation.

  • Untuk melihat animasi properti menggunakan penerapan Sceneform, tinjau contoh Sistem Tata Surya.

Konsep animasi model

Sebelum mulai bekerja dengan model animasi, sebaiknya pahami konsep tertentu yang berkaitan dengan animasi kerangka, serta pembatasan dan fitur terkait yang berlaku untuk Sceneform.

  • Tulang. Model animasi berisi tulang yang terhubung bersama, yang membentuk hubungan induk-turunan dalam hierarki. Animasi mengubah posisi dan orientasi tulang selama pemutaran.

    Dengan cara yang sama seperti memindahkan induk Node di Sceneform menyebabkan semua Node turunan juga bergerak, memindahkan tulang induk di Sceneform akan memindahkan turunan. Tulang dapat dipindahkan oleh animasi atau diakses sebagai node melalui class SkeletonNode. Jika tulang diakses sebagai Node, posisi baru akan menimpa setiap frame dengan animasi jika salah satunya diputar.

  • Skeleton. Kerangka kerja terdiri dari semua tulang bersama, yang membentuk hierarki hubungan orang tua-turunan.

    Misalnya, model lengan manusia mungkin berisi tulang seperti "bahu kiri", "lengan kiri atas", "siku kiri", dan "lengan kiri" dan seterusnya. Mulai dari "bahu kiri" sebagai induk hierarki ini, "lengan atas kiri" akan ditetapkan sebagai turunan. Turunan "kiri atas atas" mungkin "siku kiri" dan tulang bawah. Ketika tulang bahu diputar, lengan atas, lengan bawah, siku, dan tulang di bawahnya akan bergerak secara bersamaan.

    Sceneform tidak memiliki API untuk mengubah hubungan induk-turunan antara tulang di kerangka. Hal ini harus dilakukan terlebih dahulu dalam paket animasi dan pemodelan eksternal.

    Bahkan model yang menggambarkan objek anorganik dapat menggunakan kerangka untuk memfasilitasi realisme. Misalnya, model sofa bisa memiliki tulang dan kerangka.

  • Kulit. Skin adalah bobot yang diterapkan pada mesh permukaan yang digambar dari model. Posisi dan bentuk mesh kulit dihitung dari tulang di dekatnya. Tulang-tulang ini akan terhubung ke tampilan model, sehingga memberikan gerakan yang lebih realistis.

    Skin harus disiapkan terlebih dahulu menggunakan paket pemodelan dan animasi. Sceneform dapat mengubah bahan mesh kulit untuk mengubah tampilan model.