Voglio verificare se una mano in un fotogramma di salto è attualmente un pugno.Rilevamento di un pugno con Leap Motion SDK V2
Il metodo suggerito di solito è quello di cercare hand.grabStrength
con un valore pari a 1. Il problema è che il valore passa a 1 anche con dita "artiglio" Hand, o qualsiasi altra cosa con leggermente arricciato.
Un altro approccio sarebbe quello di verificare su ogni dito se è extended
. Ma questo ha un problema simile, le dita contano solo se estese se sono completamente diritte. Quindi, anche se controllo che tutte le dita non siano estese, si verifica lo stesso problema di cui sopra (le mani simili a un artiglio vengono riconosciute come afferrate).
La combinazione di questi due metodi non risolve il problema, il che non sorprende dato che entrambi soffrono degli stessi problemi.
Ora, abbiamo a disposizione tutte le ossa di ogni dito, con posizioni e tutto. Ma non ho idea di dove iniziare con la matematica per rilevare se un dito è arricciato.
Fondamentalmente ho questa messa a punto, per ora:
var controller = Leap.loop(function(frame){
if(frame.hands.length>0){
//we only look at the first available hand
var hand = frame.hands[0];
//we get the index finger only, but later on we should look at all 5 fingers.
var index = hands.fingers[1];
//after that we get the positions of the joints between the bones in a hand
//the position of the metacarpal bone (i.e. the base of your hand)
var carp = index.carpPosition;
//the position of the joint on the knuckle of your hand
var mcp = index.mcpPosition;
//the position of the following joint, between the proximal and the intermediate bones
var pip = index.pipPosition;
//the position of the distal bone (the very tip of your finger)
var dip = index.dipPosition;
//and now we need the angle between each of those positions, which is where i'm stuck
}
});
Allora, come faccio ad avere l'angolo tra due di queste posizioni (carpa di MCP, MCP a Pip, pip a tuffo)? Qualche idea?
Non dovrebbe anche passare le dita spezzate sul giunto, indicando la direzione opposta angolare necessaria fare un pugno (come se completamente libero dalla gamma del giunto)? : D. * cringe * –
Suppongo che lo farebbe, ma questa matematica è un po 'troppo complessa per me. : P – DodgerThud
Ho trovato una buona soluzione usando la distanza tra ogni dito e il palmo. Calcola la somma di queste distanze e controlla se si trova al di sotto di una certa soglia. – whoabackoff