Kinect 2.0 + Unity 5 : Membuat Gesture (Discrete Mode) dengan Visual Gesture Builder

xxxx

Tutorial kali ini saya akan coba share bagaimana membuat custom gesture pada Kinect 2.0 dengan Kinect Studio kemudian meng-integrasikannya dengan Unity 3D. Misalnya Anda ingin membuat gesture Swipe Left atau Swipe Right sebagai event tertentu pada aplikasi Unity 3D Anda. Ini adalah quick tutorial, sehingga saya tidak akan menjelaskan terlalu panjang lebar namun secara garis besarnya saja. Oke, pertama siapkan Kinect 2.0 for Windows Anda, kemudian download Kinect SDK for 2.0 di : https://www.microsoft.com/en-us/download/details.aspx?id=44561. Saya asumsikan Anda telah berhasil mengunduh dan menginstal Kinect 2.0 SDK dan pastikan Kinect Studio 2.0 juga telah ada pada Programs di Windows Anda. Selanjutnya buka Kinect Studio :

Tampilan Kinect Studio

Ada beberapa menu tab, karena kita belum memiliki video clip dengan format .xef, maka pilih tab Record untuk merekam clip baru.

Record clip baru

Perhatikan pada button Connected / Disconnected. Pilih connected untuk konektifitas Kinect Studio dengan Kinect Anda sehingga muncul video seperti pada gambar diatas. Jika sudah, klik button record (Bulat merah). Rekam gesture yang Anda inginkan, misalnya Swipe to Rigjt, Klik, Open dan sebagainya. Klik stop jika telah selesai merekam gesture, kemudian Play terlebih dahulu untuk memastikan bahwa gesture yang Anda rekam benar.

Memainkan Clip .xef

Oke, kita telah selesai dengan Kinect Studio. Silahkan Buka Visual Gesture Builder pada program Anda.

Tampilan Visual Gesture Builder

Pilih file, kemudian pilih create new solution untuk membuat Gesture Database. Gesture database bisa berisi banyak gesture. Tergantung pada proses buildnya.

Menambahkan Gesture

Jika gesture databse sudah dibuat, selanjtnya tambahkan gesture baru. Klik kanan pada Gesture databse, kemudian Create new Project. Jika Anda pertama kali menggunakan atau membuat gesture, pilih Create New Project with Wizard.

Membuat Gesture baru dengan Wizard

Misalnya, saya membuat gesture dengan nama left_swipe dengan menggunakan wizard, maka didalam gesture database tadi akan muncul gesture left_swipe.

Menambahkan clip .xef

Sekarang kita akan menambahkan clip .xef yang sudah kita rekam dengan menggunakan Kinect Studio. Klik kanan pada gesture kemudian Add Clip, locate pada folder Repository Kinect Studio (Biasanya ada pada folder My Document/Kinect Studio/Repository).

Editing Clip

Jika telah berhasil, maka akan tertampil seperti pada gambar diatas. Seperti pada software video editing lainnya, disediakan panel untuk edit timeline atau frame. Pada VGB kita melakukan identifikasi gesture pada menu panel Control. Seleksi clip atau area frame yang akan dijadikan gesture. Tempatkan cursor pada posisi awal, tekan Shift kemudian geser menggunakan tombol reight arrow pada keyboard. Setelah terseleksi pada menu Tag kita akan menemukan variable boolean, isi value dengan true yang menandakan bahwa gesture terdeteksi pada saat frame terseleksi (Lihat garis biru pada panel Control yang telah di “True”). Pada tutorial kali ini saya menggunakan metode discrete, jika Anda membuat gesture yang cukup kompleks dan animated, pada pembuatan gesture (wizard) bisa memilih continuous. Apa itu discrete dan continuous, ikuti link berikut.

Gesture bernilai True

Jika telah selesai seleksi, klik pada nama gesture, klik kanan kemudian build. Maka nanti akan tersimpan sebagai file gesture (.gba). Kemudian kita test file .gba yang telah dibuat. Pilih file kemudian pilih Live Preview, locate pada file .gba yang telah di build tadi. Maka akan tampil Live Preview Windows seperti berikut :

