Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

5.828 visualizações

Publicada em

Tutorial apresentado no SBGames 2011.
Link relacionado: http://www.brunocampagnolo.com/tutorialkinect2011/

Publicada em: Tecnologia
1 comentário
3 gostaram
Estatísticas
Notas
Sem downloads
Visualizações
Visualizações totais
5.828
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1.761
Ações
Compartilhamentos
0
Downloads
126
Comentários
1
Gostaram
3
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide
  • + Dados (http://www.lukew.com/ff/entry.asp?1348): 2,5 milhões em 30 dias; 2/3 dos donos de XBOX americanos compraram um Kinect; Ganhou o MacRober Award. 11/11/11
  • 11/11/11
  • http://veja.abril.com.br/noticia/vida-digital/%E2%80%9Cdesenvolvi-o-primeiro-prototipo-em-dois-meses%E2%80%9D-diz-criador-do-kinect "Ao acordar um dia, percebi que não havia qualquer dispositivo eletrônico ao meu redor e gostei daquela sensação. Então, pensei que seria bom jogar games daquela maneira, sem fios ou controles: decidi dar fim aos botões” http://www.engadget.com/2009/06/03/microsofts-project-natal-roots-revealed-3dv-systems-zcam/ 11/11/11
  • http://jogos.uol.com.br/videos/player.jhtm?mediaId=entrevista-com-alex-kipman-04029B3560D0B98307 11/11/11
  • Fonte: http://www.wired.com/magazine/2011/06/mf_kinect/all/1 11/11/11
  • Imagem original: - http://blogs.msdn.com/b/eternalcoding/archive/2011/06/13/unleash-the-power-of-kinect-for-windows-sdk.aspx 11/11/11
  • Ilustração do design de referência da PrimeSense, parceira da Microsoft no desenvolvimento do Kinect Retirado de: http://readwriteweb.com.br/2010/11/09/um-cientista-explica-o-microsoft-kinect/ Fonte da 2ª imagem: http://www.wired.com/gadgetlab/2010/11/kinect-teardown-reveals-ir-projector-fan/ 11/11/11
  • Figura original em: http://www.mattcutts.com/blog/open-kinect-contest/ Veja também o video em: http://www.youtube.com/watch?v=nvvQJxgykcU 11/11/11
  • Ver mais sobre como hackear um dispositivo USB: http://www.ladyada.net/learn/diykinect/ 11/11/11
  • left_arm_up 5 key_hold x left_arm_up 5 mouse_hold left_button
  • Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

    1. 1. Kinect Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect Bruno C. de Paula
    2. 2. Quem sou eu? Bruno Campagnolo de Paula brunodepaula@gmail.com http://www.brunocampagnolo.com http://twitter.com/bcp
    3. 3. Material deste tutorial <ul><li>www.brunocampagnolo.com/tutorialkinect2011 </li></ul>
    4. 4. Por que estou aqui? 11/11/11 Centro de Engenharia de Sistemas Inteligentes
    5. 5. Por que estou aqui? <ul><li>PUCPR ; </li></ul><ul><li>Professor dos cursos de jogos e do curso de Sistemas de Informação; </li></ul>
    6. 6. Resumo <ul><li>Vamos aprender o que é o Kinect; </li></ul><ul><li>Arquitetura básica ; </li></ul><ul><li>Falar sobre o princípios de funcionamento ; </li></ul><ul><li>Usar o FAAST para prototipação rápida de aplicativos com o Kinect; </li></ul><ul><li>Demonstrar ferramentas de desenvolvimento e o SDK oficial. </li></ul><ul><li>Comentar sobre aplicações e projetos. </li></ul>
    7. 7. Público-alvo da palestra <ul><li>Pessoal da computação em geral ; </li></ul><ul><li>Interessados em robótica ; </li></ul><ul><li>Desenvolvedores de jogos; </li></ul><ul><li>Pesquisadores e desenvolvedores interessados no futuro dos sistemas de informação ; </li></ul><ul><li>Educadores ( gesture based learning ). </li></ul>11/11/11
    8. 8. PARTE 1 O que é o Kinect?
    9. 9. O que é o Kinect? <ul><li>Dispositivo de interação natural ; </li></ul><ul><li>Microsoft; </li></ul><ul><li>XBOX 360 ( jogos ); </li></ul><ul><li>Lançamento: 4/11/2010 ; </li></ul><ul><li>8 milhões vendidos em 60 dias ( recorde ); </li></ul><ul><li>10 milhões até março de 2011; </li></ul>11/11/11
    10. 10. Motivação para criação do Kinect <ul><li>Sucesso do Wii; </li></ul>11/11/11
    11. 11. Wii / Kinect não são tão pioneiros! Dispositivos de interface natural <ul><li>Trabalhos de Myron Krueger (Video Place); </li></ul><ul><li>Problemas sempre foram: performance e reconhecimento facial. </li></ul>11/11/11
    12. 12. Wii / Kinect não são tão pioneiros! Dispositivos de interface natural <ul><li>Activator, EyeToy, Track IR </li></ul>
    13. 13. Wii / Kinect não são tão pioneiros! Dispositivos de interface natural <ul><li>Não faça com o Kinect o que uma câmera normal resolve! </li></ul><ul><li>Exemplo de projeto final. </li></ul>
    14. 14. Kinect não é o único dispositivo moderno de interface natural atual <ul><li>Wavi Xtion da Asus </li></ul>11/11/11
    15. 15. Kinect não vai ser o único dispositivo futuro de interface natural <ul><li>Windows 8/9; </li></ul><ul><li>iOs 6; </li></ul>11/11/11
    16. 16. Projeto Natal - Origem <ul><li>Forte P&D; </li></ul><ul><li>Alex Kipmann - Diretor de incubação da Microsoft; </li></ul><ul><li>PrimeSense ; </li></ul><ul><li>3DV Systems. </li></ul>11/11/11
    17. 17. 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 )
    18. 18. 11/11/11 Se você sabe mover-se você sabe usar o Kinect
    19. 19. 11/11/11 Qualquer tecnologia suficientemente avançada é indistinguível de magia. Arthur C. Clarke
    20. 20. Arquitetura do Kinect 11/11/11
    21. 21. Arquitetura do Kinect 11/11/11 Projetor de Luz Infravermelha (invisível) Câmera RGB (“comum”) Câmera infravermelha Conjunto de microfones Motor
    22. 22. Arquitetura do Kinect 11/11/11
    23. 23. Arquitetura do Kinect Image Stream <ul><li>Cada pixel representa uma cor; </li></ul><ul><li>640x480 (30 fps) OU </li></ul><ul><li>1280x1024 ( máximo 15 fps); </li></ul>11/11/11
    24. 24. Arquitetura do Kinect Depth Stream <ul><li>Cada pixel representa a distância em relação ao objeto; </li></ul><ul><ul><li>11 bits de precisão ( 2048 níveis de sensibilidade); </li></ul></ul><ul><ul><li>1.2 a 3.5 metros; </li></ul></ul><ul><li>640x480 (30 fps – sem informação do jogador) e 320x240 (30 fps – com informação do jogador); </li></ul>11/11/11
    25. 25. Arquitetura do Kinect Audio Stream <ul><li>4 microfones; </li></ul><ul><li>Anula ruído e eco. </li></ul><ul><li>Permite gravação de audio; </li></ul><ul><li>Excelente reconhecimento de fala (em inglês ); </li></ul>11/11/11
    26. 26. Arquitetura do Kinect Motor <ul><li>27 graus para cima ou para baixo; </li></ul><ul><li>Não chamar com muita freqüencia; </li></ul><ul><li>SDK, por exemplo, limita em 15 vezes a cada 20 segundos. </li></ul>11/11/11
    27. 27. Sensor de profundidade 3d do Kinect 11/11/11 Projetor de Luz Infravermelha Câmera infravermelha Sensor de Profundidade 3D
    28. 28. Princípio de funcionamento do sensor de profundidade 3D <ul><li>Medição de um “ padrão ” invisível projetado no corpo; </li></ul>11/11/11 Observação: não é uma câmera estereoscópica !
    29. 29. Informações de esqueleto dos jogadores <ul><li>Detecta até 6 jogadores ; </li></ul><ul><li>Obtém informação de esqueleto de 2 jogadores ; </li></ul><ul><li>Dá para obter a qualidade da captura; </li></ul><ul><li>Este é o grande destaque do Kinect na área de Machine Learning . </li></ul>11/11/11
    30. 30. Informações de esqueleto dos jogadores
    31. 31. O que dá para fazer com tudo isto? <ul><li>Vídeo sobre Os 5 primeiros meses do Kinect; </li></ul><ul><li>Antes do lançamento do SDK Oficial!! </li></ul>11/11/11
    32. 32. Desenvolvendo para o Kinect <ul><li>Drivers abertos ( Open Kinect ): </li></ul><ul><ul><li>Windows XP, Vista, 7; </li></ul></ul><ul><ul><li>MacOS X; </li></ul></ul><ul><ul><li>Linux; </li></ul></ul><ul><ul><li>Open Source; </li></ul></ul><ul><li>OpenNI (PrimeSense): </li></ul><ul><ul><li>Windows, Linux, Mac OS X; </li></ul></ul><ul><li>Kinect SDK : </li></ul><ul><ul><li>Oficial da Microsoft; </li></ul></ul><ul><ul><li>Apenas para Windows 7 ; </li></ul></ul>11/11/11
    33. 33. Desenvolvendo para o Kinect Drivers abertos <ul><li>Após o lançamento foi “hackeado” em poucos dias ; </li></ul><ul><li>Ele é um dispositivo USB não criptografado ! </li></ul><ul><li>Microsoft já estava prevendo usos fora do XBOX; </li></ul><ul><li>Open Kinect Contest </li></ul><ul><ul><li>US$ 3.000,00; </li></ul></ul>11/11/11
    34. 34. Desenvolvendo para o Kinect OpenNI <ul><li>Wrappers para linguagens diversas: </li></ul><ul><ul><li>C, C++, Processing, Java, Scratch; </li></ul></ul><ul><li>Fácil de integrar com o FAAST ; </li></ul><ul><li>O FAAST permite a criação de programas para o Kinect sem saber programar para o Kinect. </li></ul>11/11/11
    35. 35. Desenvolvendo para o Kinect SDK oficial <ul><li>13/junho/2011 </li></ul><ul><li>Windows 7; </li></ul><ul><li>2GB RAM; </li></ul><ul><li>DirectX 9.0c; </li></ul><ul><li>Dual Core 2.66 GHz; </li></ul><ul><li>Versão Beta ; </li></ul><ul><li>Licença não-comercial ( cuidado !!) ; </li></ul>11/11/11
    36. 36. PARTE 2 Prototipação rápida para o Kinect usando o FAAST
    37. 37. FAAST <ul><li>Flexible Action and Articulated Skeleton Toolkit; </li></ul><ul><li>University of Southern California; </li></ul><ul><li>Permite o mapeamento de movimentos do corpo em ações de dispositivos tradicionais de interação (mouse e teclado); </li></ul><ul><li>Também faz o streaming via VRPN (Virtual Reality Peripheral Network); </li></ul><ul><li>Elimina a necessidade de programação; </li></ul><ul><li>Adequado para prototipação rápida . </li></ul>
    38. 38. Instalação <ul><li>Usar o Zigfu Dev Bundle ; </li></ul><ul><li>OU: </li></ul><ul><ul><li>Instalar OpenNI; </li></ul></ul><ul><ul><li>Instalar NITE; </li></ul></ul><ul><ul><li>Instalar sensores. </li></ul></ul><ul><li>Veja mais detalhes no texto do tutorial. </li></ul>
    39. 39. Tela inicial do FAAST
    40. 40. Configuração do sensor <ul><li>Full Body : o corpo todo é considerado; </li></ul><ul><li>Upper Body : apenas a parte superior do corpo; </li></ul><ul><li>Lower Body : apenas a parte inferior; </li></ul><ul><li>Hands Only : apenas as mãos, pode utilizar um focus gesture para habilitar o reconhecimento das ações; </li></ul><ul><li>Smoothing factor : suavização da perturbação do movimento. 0.07~0.08 para controle de mouse preciso. </li></ul>
    41. 41. Calibração <ul><li>Pose de psi ; </li></ul><ul><li>Essencial em aplicação baseada em OpenNI. </li></ul>
    42. 42. Controle de mouse <ul><li>Associação da mão esquerda ou direita à posição do mouse; </li></ul><ul><li>Controle absoluto : posição do mouse determinada a partir da posição dentro do bounding rectangle ; </li></ul><ul><li>Controle relativo : velocidade do mouse determinada a partir da distância até o bounding rectangle ; </li></ul>
    43. 43. Controle do mouse <ul><li>Forward Threshold : distância que a mão deve ser extendida à frente para ativar o controle do mouse. </li></ul><ul><li>Movement Threshold : valor mínimo em pixels necessário para alterar a posição do mouse; </li></ul><ul><li>Speed : no movimento relativo, velocidade máxima nos limiares. </li></ul>
    44. 44. Mapeamento de ações em eventos <ul><li>nome_ação : nome da pose ou gesto; </li></ul><ul><li>limiar : mínimo de ativação, depende da ação; </li></ul><ul><li>tipo_evento : tipo de evento que será gerado; </li></ul><ul><li>nome_evento : evento específico que será gerado. </li></ul><ul><li>Ver tabelas 1, 2 e 3 no texto do tutorial! </li></ul>
    45. 45. Exemplo 1 <ul><li>lean_left 20 key_hold left_arrow </li></ul><ul><li>lean_right 20 key_hold right_arrow </li></ul><ul><li>jump 2 key_press space </li></ul>
    46. 46. Exemplo 2 <ul><li>lean_left 20 key_hold a </li></ul><ul><li>lean_right 20 key_hold d </li></ul><ul><li>lean_forwards 15 key_hold w </li></ul><ul><li>lean_backwards 15 key_hold s </li></ul>
    47. 47. Atividade! <ul><li>Crie controles para os seguintes jogos: </li></ul><ul><ul><li>Canabalt; </li></ul></ul><ul><ul><li>Muulti-Muu. </li></ul></ul><ul><ul><li>Angry Birds; </li></ul></ul>
    48. 48. PARTE 3 Programando para o Kinect Exemplos em: Processing SDK Oficial
    49. 49. Usando o Processing <ul><li>Processing é uma linguagem voltada para desenho , animação e interação ; </li></ul><ul><li>Bastante adequada para prototipação rápida de jogos . </li></ul>
    50. 50. Exemplos de uso da biblioteca SimpleOpenNI <ul><li>exemplo1; </li></ul><ul><li>exemplo2; </li></ul><ul><li>Estudo de caso: 3dpht. </li></ul>
    51. 51. DEMOS do QuickStart do Kinect http://channel9.msdn.com/Series/KinectSDKQuickstarts / <ul><li>1)Instalação do Sensor / Download do SDK ; </li></ul><ul><li>2) Configurando o ambiente ; </li></ul><ul><li>3) Criando um projeto Kinect no Visual Studio; </li></ul><ul><li>4) Exibindo a imagem da câmera ; </li></ul><ul><li>5) Alterando o ângulo de elevação da câmera; </li></ul><ul><li>6) Trabalhando com a informação de profundidade ; </li></ul><ul><li>7) Obtendo informações do esqueleto </li></ul><ul><li>8) Reconhecimento de fala. </li></ul>11/11/11
    52. 52. 1)Instalação do Sensor <ul><li>O Kinect que vem no Bundle do XBOX não tem o cabo de energia (pode ser comprado a parte ); </li></ul><ul><li>Não coloque 2 Kinects ou 2 câmeras no mesmo hub USB; </li></ul><ul><li>Verifique a versão do Windows (64 / 32 bits). </li></ul>11/11/11
    53. 53. 2) Configurando o ambiente <ul><li>Instalar Visual Studio (pode ser o Express ); </li></ul><ul><li>Instalar DirectX SDK – Junho 2010 ; </li></ul><ul><li>Instalar Runtime do DirectX ; </li></ul><ul><li>Se quiser usar o reconhecimento de voz: </li></ul><ul><ul><li>Speech Runtime 10.2 ; </li></ul></ul><ul><ul><li>Kinect Speech Platform ; </li></ul></ul><ul><ul><li>Speech SDK ; </li></ul></ul>11/11/11
    54. 54. 3) Criando um projeto Kinect no Visual Studio 11/11/11
    55. 55. 3) Criando um projeto Kinect no Visual Studio 11/11/11
    56. 56. 3) Criando um projeto Kinect no Visual Studio 11/11/11 *
    57. 57. 4) Exibindo a imagem da câmera <ul><li>Ver eventos VideoFrameReady e DepthFrameReady ; </li></ul>11/11/11
    58. 59. 5) Alterando o ângulo de elevação da câmera <ul><li>nui.NuiCamera.ElevationAngle = (int)slider1.Value; </li></ul><ul><li>Máximo de 15 mudanças em 20 segundos; </li></ul><ul><li>-27 a +27 graus; </li></ul>11/11/11
    59. 60. 6) Trabalhando com informação de profundidade <ul><li>Cálculo da distância em milímetros: </li></ul><ul><ul><li>Depth Image Type; </li></ul></ul><ul><ul><ul><li>Bitshift o segundo byte por 8; </li></ul></ul></ul><ul><ul><ul><li>Distância = (int) Bits[0] | Bits[1] << 8 ; </li></ul></ul></ul><ul><ul><li>DepthAndPlayerIndex Type: </li></ul></ul><ul><ul><ul><li>Bitshift do primeiro por 3 e do segundo por 5; </li></ul></ul></ul><ul><ul><ul><li>Distância = (int) Bits[0] | Bits[1] << 5 ; </li></ul></ul></ul><ul><li>O Player Index indica o jogador que está contido naquele ponto; </li></ul><ul><li>Máximo de 6 jogadores; </li></ul>11/11/11
    60. 61. 7) Obtendo informações do esqueleto <ul><li>Evento SkeletonFrameReady . </li></ul>11/11/11
    61. 62. 7) Obtendo informações do esqueleto <ul><li>Cada joint retorna: </li></ul><ul><ul><li>X – Posição horizontal entre -1 e 1 </li></ul></ul><ul><ul><li>Y – Posição vertical entre -1 e 1 </li></ul></ul><ul><ul><li>Z – Distância até o Kinect em metros </li></ul></ul><ul><li>Cada joint tem um estado associado: </li></ul><ul><ul><li>Tracked; </li></ul></ul><ul><ul><li>Not Tracked: raro ; </li></ul></ul><ul><ul><li>Inferred: oclusão, cortado, baixa confiança. </li></ul></ul>11/11/11
    62. 63. PARTE 4 Aplicações
    63. 64. Kinect Effect <ul><li>http://www.xbox.com/en-US/kinect/kinect-effect?uid=150260184&tid = </li></ul>
    64. 65. Aplicações e possibilidades do Kinect <ul><li>Controle de dispositivos através das mãos (Minority Report); </li></ul>11/11/11
    65. 66. Aplicações e possibilidades do Kinect <ul><li>Controle robótico: </li></ul><ul><ul><li>Kits que eram $28.000 agora são $500; </li></ul></ul><ul><ul><li>Exemplo com quadricóptero ; </li></ul></ul>11/11/11
    66. 67. Aplicações e possibilidades do Kinect <ul><li>Mocap baratíssimo! </li></ul>11/11/11
    67. 68. Aplicações e possibilidades do Kinect <ul><li>Video conferência 3D ; </li></ul>11/11/11
    68. 69. Aplicações e possibilidades do Kinect <ul><li>Scanner 3D (melhor ainda se integrado com uma impressora 3D); </li></ul>11/11/11
    69. 70. Aplicações e possibilidades do Kinect <ul><li>Kinect + Realidade Aumentada </li></ul>11/11/11
    70. 71. Aplicações e possibilidades do Kinect <ul><li>Kinect Shopping </li></ul>11/11/11
    71. 72. Aplicações e possibilidades do Kinect <ul><li>Trocar canal da TV; </li></ul><ul><li>Adaptação de jogos normais para Kinect; </li></ul><ul><li>Ensino de idiomas; </li></ul><ul><li>Ensino em geral; </li></ul><ul><li>Sistema de navegação para carros; </li></ul><ul><li>Música; </li></ul><ul><li>Aplicações médicas; </li></ul><ul><li>Controle de Apresentação (PowerPoint); </li></ul><ul><li>COLOQUE A SUA IDEIA AQUI!!!! </li></ul>11/11/11
    72. 73. Mas, não precisa usar o Kinect para tudo... <ul><li>Cliente Twitter usando o Kinect; </li></ul>11/11/11
    73. 74. Links Recomendados <ul><li>Kinect Hacks: </li></ul><ul><ul><li>http://kinecthacks.net/ </li></ul></ul><ul><ul><li>Portal que centraliza aplicativos e testes com o Kinect. </li></ul></ul><ul><li>Kinect Education: </li></ul><ul><ul><li>http://www.kinecteducation.com/ </li></ul></ul><ul><ul><li>Usos do Kinect na educação; </li></ul></ul>11/11/11
    74. 75. Links Recomendados <ul><li>Kinect SDK: </li></ul><ul><ul><li>http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/ </li></ul></ul><ul><ul><li>Portal oficial da Microsoft sobre desenvolvimento para o Kinect; </li></ul></ul><ul><li>Coding4Fun Kinect Toolkit: </li></ul><ul><ul><li>http://c4fkinect.codeplex.com/ </li></ul></ul><ul><ul><li>Bibliotecas extras úteis para uso com o SDK. </li></ul></ul>11/11/11
    75. 76. Links Recomendados <ul><li>OpenKinect: </li></ul><ul><ul><li>http://openkinect.org/wiki/Main_Page </li></ul></ul><ul><ul><li>Download dos drivers open source - libfreenect; </li></ul></ul><ul><li>OpenNI: </li></ul><ul><ul><li>http://www.openni.org/ </li></ul></ul><ul><ul><li>Download dos drivers da PrimeSense. </li></ul></ul>11/11/11
    76. 77. Material Extra e Referências <ul><li>http://blogs.msdn.com/b/uk_faculty_connection/archive/2011/06/21/kinect-for-windows-sdk-event.aspx </li></ul><ul><li>http://readwriteweb.com.br/2010/11/09/um-cientista-explica-o-microsoft-kinect/ </li></ul><ul><li>http://www.kinecteducation.com/ </li></ul><ul><li>http://www.wired.co.uk/magazine/archive/2010/11/features/the-game-changer?page=all </li></ul>11/11/11
    77. 78. Obrigado!! brunodepaula@gmail.com http://www.brunocampagnolo.com http://twitter.com/bcp www.brunocampagnolo.com/tutorialkinect2011

    ×