A primeira coisa que temos que fazer é criar nosso projeto do tipo WPF Appli-
cation no Visual Studio e adicionar a referência para o SDK do Kinect.
Casa do Código
WPF Applications
Windows Presentation Foundation ou simplesmente WPF é um tipo
de projeto proposto no Visual Studio para aplicações desktop para Win-
dows, apesar do Kinect não se limitar a aplicações WPF, existem diver-
sas ferramentas inclusas no SDK que nos auxiliam neste tipo de projeto.
Para saber mais sobre WPF acesse: http://msdn.microsoft.com/pt-br/
/library/ms754130.aspx
Para adicionar a referência para o SDK do Kinect basta pressionar o botão direito do mouse sobre o seu projeto e selecionar a opção Add Reference.... Será aberta uma janela para selecionar o assembly que deseja adicionar em seu projeto, pesquise pela palavra Kinect, selecione o assembly Microsoft.Kinect e pressione o botão OK, conforme ilustra a figura 2.1. Com isso nosso projeto já está preparado para a implementação, vamos codificar!
Figura 2.1: Adicionando referência ao assembly Microsoft.Kinect
8
Casa do Código
Capítulo 2. Primeira aplicação com o sensor
2.1
Criando o projeto AuxiliarKinect
Antes da implementação de qualquer regra é necessário implementar o processo de configuração do sensor Kinect que está conectado ao computador, não iremos tratar agora cenários de exceção, então para que uma situação inesperada não ocorra em sua aplicação, tenha certeza que seu Kinect está devidamente conectado ao seu computador e à energia.
Para facilitar a configuração do sensor para as próximas aplicações iremos criar um projeto separado para nos auxiliar em algumas tarefas comuns do Kinect. Para fazer isso abra uma nova instância
do Visual Studio e crie um projeto do tipo Class Library. Este projeto irá gerar nossa DLL que conterá diversas funções do Kinect, vamos chamá-lo de AuxiliarKinect.
Como descrevemos anteriormente neste projeto também é necessário a referên-
cia para o SDK do Kinect. Note que no projeto já existe uma classe chamada Class1, iremos excluí-la. Pressione o botão direito sobre o projeto e crie uma nova pasta chamada FuncoesBasicas.
Antes de começarmos a implementar é importante ter em mente que não existe
limitação no que diz respeito à quantidade de sensores conectados em seu compu-
tador simultaneamente. É possível identificar os diferentes sensores por um identi-ficador único que cada sensor possui, mas neste livro iremos focar no cenário mais comum, onde as aplicações utilizam apenas um sensor.
Pensando neste cenário, a Microsoft criou na classe KinectSensor a propriedade chamada KinectSensors. Esta propriedade é uma coleção de objetos do tipo KinectSensor, ou seja, todos os sensores conectados no computador serão listados nesta coleção. Tendo conhecimento desta propriedade e sabendo que possa existir mais de um sensor, é fácil perceber que é necessário fazer uma busca para identificar quantos sensores estão conectados no computador. Este código pode ser escrito de maneira muito simples através de uma expressão lambda.
9
2.1. Criando o projeto AuxiliarKinect
Casa do Código
Expressões Lambdas
Expressão lambda é um recurso muito poderoso disponível na lin-
guagem C#, trata-se de uma notação para escrita de funções anônimas
que podem realizar as mais diversas tarefas, como suporte para a lingua-
gem de consulta LINQ e escrita simplificada de métodos recursivos, por
exemplo. Para mais informações sobre expressões lambda acesse o link:
http://msdn.microsoft.com/pt-br/library/vstudio/bb397687.aspx
Sabendo que utilizaremos apenas um sensor na aplicação podemos fazer uma
busca na coleção de sensores para obtermos o primeiro Kinect conectado ao com-
putador (que neste caso sempre será o único). Após encontrar o sensor é preciso inicializá-lo através do método Start da classe KinectSensor. Feito a inicialização iremos forçar o Kinect a manter o eixo motorizado do sensor de acordo com uma informação parametrizada. É importante saber que, para alterar o ângulo do
eixo motorizado do sensor, é necessário inicializá-lo antes, caso contrário uma ex-ceção será disparada.
Agora criaremos a classe
InicializadorKinect dentro da pasta Fun-
coesBasicas. Além de ter adicionado a referência ao assembly Microsoft.Kinect
adicione também a diretiva using para este mesmo assembly dentro da classe
InicializadorKinect. Se tudo estiver correto você já poderá acessar a classe
KinectSensor, esta classe é de extrema importância, pois ela é a representação
virtual do sensor Kinect em sua aplicação.
A classe InicializadorKinect deve ser pública para podermos acessá-la em
nossa aplicação, portanto não esqueça de utilizar a palavra reservada public na declaração da classe. Vamos criar um método estático para fazer as operações descritas anteriormente (inicializar o sensor e configurar seu ângulo de elevação). Nosso mé-
todo se chamará InicializarPrimeiroSensor ele irá receber por parâmetro o
ângulo de elevação inicial do sensor e deverá retornar o primeiro sensor conectado no computador.