Pilih Live Preview

Tampilan Live Preview

How to test ? Jika file .gba telah berhasil dimuat, maka akan menampilkan dua frame, frame pertama adalah kinect kamera dimana objet dideteksi, frame selanjutnya adalah untuk mendeteksi sejauh mana Confidence dari gesture tersebut. Semakin tinggi grafiknya, maka confodence nya semakin mendekati 1. Pastikan gesture yang Anda maksud sesuai dengan grafik, jika belum lakukan editing kembali.

Oke simpan dulu file .gba Anda, buat project baru dengan Unity Anda, kemudian download Kinect Plugin for Unity pada link berikut : http://go.microsoft.com/fwlink/?LinkId=513177. Extract hasil download dari link tadi, sehingga akan terdapat beberapa file. Import custom package dengan nama kinect.2.0.xxxxxx.unitypackage pada project Unity Anda. Selanjutnya kita membuat Script baru. Kali ini saya hanya akan menunjukan bagaimana mendeteksi gesture yang telah Anda buat, selanjutnya Anda bisa mengimplmentasikannya lebih jauh. Buat Script C# misalnya dengan nama GestureDetector.cs.

Define package yang akan kita pakai.

Buat beberapa variable sbagai gesture database, framesource, framereader dan kinect sensor. Kemudian definisikan gesture, karena tadi saya hanya membuat satu buah gesture swife_left maka saya hanya membuat satu variable gesture.

Ada beberapa setup yang harus kita lakukan pada saat Start() atau pada Awake() seperti konektifitas kinect, init file .gba dan init gesture frame. Kemudian dilakukan perulangan untuk menemukan gesture yang tersedia pada variable Gesture Database. Sesuaikan nama gesture yang telah dibuat pada VGB tadi. Misal saya membuat gesture dengan nama Swipe_Left, maka pastikan Anda juga mencocokan dengan nama tersebut. Anda bisa perhatikan di line berikut :

Oke, setelah kita definisikan bentuk gesture-nya, kemudian kita deteksi gesture tersebut sebagai frame arrived. Detek kondisi apakah gesture ter-captured atau tidak. So, let’s write that :

Perhatikan variable ‘result’. result bertipe data DiscreteGestureResult, jika frame lebih dari 0, yang artinya frame mendeteksi gesture, maka variable result diisi dengan frame terdeteksi dengan index sesuai gesture yang dimaksud. Terakhir cek kondisi jika result = terdeteksi dengan threshold atau Confidence mendekati nilai tertentu, maka do something. Scroll lagi keatas tentang nilai confidence. Panggil method yang telah kita buat tadi dalam tracking id sebagai FrameArrived dalam gesture frame reader :

Kita telah berhasil membuat script untuk deteksi gesture, last step simpan file .gba tadi dalam folder streaming assets pada folder asset dalam Unity Project Anda. Dan Bam! Selanjutnya silahkan berkreasi sesuai kebutuhan Anda. Dalam post ini saya hanya memakai satu gesture, prosesnya sama saja jika Anda menggunakan file gesture database (.gbd), tinggal nanti Anda definisikan gesture lainnya dalam proses setup. Silahkan tinggalkan komentar jika Ada yang perlu didiskusikan, salam.

Share :

[social_share style=”bar” align=”horizontal” heading_align=”inline” facebook=”1″ twitter=”1″ google_plus=”1″ linkedin=”1″ pinterest=”1″ /]

Related Posts:

3 thoughts on “Kinect 2.0 + Unity 5 : Membuat Gesture (Discrete Mode) dengan Visual Gesture Builder

  1. Hello, saya widi dr surabaya sedang melakukan tesis , apakah kinect v2.0 bisa berkerja d kinect v1.8?
    Saya lg kesusahan di drag n drop kinect v1.8 di unity 2d

  2. Kelupaan ,hehehe
    Sekali lagi terima kasih

Leave a Reply

Your email address will not be published. Required fields are marked *