Hareket Tanıma Stratejileri


12

Wii ile çalışarak genellikle basit hareketleri tanımayı gerekli görüyorum, şimdiye kadar oyun tasarım belgelerimizde çağrılan hareketleri tanımak için çoğunlukla ivmenin büyüklüğüne bakabildim, ancak oluşturmak istiyorum örnek hareketlerin "kaydedilmesine" ve karmaşık hareketlerin tanınmasına izin veren daha sağlam bir sistem.

Geçmişte hangi stratejileri kullandınız? Neden çalıştılar? Neden çalışmadılar? Farklı ne yapardın?

Yanıtlar:


5

Düzenle Affine değişmezliği, görünüşe göre bu eğrilik sürümünü gerektirir.
http://en.wikipedia.org/wiki/Affine_curvature#Affine_curvature
Ne demek istediğimi varsayalım. (Her ne kadar normal eğrilik olsa da, yeterince iyi olabilecek rotasyonlara değişmez).
Düzen burada eğrilik görünüm bir ölçek değişmez sürümü için
/math/1329/what-is-the-form-of-curvature-that-is-invariant-under-rotations-and-uniform- Scali

Jest tanıma problemleri tanıma problemlerinin bir alt sınıfıdır ve tanıma problemleri temel olarak model karşılaştırma problemleridir.

Jestinizi bazı jest koleksiyonuna uydurmaya çalıştığınızda, en iyi jest kazanır.

Jestinizi birkaç kez kaydederim ve egzersiz verilerinizi b-spline (eğri) gibi bir şeye sığdırmaya çalışırdım. Muhtemelen hareketlerinizin dönüşümleri (rotasyonlar, ölçekleme, çeviri) ilgilendirmek için değişmez olmasını istersiniz, bu nedenle eğriyi kontrolün Kartezyen koordinatlarının aksine eğrilik değerleri tablosu olarak saklayın (güzel bir kapalı forma sahip olma olasılığı düşüktür). puan.

Bu bir jest modeli. Diyelim ki birkaç tane var.

Bunları karşılaştırmak için giriş verilerinizi yerleştirerek başlayın ve sonra x eğriliği x sayısını değerlendirin; burada x, doğruluk ve performans arasında iyi bir denge sağlar.

Şimdi modeller arasında yineleme yapın ve eğrilik değerlerini (ilgili eğriler boyunca aynı noktada ark uzunluğu açısından değerlendirilen) çıkarın ve farkı karelayın. Ortaya çıkan değere artık denir. Tüm kalıntıları toplayın. En küçük kalıntıya sahip model en uygun olanıdır ve en olası jestinizdir.

Cevabımı @ Olie's ile karşılaştırın. Bunlar, jest için farklı modeller seçmemize rağmen, temel olarak aynıdır (imzalı eğrinin bir tablosunu oluşturmak ve tanjant açısındaki değişikliği kaydetmek neredeyse aynıdır, verilerin pürüzsüz bir şekilde oluşturulduğunu varsayıyorum. gürültü ile eğri), ana fark @Olie hız dahil olmasıdır.

Modelinize hangi parametrelerin dahil edileceğini seçmek, duruma ve performans gereksinimlerine bağlıdır. Modelinize parametre eklemenin boyutu artırdığını unutmayın.


4

Çok geniş terimlerle, muhtemelen bir hareketi bir yön olarak tanımlamak, ardından [muhtemelen çok kısa] bir gecikme ve ardından başka bir yön (ve yönler arasındaki göreceli açılar, vb.) Sonuna kadar tanımlamak istersiniz.

Örneğin, değnek ile bir "t" yapmak (ve bazı insanların lefties olduğunu unutmayın, bu yüzden tanımlarınız elle bağımlı olmamalıdır!) Dikey bir swoosh, kısa gecikme, ters eğme, kısa gecikme, ters yatay, ani durma.

Hareketi okurken, okunan kalıbın kalıp açıklamasına ne kadar yakın olduğunu görmek istersiniz.

Genel olarak, tanım sözlüğünü ilk önce belirgin yanlış eşleşmeleri (doğru başlamayan veya çok uzun veya çok kısa olanları) ortadan kaldırarak, kalan hareketi tanımlara göre "puanlayabilirsiniz". Her bir bölümü, tanımı (% 0-100) ve RMS-ing'in (hataları al, kare, toplamı ve daha sonra bu toplamın karekökünü) ne kadar iyi eşleştirdiğine göre derecelendirerek hareketi puanlayın.

RMS kullanımı büyük farkları vurgular (daha düşük bir puanla sonuçlanır) ve küçük farklar üzerinde daha iyi bir parlaklık sağlar (daha iyi bir eşleşme sağlar).

Bu konuda bir ton malzeme var - Google jest tanıma. Bir kalem veya Wii olmayan başka bir şey için endişelenmeyin, ilkeler iyi uyum sağlar.


0

Bunu sadece fare ile yaptım, ama benim çözümüm gerçekten işe yaradı. Jesti temsil etmek için noktaların nokta desenini birleştirdim - çizilecek şekil bu. Sonra imlecin yolunu hareket ederken sakladım. Daha sonra bu fare yolunu, hedef desenle aynı genişliğe ve yüksekliğe sahip olacak şekilde ölçeklendirdim. Her güncelleme, her bir hareket yolu noktasına sırayla bakarak, her biri bir hareket yolu düğümünde belirli bir mesafe içinde olduklarından emin olarak imleç yolumun tüm noktalarında dolaştım.


0

AiLive'daki baş geliştiricilerden biri tarafından Game AI'ya öğretildi (bazı videolarda var) ve kısa cevap, bu jest tanımalarını yapmaya çalışmanın hayatınızı geçirmek için çok acı verici olmasıdır. Ara yazılım yoluna gitmenizi ve AiLive'ın LiveMove paketini almanızı öneririm.

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.