Mensimulasikan eksekusi dengan file EIF di Unity
Artikel ini menjelaskan cara menggunakan file EIF untuk mensimulasikan eksekusi di Unity, sehingga sebagian besar pekerjaan pengembangan dapat dilakukan di komputer dan hasilnya dapat dilihat secara intuitif.
Sebelum memulai
Simulasi menggunakan file EIF sebagai input, jadi sebelum memulai perlu merekam file EIF terlebih dahulu:
- Lihat Merekam file EIF untuk merekam file EIF
Selain itu, perlu juga memahami:
- Memahami konsep dasar merekam file EIF dan menggunakannya untuk simulasi
- Memahami konsep dasar, komposisi, dan alur kerja AR Session
- Memahami cara mengakses komponen perekaman melalui mengakses komponen AR dalam session
Mengaktifkan frame player session
ARSession.AssembleOptions menyediakan beberapa cara untuk mengonfigurasi komposisi komponen session. Salah satu caranya adalah mengatur AssembleOptions.FrameSource ke FramePlayer untuk mengaktifkan komponen frame player, sehingga file EIF dapat digunakan untuk mensimulasikan eksekusi.
Contohnya:
Session.AssembleOptions.FrameSource = AssembleOptions.FrameSourceSelection.FramePlayer;
Anda juga bisa melakukannya di editor dengan memilih AR Session (EasyAR) lalu mengubah opsi terkait di Assemble Options pada jendela Inspector:

Dengan begitu, saat session dimulai, komponen frame player akan diaktifkan dan bukan frame source lain.
Efek penggunaan frame player untuk memutar file EIF ditunjukkan pada video berikut:
Video ini menunjukkan efek penggunaan frame player untuk menjalankan pemetaan ruang padat di komputer. Di kiri ada tampilan
Hierarchy, di tengahScene, dan di kananGame. Isi tampilanGamesama dengan yang dilihat pengguna di ponsel di dunia nyata.
Selama pemutaran file EIF, semua komponen AR dalam session dapat bekerja normal, begitu juga konten scene dan logika interaksi, sehingga sebagian besar pekerjaan pengembangan dapat dilakukan di komputer dan hasilnya terlihat langsung.
Kiat
Efek yang terlihat saat memutar EIF dengan frame player di komputer pada dasarnya sama dengan efek di ponsel saat merekam file EIF.
Penting
Hasil eksekusi saat memutar EIF di dalam scene bergantung pada perangkat yang digunakan saat merekam dan frame source yang dipilih saat itu. Karena itu, saat merekam EIF disarankan menggunakan perangkat yang sama atau mendekati perangkat target, agar efek pemutaran konsisten dengan efek pada perangkat target. Perlu juga diperhatikan apakah fungsi pelacakan gerak di scene saat merekam aktif. Jika saat merekam fungsi itu tidak aktif, maka saat pemutaran juga tidak bisa diaktifkan, dan fungsi AR yang bergantung pada pelacakan gerak (misalnya pemetaan ruang padat, Mega, dll.) juga tidak akan bekerja seperti pada perangkat.
Memutar saat session dimulai
Secara default, ketika session dimulai, frame player akan otomatis mulai memutar file EIF. Namun sebelum diputar, jalur file EIF harus ditentukan terlebih dahulu; ini dapat diatur melalui properti FramePlayer.FilePathType dan FramePlayer.FilePath.
Contohnya:
var player = Session.GetComponent<FramePlayer>();
player.FilePathType = WritablePathType.Absolute;
player.FilePath = path;
Anda juga bisa melakukannya di editor dengan memilih AR Session (EasyAR) lalu mengubah opsi yang sesuai pada komponen Frame Player di jendela Inspector:

Jika tidak ada file yang ditentukan, atau jalur file tidak valid, frame player akan gagal saat session dimulai dan menampilkan log error:
File not found:
Pemutaran manual
Jika ingin mengontrol sendiri kapan pemutaran dimulai, sebelum session dimulai Anda dapat mengatur FramePlayer.enabled menjadi false:
Session.GetComponent<FramePlayer>().enabled = false;
Anda juga bisa melakukannya di editor dengan memilih AR Session (EasyAR) lalu menghapus centang Enabled pada komponen Frame Player di jendela Inspector:

Saat perlu memutar, gunakan Play() untuk memulai pemutaran.
Contohnya:
if (Session.Assembly.FrameSource is FramePlayer player)
{
player.Play();
}
Setiap kali Play() dipanggil, pemutaran sebelumnya akan dihentikan lalu dimulai dari awal (jika sebelumnya pernah diputar).
Hati-Hati
Saat memutar data baru, data yang sudah ada di scene tidak akan dibersihkan. Status komponen AR juga tidak akan direset; mereka akan berperilaku seolah-olah data kamera tiba-tiba melompat dari titik berhentinya data sebelumnya ke titik awal data baru.
Walaupun ini tidak terlalu memengaruhi sebagian fungsi, untuk fungsi yang bergantung pada pelacakan gerak (misalnya pemetaan ruang padat, Mega, dll.) hal ini dapat menyebabkan status fungsi menjadi abnormal dan memengaruhi hasil eksekusi. Karena itu disarankan untuk memulai ulang session sebelum memutar data baru agar semua komponen AR direset.
Menjeda dan melanjutkan
Gunakan FramePlayer.enabled untuk mengontrol jeda dan lanjut pemutaran.
Contohnya, atur FramePlayer.enabled = false untuk menjeda pemutaran:
player.enabled = false;
Setelah pemutaran dijeda, semua komponen AR akan berhenti bekerja. Konten scene dan logika interaksi belum tentu berhenti, tergantung kontennya. Setelah dilanjutkan, komponen AR akan bekerja lagi dari titik jeda.
Menghentikan pemutaran
Gunakan Stop() untuk menghentikan pemutaran.
player.Stop();
Setelah pemutaran dihentikan, semua komponen AR akan berhenti bekerja. Konten scene dan logika interaksi belum tentu berhenti, tergantung kontennya.
Melompat ke titik waktu tertentu (seek)
Gunakan Seek(double) untuk melompat ke titik waktu tertentu.
Contohnya, lompat 5 detik ke depan:
player.Seek(player.Time + 5);
Catatan
Setelah melompat, pemutaran mungkin tidak dimulai tepat di titik waktu yang dituju, tergantung pada cara encoding file EIF dan interval keyframe.
Tidak semua file EIF mendukung seek. Anda dapat menggunakan properti IsSeekable untuk memeriksa apakah file EIF yang sedang diputar mendukung seek.
Catatan
Hanya file EIF yang direkam dengan format H264 dan dihentikan dengan benar yang mendukung seek. Jika file EIF tidak mendukung seek, memanggil Seek(double) tidak akan berpengaruh apa pun.
Kontrol kecepatan pemutaran
Gunakan properti Speed untuk mengontrol kecepatan pemutaran.
Contohnya, tingkatkan kecepatan pemutaran sebesar 0.1 dari nilai awal:
player.Speed += 0.1;
Tidak semua file EIF mendukung kontrol kecepatan. Anda dapat menggunakan properti IsSpeedChangeable untuk memeriksa apakah file EIF yang sedang diputar mendukung kontrol kecepatan.
Catatan
Hanya file EIF yang direkam dengan format H264 dan dihentikan dengan benar yang mendukung kontrol kecepatan. Jika file EIF tidak mendukungnya, menetapkan Speed tidak akan berpengaruh apa pun.
Topik terkait
- Cobalah menggunakan alat verifikasi session; alat ini menyertakan pemutar EIF sederhana yang dapat membuat simulasi dengan file EIF menjadi lebih cepat