Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect
-
Upload
bruno-campagnolo -
Category
Technology
-
view
5.881 -
download
2
Transcript of Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect
Kinect
Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect
Bruno C. de Paula
2
Quem sou eu? Bruno Campagnolo de Paula
http://www.brunocampagnolo.com
http://twitter.com/bcp
Material deste tutorial
www.brunocampagnolo.com/tutorialkinect2011
Por que estou aqui?402/05/23
Centro deEngenharia de Sistemas Inteligentes
Por que estou aqui?PUCPR;Professor dos cursos de jogos e do curso
de Sistemas de Informação;
ResumoVamos 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 palestraPessoal 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).
702/05/23
PARTE 1
O que é o Kinect?
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;
902/05/23
Motivação para criação do KinectSucesso do Wii;
1002/05/23
Wii / Kinect não são tão pioneiros!Dispositivos de interface naturalTrabalhos de Myron Krueger (Video Place);
Problemas sempre foram: performance e reconhecimento facial.
1102/05/23
Wii / Kinect não são tão pioneiros!Dispositivos de interface naturalActivator, EyeToy, Track IR
Wii / Kinect não são tão pioneiros!Dispositivos de interface naturalNã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 atualWavi Xtion da Asus
1402/05/23
Kinect não vai ser o único dispositivo futuro de interface naturalWindows 8/9; iOs 6;
1502/05/23
Projeto Natal - OrigemForte P&D;Alex Kipmann -
Diretor de incubação da Microsoft;
PrimeSense;3DV Systems.
1602/05/23
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)
1802/05/23
Se você sabe mover-se você sabe usar o Kinect
1902/05/23
Qualquer tecnologia suficientemente avançada é indistinguível de magia.
Arthur C. Clarke
Arquitetura do Kinect2002/05/23
Arquitetura do Kinect 2102/05/23
Projetor de Luz Infravermelha (invisível)
Câmera RGB (“comum”)
Câmera infravermelha
Conjunto de microfones
Motor
Arquitetura do Kinect2202/05/23
Arquitetura do KinectImage StreamCada pixel representa uma cor;640x480 (30 fps) OU1280x1024 (máximo 15 fps);
2302/05/23
Arquitetura do KinectDepth StreamCada 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);
2402/05/23
Arquitetura do KinectAudio Stream4 microfones;Anula ruído e eco.Permite gravação de audio;Excelente reconhecimento de fala (em
inglês);
2502/05/23
Arquitetura do KinectMotor27 graus para cima ou para baixo;Não chamar com muita freqüencia;SDK, por exemplo, limita em 15 vezes a
cada 20 segundos.
2602/05/23
Sensor de profundidade 3d do Kinect2702/05/23
Projetor de Luz Infravermelha
Câmera infravermelhaSensor de Profundidade 3D
Princípio de funcionamento do sensor de profundidade 3DMedição de um “padrão” invisível
projetado no corpo;
2802/05/23
Observação: não é uma câmera estereoscópica!
Informações de esqueleto dos jogadoresDetecta 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.
2902/05/23
Informações de esqueleto dos jogadores
O que dá para fazer com tudo isto?Vídeo sobre Os 5 primeiros meses do
Kinect;Antes do lançamento do SDK Oficial!!
3102/05/23
Desenvolvendo para o KinectDrivers 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;
3202/05/23
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;
3302/05/23
Desenvolvendo para o KinectOpenNIWrappers 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.
3402/05/23
Desenvolvendo para o Kinect SDK oficial13/junho/2011Windows 7;2GB RAM;DirectX 9.0c;Dual Core 2.66 GHz;Versão Beta;Licença não-comercial (cuidado!!);
3502/05/23
PARTE 2Prototipação rápida para o Kinect usando o FAAST
FAASTFlexible 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çãoUsar o Zigfu Dev Bundle;OU:
Instalar OpenNI;Instalar NITE;Instalar sensores.
Veja mais detalhes no texto do tutorial.
Tela inicial do FAAST
Configuração do sensorFull 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çãoPose de psi;Essencial em aplicação baseada em
OpenNI.
Controle de mouseAssociaçã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 mouseForward 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 1lean_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:ProcessingSDK Oficial
Usando o ProcessingProcessing é
uma linguagem voltada para desenho, animação e interação;
Bastante adequada para prototipação rápida de jogos.
Exemplos de uso da biblioteca SimpleOpenNIexemplo1;exemplo2;Estudo de caso: 3dpht.
DEMOS do QuickStart do Kinecthttp://channel9.msdn.com/Series/KinectSDKQuickstarts/ 1)Instalação do Sensor / Download do SDK; 2) Configurando o ambiente; 3) Criando um projeto Kinect no Visual Studio; 4) Exibindo a imagem da câmera; 5) Alterando o ângulo de elevação da câmera; 6)
Trabalhando com a informação de profundidade;
7) Obtendo informações do esqueleto 8) Reconhecimento de fala.
5102/05/23
1)Instalação do SensorO Kinect que vem no
Bundle do XBOX não tem o cabo de energia (pode ser comprado a parte);
Não coloque 2 Kinects ou 2 câmeras no mesmo hub USB;
Verifique a versão do Windows (64 / 32 bits).
5202/05/23
2) Configurando o ambiente Instalar Visual Studio (pode ser o
Express); Instalar DirectX SDK – Junho 2010; Instalar Runtime do DirectX;Se quiser usar o reconhecimento de
voz:Speech Runtime 10.2;Kinect Speech Platform;Speech SDK;
5302/05/23
3) Criando um projeto Kinect no Visual Studio
5402/05/23
3) Criando um projeto Kinect no Visual Studio
5502/05/23
3) Criando um projeto Kinect no Visual Studio
5602/05/23
*
4) Exibindo a imagem da câmeraVer eventos VideoFrameReady e
DepthFrameReady;
5702/05/23
5) Alterando o ângulo de elevação da câmera nui.NuiCamera.ElevationAngle =
(int)slider1.Value; Máximo de 15 mudanças em 20
segundos; -27 a +27 graus;
5902/05/23
6) Trabalhando com informação de profundidadeCálculo da distância em milímetros:
Depth Image Type;• Bitshift o segundo byte por 8;•Distância = (int) Bits[0] | Bits[1] << 8;
DepthAndPlayerIndex Type:• Bitshift do primeiro por 3 e do segundo por 5;•Distância = (int) Bits[0] | Bits[1] << 5;
O Player Index indica o jogador que está contido naquele ponto;
Máximo de 6 jogadores;
6002/05/23
7) Obtendo informações do esqueleto
6102/05/23
Evento SkeletonFrameReady.
7) Obtendo informações do esqueletoCada joint retorna:
X – Posição horizontal entre -1 e 1Y – Posição vertical entre -1 e 1Z – Distância até o Kinect em metros
Cada joint tem um estado associado:Tracked;Not Tracked: raro;Inferred: oclusão, cortado, baixa
confiança.
6202/05/23
PARTE 4Aplicações
Kinect Effecthttp://www.xbox.com/en-US/kinect/kinec
t-effect?uid=150260184&tid=
Aplicações e possibilidades do KinectControle de dispositivos através das
mãos (Minority Report);
6502/05/23
Aplicações e possibilidades do KinectControle robótico:
Kits que eram $28.000 agora são $500;
Exemplo com quadricóptero;
6602/05/23
Aplicações e possibilidades do KinectMocap baratíssimo!
6702/05/23
Aplicações e possibilidades do KinectVideo conferência 3D;
6802/05/23
Aplicações e possibilidades do KinectScanner 3D (melhor ainda se integrado
com uma impressora 3D);
6902/05/23
Aplicações e possibilidades do KinectKinect + Realidade Aumentada
7002/05/23
Aplicações e possibilidades do KinectKinect Shopping
7102/05/23
Aplicações e possibilidades do KinectTrocar canal da TV;Adaptação de jogos normais para Kinect;Ensino de idiomas;Ensino em geral;Sistema de navegação para carros;Música;Aplicações médicas;Controle de Apresentação (PowerPoint);COLOQUE A SUA IDEIA AQUI!!!!
7202/05/23
Mas, não precisa usar o Kinect para tudo...Cliente Twitter usando o Kinect;
7302/05/23
Links RecomendadosKinect Hacks:
http://kinecthacks.net/Portal que centraliza aplicativos e
testes com o Kinect.Kinect Education:
http://www.kinecteducation.com/Usos do Kinect na educação;
7402/05/23
Links RecomendadosKinect SDK:
http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/
Portal oficial da Microsoft sobre desenvolvimento para o Kinect;
Coding4Fun Kinect Toolkit:http://c4fkinect.codeplex.com/Bibliotecas extras úteis para uso com
o SDK.
7502/05/23
Links RecomendadosOpenKinect:
http://openkinect.org/wiki/Main_PageDownload dos drivers open source -
libfreenect;OpenNI:
http://www.openni.org/Download dos drivers da PrimeSense.
7602/05/23
Material Extra e Referênciashttp://blogs.msdn.com/b/
uk_faculty_connection/archive/2011/06/21/kinect-for-windows-sdk-event.aspx
http://readwriteweb.com.br/2010/11/09/um-cientista-explica-o-microsoft-kinect/
http://www.kinecteducation.com/http://www.wired.co.uk/magazine/
archive/2010/11/features/the-game-changer?page=all
7702/05/23
78
Obrigado!!
[email protected] http://www.brunocampagnolo.com http://twitter.com/bcpwww.brunocampagnolo.com/tutorialkinect2011