CasadoCódigo Sumário Sumário 1 IntroduçãoàInterfacesNaturais 1 1.1 ApresentandooKinect . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2 Oquevocêencontraránestelivro . . . . . . . . . . . . . . . . . . . . . 5 1.3 Antesdecomeçar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2 Primeiraaplicaçãocomosensor 7 2.1 CriandooprojetoAuxiliarKinect . . . . . . . . . . . . . . . . . . . . . 9 2.2 Criandoaregradenossaaplicação . . . . . . . . . . . . . . . . . . . . 11 2.3 Testandoedepurandonossaaplicação . . . . . . . . . . . . . . . . . . 14 2.4 Continuando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3 AcelerômetroeEixoMotorizado 17 3.1 Acelerômetro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.2 EixoMotorizado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4 FluxodeCores 27 4.1 Formatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4.2 Aplicação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.3 Refatoração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 5 FluxodeProfundidade 49 5.1 Formatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 5.2 Entendendoumpoucomaissobreaprofundidade . . . . . . . . . . . 50 5.3 Aplicação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 i Sumário CasadoCódigo 6 FluxodeEsqueletodoUsuário 63 6.1 EsqueletodoUsuário . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 6.2 DesenhandooEsqueletodoUsuário . . . . . . . . . . . . . . . . . . . 66 7 RastreandoeIdentificandoMovimentos 83 7.1 IniciandoaEstruturaBaseparaDetectarMovimentos . . . . . . . . . 84 7.2 UtilizandoPosesemNossaAplicação . . . . . . . . . . . . . . . . . . . 89 7.3 FinalizandoaEstruturaBaseparaDetectarMovimentos. . . . . . . . 104 7.4 UtilizandoGestosemNossaAplicação . . . . . . . . . . . . . . . . . . 116 8 InteragindocomaaplicaçãoatravésdoKinectInteractions 119 8.1 PrincipaisConceitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 8.2 MelhorandoNossaAplicaçãocomosControlesdoKinectInteractions 121 8.3 UtilizandooFluxodeInteração . . . . . . . . . . . . . . . . . . . . . . 127 9 UtilizandoosMicrofonesdoSensor 143 9.1 InicializandoaFontedeÁudioeDetectandoaDireçãodoSom . . . 144 9.2 DetectandoComandosdevoz . . . . . . . . . . . . . . . . . . . . . . . 149 9.3 Conclusão. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 ii Capítulo1 Introdução à Interfaces Naturais Formasinovadorasdeinteraçãocomousuáriotêmsidopropostasporinterfacesfo- cadasaoparadigmadeinterfacenaturalaolongodosanos.Ossoftwaresemdiversas áreasnãodevemexigirqueousuáriotenhagrandeconhecimentoemcomputação parausá-lo,devemsemprebuscarporsimplicidadeefacilidade. AprimeirainterfacecomousuárioaaparecerfoiaCLI(CommandLineInter- face)queutilizacomandosdeentradatextuaisespecíficasparadesempenharfunções emumaplicativo,algoqueexigiaumagrandecurvadeaprendizado.Algumtempo depoissurgiuafamosaGUI(GraphicalUserInterface)queutilizajanelasgráficas, mouse,botõesediversosoutroscomponentesvisuais,arriscodizerquegraçasàGUI os computadores conseguiram atingir tantas pessoas e se popularizar tão rápido. Hojeemdiaesteconceitoéomaisutilizadoemsistemasoperacionaiseaplicações. Devidoàquantidadedeusuáriosedemandaporaplicaçõescadavezmaisintui- tivasesimplessurgiuoconceitodeNUI(NaturalUserInterface)ousimplesmente interfaces naturais. Este tipo de interface foca em utilizar uma linguagem natural paraainteraçãohumanacomoaplicativo,comogestos,posesecomandosdevoz. 1.1. ApresentandooKinect CasadoCódigo 1.1 Apresentando o Kinect Comopropostadeinterfacenaturalinicialmentefocadaparaaáreadejogos,aem- presaMicrosoftemparceriacomaempresaisraelitaPrimeSenseconstruiuosensor demovimentosquehojeéchamadodeKinect.OhardwaredoKinectteveboaparte herdado pelo hardware do PrimeSense. Na figura 1.1 podemos visualizar o “irmão maisvelho”doKinect. Figura1.1:SensordaPrimeSense O Kinect certamente causou uma revolução na área de interações com jogos, pois a partir de agora, não é mais necessário utilizar um controle: o sensor capta movimentosecomandosdevozdousuário,abrindoumlequedepossibilidadesto- talmentenovo,utilizandoalinguagemnaturalparaainteraçãocomosjogos. Inicialmente o sensor Kinect era conhecido pelo codinome Projeto Natal, fa- zendo referência à cidade brasileira Natal, isso ocorreu devido ao fato de que um dosidealizadoresdoprojetofoiumbrasileirochamadoAlexKipman. Afigura1.2exibeosensorconcebidopelaMicrosoft,podemosnotarque,apesar deumdesignmaiseleganteerobustoelepossuigrandessemelhançascomoPrime- Sense. 2 CasadoCódigo Capítulo1. IntroduçãoàInterfacesNaturais Figura1.2:MicrosoftKinect Em fevereiro de 2011, quatro meses após o sensor ter sido lançado no Brasil, a Microsoft anunciava o lançamento oficial de um SDK (software development kit) quepodeserobtidodeformagratuita. ComestekitdedesenvolvimentoaMicro- soft permite que desenvolvedores possam criar aplicativos para computadores nas linguagensC++, C#eVisualBasicutilizandoohardwareKinect, ouseja, alimita- ção de que o Kinect era um dispositivo apenas para a área de jogos não era mais verdadeira. AtualmenteexistemtrêstiposdiferentesdeKinect, iremosdiferenciá-lospelos seguintes nomes: Kinect, Kinect for Windows e Kinect for Xbox 360. O sensor conhecidocomercialmentecomoKinectforWindowspossuiumhardwarediferen- ciado, seus microfones possuem uma melhor qualidade e ele é capaz de rastrear o usuário mais próximo ao sensor ou quando ele estiver sentado. Explicaremos me- lhorsobreissoaodecorrerdolivro. AdiferençamaisimportantequevocêdeveteremmenteagoraéentreoKinect forXbox360eosoutros.Estadiferençatrata-sedocabodeconexãodosensor,esta versão é vendida somente junto com um console Xbox 360 e seu cabo de conexão possuiumaentradaespecífica,casoseusensorsejadestetipoénecessáriocomprar umadaptadorparaconectaroKinectemumcomputador,afigura1.3ilustraocabo eoadaptadorparaestetipodesensor. 3 1.1. ApresentandooKinect CasadoCódigo Figura1.3:KinectforXbox360eseuadaptador Osensorpossuiumhardwarequeoferecediversosrecursosqueiremosexplorar aolongodolivro,osprincipaissão:Emissordeluzinfravermelho,sensorRGB,sen- sorinfravermelho,eixomotorizadoeumconjuntodemicrofonesdispostosaolongo dosensor.Afigura1.4apresentaumavisãodointeriordosensorcomindicativosde ondeestãolocalizadosestesrecursos. 4 CasadoCódigo Capítulo1. IntroduçãoàInterfacesNaturais Figura1.4:Kinectpordentro 1.2 O que você encontrará neste livro Este livro é escrito para desenvolvedores que já possuem conhecimento referente aos principais conceitos relacionados à orientação a objetos e que já tiveram con- tato com à linguagem C#, para facilitar a compreensão de desenvolvedores menos experiêntes nessa linguagem será dado pequenas explicações sobre alguns concei- tos da linguagem. Nos capítulos iniciais iremos desenvolver aplicações de testes e a partir do capítulo 4 iremos construir uma aplicação até o fim do livro. Estas implementaçõesserãofocadasemconceitosdeinterfacesnaturaisespecíficosutili- zando um sensor Kinect. As aplicações criadas neste livro não irão levar em con- sideração padrões arquiteturais e melhorias de performance, será levado em con- sideração a clareza e facilidade de entendimento do leitor e todas as implementa- çõesterãoseucódigocentralizadonorepositório:https://github.com/gabrielschade/ CrieAplicacoesInterativascomoMicrosoftKinect. Aolongodestelivronoscapítulosmaisavançadosiremosconstruirumaaplica- çãoutilizandotodososconceitoserecursosestudados,nofimdolivroteremosuma aplicaçãocompletautilizandooKinect. Agrandemetadestelivroéencorajareiniciaroleitoraingressarnestemundo desafiador(emuitodivertido!)daprogramaçãoseguindoosconceitosdeNUIatra- vésdosensorKinect,oqueinvariavelmenteiráenvolverbastanteteoriaeprática,de 5 1.3. Antesdecomeçar CasadoCódigo umaformafluída,simplesedivertida! 1.3 Antes de começar Antes de começarmos a falar da nossa primeira aplicação, é necessário que você tenha feito o download do SDK, ele é gratuito e pode ser baixado através deste link: http://www.microsoft.com/en-us/kinectforwindows/develop/ developer-downloads.aspx. Além da ultima versão do SDK, também é aconselhá- veljáfazerodownloaddodevelopertoolkitedoMicrosoftSpeechPlatformSDKpara utilizarmosemnossasfuturasimplementações. Neste livro utilizaremos o Visual Studio 2012 como IDE de desenvolvimento, caso você ainda não possua esta ferramenta, existe uma versão gratuita que pode ser baixada através do link: http://www.microsoft.com/visualstudio/eng/products/ visual-studio-express-products. É importante lembrar que caso você possua um Kinect for Xbox 360 é preciso quevocêtenhaumadaptadorparaconectá-loaoseucomputador. 6 Capítulo2 Primeira aplicação com o sensor Nestecapítuloaprenderemosacodificaretestarumaaplicaçãoqueutilizeosensor Kinect. Esta aplicação será bastante simples e terá o intuito de termos o primeiro contatocomestetipodeprogramação.Elaterácomofunçãoreconhecerseousuário estácomamãodireitaacimadaalturadesuacabeçaenotificarousuárioexibindo umamensagememumdiálogoquandoissoacontecer,simplesnão? AprimeiracoisaquetemosquefazerécriarnossoprojetodotipoWPFAppli- cationnoVisualStudioeadicionarareferênciaparaoSDKdoKinect.
Description: