TDC Goiânia 2011

No dia 29 de Outubro, tive a oportunidade de participar do TDC Goiânia!
Não conhece o TDC? Veja este meu post anterior para mais detalhtes: TDC 2011 Florianópolis

Abaixo as apresentações

Abertura

image

HTML5

image

 

Muitas pessoas me pediram o projeto do Kinect e aqui está ele:

https://skydrive.live.com/embedicon.aspx/Palestras/2011-10-29%20TDC%20Goiania/KinectPowerPointControl.zip?cid=de5afe5b638592f4&sc=documents

Para mais detalhes do projeto original e um video de demonstração, veja este post do blog Controlando o PowerPoint com Kinect

Abraço,

Anúncios

Controlando o PowerPoint com Kinect


Assista em: http://www.youtube.com/watch?v=5qHJ–oe8kw

Resolvi fazer uma pequena modificação em um projeto de controle de PowerPoint através do Kinect.

O projeto original pode ser encontrado no codeplex e é de autoria de Joshua Blake http://kinectpowerpoint.codeplex.com

Vocês podem ver mais detalhes da implementação neste post http://channel9.msdn.com/coding4fun/kinect/NUI-for-PowerPoint

As minhas alterações fazem com que seja possível movimentar o PowerPoint não apenas afastando os seus braços do corpo, mas sim através de um movimento que expressa mais naturalmente a intenção do usuário de deslizar a página atual.

Abaixo o meu algoritmo super simples:

private bool isTrackingRightHand = false;
private bool isTrackingLeftHand = false;

private void ProcessForwardBackGestureEx(Joint head, Joint rightHand, Joint leftHand)
{

    if (isTrackingRightHand && rightHand.Position.X < head.Position.X - 0.10)
    {
        System.Windows.Forms.SendKeys.SendWait("{Right}");
        isTrackingRightHand = false;
    }

    if (!isTrackingRightHand && rightHand.Position.X > head.Position.X + 0.50)
    {
        isTrackingRightHand = true;
    }

    isForwardGestureActive = isTrackingRightHand;

    if (isTrackingLeftHand && leftHand.Position.X > head.Position.X + 0.10)
    {
        System.Windows.Forms.SendKeys.SendWait("{Left}");
        isTrackingLeftHand = false;
    }

    if (!isTrackingLeftHand && leftHand.Position.X < head.Position.X - 0.50)
    {
        isTrackingLeftHand = true;
    }

    isBackGestureActive = isTrackingLeftHand;

            
}

O que este trecho de código faz é começar a identificar um movimento quando o usuário afasta a sua mão 50cm da linha da cabeça.
Se o usuário continuar o movimento até que sua mão cruze a linha da cabeça em 10cm ele dispara o evento de avançar (para a mão direita) e de voltar (para a mão esquerda) a apresentação.

Procurei respeitar todo o funcionamento do programa, a única modificação necessária é adicionar este método, declarar as variáveis e substituir a chamada do método ProcessForwardBackGesture por ProcessForwardBackGestureEx

Simples não? Vejam o video para sentir o efeito!

Divirtame-se!