790 likes | 1k Views
Bruno C. de Paula. Kinect. Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect. Quem sou eu?. Bruno Campagnolo de Paula brunodepaula@gmail.com http://www.brunocampagnolo.com http://twitter.com/bcp. Material deste tutorial. www.brunocampagnolo.com/tutorialkinect2011.
E N D
Bruno C. de Paula Kinect Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect
Quem sou eu? Bruno Campagnolo de Paula brunodepaula@gmail.com http://www.brunocampagnolo.com http://twitter.com/bcp
Material deste tutorial www.brunocampagnolo.com/tutorialkinect2011
Por que estou aqui? Centro de Engenharia de Sistemas Inteligentes
Por que estou aqui? PUCPR; Professor dos cursos de jogos e do curso de Sistemas de Informação;
Resumo Vamos aprender o que é o Kinect; Arquitetura básica; Falar sobre o princípios de funcionamento; Usar o FAAST para prototipação rápida de aplicativos com o Kinect; Demonstrar ferramentas de desenvolvimento e o SDK oficial. Comentar sobre aplicações e projetos.
Público-alvo da palestra • Pessoal da computação em geral; • Interessados em robótica; • Desenvolvedores de jogos; • Pesquisadores e desenvolvedores interessados no futuro dos sistemas de informação; • Educadores (gesture based learning).
O que é o Kinect? • Dispositivo de interação natural; • Microsoft; • XBOX 360 (jogos); • Lançamento: 4/11/2010; • 8 milhões vendidos em 60 dias (recorde); • 10 milhões até março de 2011; $$$
Motivação para criação do Kinect • Sucesso do Wii;
Wii / Kinect não são tão pioneiros!Dispositivos de interface natural • Trabalhos de Myron Krueger (Video Place); • Problemas sempre foram: performance e reconhecimento facial.
Wii / Kinect não são tão pioneiros!Dispositivos de interface natural Activator, EyeToy, Track IR
Wii / Kinect não são tão pioneiros!Dispositivos de interface natural Não faça com o Kinect o que uma câmera normal resolve! Exemplo de projeto final.
Kinect não é o único dispositivo moderno de interface natural atual • Wavi Xtion da Asus
Kinect não vai ser o único dispositivo futuro de interface natural • Windows 8/9; • iOs 6;
Projeto Natal - Origem • Forte P&D; • Alex Kipmann - Diretor de incubação da Microsoft; • PrimeSense; • 3DV Systems.
History is about to be rewritten. This time human beings will be at the centre -- and the machines will be the ones that adapt. (apresentação do Kinect 2010)
Qualquer tecnologia suficientemente avançada é indistinguível de magia. Arthur C. Clarke
Arquitetura do Kinect Projetor de Luz Infravermelha (invisível) Câmera RGB (“comum”) Câmera infravermelha Motor Conjunto de microfones
Arquitetura do KinectImage Stream • Cada pixel representa uma cor; • 640x480 (30 fps) OU • 1280x1024 (máximo 15 fps);
Arquitetura do KinectDepth Stream • Cada pixel representa a distância em relação ao objeto; • 11 bits de precisão (2048 níveis de sensibilidade); • 1.2 a 3.5 metros; • 640x480 (30 fps – sem informação do jogador) e 320x240 (30 fps – com informação do jogador);
Arquitetura do KinectAudio Stream • 4 microfones; • Anula ruído e eco. • Permite gravação de audio; • Excelente reconhecimento de fala (em inglês);
Arquitetura do KinectMotor • 27 graus para cima ou para baixo; • Não chamar com muita freqüencia; • SDK, por exemplo, limita em 15 vezes a cada 20 segundos.
Sensor de profundidade 3d do Kinect Projetor de Luz Infravermelha Sensor de Profundidade 3D Câmera infravermelha
Princípio de funcionamento do sensor de profundidade 3D • Medição de um “padrão” invisível projetado no corpo; Observação: não é uma câmera estereoscópica!
Informações de esqueleto dos jogadores • Detecta até 6 jogadores; • Obtém informação de esqueleto de 2 jogadores; • Dá para obter a qualidade da captura; • Este é o grande destaque do Kinect na área de Machine Learning.
O que dá para fazer com tudo isto? • Vídeo sobre Os 5 primeiros meses do Kinect; • Antes do lançamento do SDK Oficial!!
Desenvolvendo para o Kinect • Drivers abertos (Open Kinect): • Windows XP, Vista, 7; • MacOS X; • Linux; • Open Source; • OpenNI (PrimeSense): • Windows, Linux, Mac OS X; • Kinect SDK: • Oficial da Microsoft; • Apenas para Windows 7;
Desenvolvendo para o KinectDrivers abertos • Após o lançamento foi “hackeado” em poucos dias; • Ele é um dispositivo USB não criptografado! • Microsoft já estava prevendo usos fora do XBOX; • Open Kinect Contest • US$ 3.000,00;
Desenvolvendo para o KinectOpenNI • Wrappers para linguagens diversas: • C, C++, Processing, Java, Scratch; • Fácil de integrar com o FAAST; • O FAAST permite a criação de programas para o Kinect sem saber programar para o Kinect.
Desenvolvendo para o Kinect SDK oficial • 13/junho/2011 • Windows 7; • 2GB RAM; • DirectX 9.0c; • Dual Core 2.66 GHz; • Versão Beta; • Licença não-comercial (cuidado!!);
FAAST Flexible Action and Articulated Skeleton Toolkit; University of Southern California; Permite o mapeamento de movimentos do corpo em ações de dispositivos tradicionais de interação (mouse e teclado); Também faz o streaming via VRPN (Virtual Reality Peripheral Network); Elimina a necessidade de programação; Adequado para prototipação rápida.
Instalação Usar o Zigfu Dev Bundle; OU: Instalar OpenNI; Instalar NITE; Instalar sensores. Veja mais detalhes no texto do tutorial.
Configuração do sensor Full Body: o corpo todo é considerado; Upper Body: apenas a parte superior do corpo; Lower Body: apenas a parte inferior; Hands Only: apenas as mãos, pode utilizar um focus gesture para habilitar o reconhecimento das ações; Smoothing factor: suavização da perturbação do movimento. 0.07~0.08 para controle de mouse preciso.
Calibração Pose de psi; Essencial em aplicação baseada em OpenNI.
Controle de mouse Associação da mão esquerda ou direita à posição do mouse; Controle absoluto: posição do mouse determinada a partir da posição dentro do bounding rectangle; Controle relativo: velocidade do mouse determinada a partir da distância até o bounding rectangle;
Controle do mouse Forward Threshold: distância que a mão deve ser extendida à frente para ativar o controle do mouse. Movement Threshold: valor mínimo em pixels necessário para alterar a posição do mouse; Speed: no movimento relativo, velocidade máxima nos limiares.
Mapeamento de ações em eventos nome_ação: nome da pose ou gesto; limiar: mínimo de ativação, depende da ação; tipo_evento: tipo de evento que será gerado; nome_evento: evento específico que será gerado. Ver tabelas 1, 2 e 3 no texto do tutorial!
Exemplo 1 lean_left 20 key_hold left_arrow lean_right 20 key_hold right_arrow jump 2 key_press space
Exemplo 2 lean_left 20 key_hold a lean_right 20 key_hold d lean_forwards 15 key_hold w lean_backwards 15 key_hold s
Atividade! Crie controles para os seguintes jogos: Canabalt; Muulti-Muu. Angry Birds;
PARTE 3Programando para o Kinect Exemplos em: Processing SDK Oficial
Usando o Processing Processing é uma linguagem voltada para desenho, animação e interação; Bastante adequada para prototipação rápida de jogos.
Exemplos de uso da biblioteca SimpleOpenNI exemplo1; exemplo2; Estudo de caso: 3dpht.