Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

78
Kinect Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect Bruno C. de Paula

Transcript of Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

Page 1: 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

Page 2: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

2

Quem sou eu? Bruno Campagnolo de Paula

[email protected]

http://www.brunocampagnolo.com

http://twitter.com/bcp

Page 3: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

Material deste tutorial

www.brunocampagnolo.com/tutorialkinect2011

Page 4: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

Por que estou aqui?402/05/23

Centro deEngenharia de Sistemas Inteligentes

Page 5: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

Por que estou aqui?PUCPR;Professor dos cursos de jogos e do curso

de Sistemas de Informação;

Page 6: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

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.

Page 7: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

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

Page 8: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

PARTE 1

O que é o Kinect?

Page 9: Adaptando e desenvolvendo jogos para uso com o Microsoft 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

Page 10: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

Motivação para criação do KinectSucesso do Wii;

1002/05/23

Page 11: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

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

Page 12: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

Wii / Kinect não são tão pioneiros!Dispositivos de interface naturalActivator, EyeToy, Track IR

Page 13: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

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.

Page 14: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

Kinect não é o único dispositivo moderno de interface natural atualWavi Xtion da Asus

1402/05/23

Page 15: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

Kinect não vai ser o único dispositivo futuro de interface naturalWindows 8/9; iOs 6;

1502/05/23

Page 16: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

Projeto Natal - OrigemForte P&D;Alex Kipmann -

Diretor de incubação da Microsoft;

PrimeSense;3DV Systems.

1602/05/23

Page 17: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

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)

Page 18: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

1802/05/23

Se você sabe mover-se você sabe usar o Kinect

Page 19: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

1902/05/23

Qualquer tecnologia suficientemente avançada é indistinguível de magia.

Arthur C. Clarke

Page 20: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

Arquitetura do Kinect2002/05/23

Page 21: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

Arquitetura do Kinect 2102/05/23

Projetor de Luz Infravermelha (invisível)

Câmera RGB (“comum”)

Câmera infravermelha

Conjunto de microfones

Motor

Page 22: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

Arquitetura do Kinect2202/05/23

Page 23: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

Arquitetura do KinectImage StreamCada pixel representa uma cor;640x480 (30 fps) OU1280x1024 (máximo 15 fps);

2302/05/23

Page 24: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

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

Page 25: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

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

Page 26: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

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

Page 27: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

Sensor de profundidade 3d do Kinect2702/05/23

Projetor de Luz Infravermelha

Câmera infravermelhaSensor de Profundidade 3D

Page 28: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

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!

Page 29: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

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

Page 30: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

Informações de esqueleto dos jogadores

Page 31: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

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

Page 32: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

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

Page 33: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

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

Page 34: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

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

Page 35: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

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

Page 36: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

PARTE 2Prototipação rápida para o Kinect usando o FAAST

Page 37: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

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.

Page 38: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

InstalaçãoUsar o Zigfu Dev Bundle;OU:

Instalar OpenNI;Instalar NITE;Instalar sensores.

Veja mais detalhes no texto do tutorial.

Page 39: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

Tela inicial do FAAST

Page 40: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

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.

Page 41: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

CalibraçãoPose de psi;Essencial em aplicação baseada em

OpenNI.

Page 42: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

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;

Page 43: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

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.

Page 44: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

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!

Page 45: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

Exemplo 1lean_left 20 key_hold left_arrow lean_right 20 key_hold

right_arrow jump 2 key_press space

Page 46: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

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

Page 47: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

Atividade!Crie controles para os seguintes jogos:Canabalt;Muulti-Muu.Angry Birds;

Page 48: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

PARTE 3Programando para o Kinect

Exemplos em:ProcessingSDK Oficial

Page 49: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

Usando o ProcessingProcessing é

uma linguagem voltada para desenho, animação e interação;

Bastante adequada para prototipação rápida de jogos.

Page 50: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

Exemplos de uso da biblioteca SimpleOpenNIexemplo1;exemplo2;Estudo de caso: 3dpht.

Page 51: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

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

Page 52: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

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

Page 54: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

3) Criando um projeto Kinect no Visual Studio

5402/05/23

Page 55: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

3) Criando um projeto Kinect no Visual Studio

5502/05/23

Page 56: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

3) Criando um projeto Kinect no Visual Studio

5602/05/23

*

Page 57: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

4) Exibindo a imagem da câmeraVer eventos VideoFrameReady e

DepthFrameReady;

5702/05/23

Page 58: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect
Page 59: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

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

Page 60: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

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

Page 61: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

7) Obtendo informações do esqueleto

6102/05/23

Evento SkeletonFrameReady.

Page 62: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

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

Page 63: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

PARTE 4Aplicações

Page 65: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

Aplicações e possibilidades do KinectControle de dispositivos através das

mãos (Minority Report);

6502/05/23

Page 66: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

Aplicações e possibilidades do KinectControle robótico:

Kits que eram $28.000 agora são $500;

Exemplo com quadricóptero;

6602/05/23

Page 67: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

Aplicações e possibilidades do KinectMocap baratíssimo!

6702/05/23

Page 68: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

Aplicações e possibilidades do KinectVideo conferência 3D;

6802/05/23

Page 69: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

Aplicações e possibilidades do KinectScanner 3D (melhor ainda se integrado

com uma impressora 3D);

6902/05/23

Page 70: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

Aplicações e possibilidades do KinectKinect + Realidade Aumentada

7002/05/23

Page 71: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

Aplicações e possibilidades do KinectKinect Shopping

7102/05/23

Page 72: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

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

Page 73: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

Mas, não precisa usar o Kinect para tudo...Cliente Twitter usando o Kinect;

7302/05/23

Page 74: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

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

Page 75: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

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

Page 76: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

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

Page 77: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

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

Page 78: Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect

78

Obrigado!!

[email protected] http://www.brunocampagnolo.com http://twitter.com/bcpwww.brunocampagnolo.com/tutorialkinect2011