Atualização: Como prometido, montei o clip com 3 pontos infravermelhos ativos. Clique aqui para ver.
Sempre tive curiosidade sobre o TrackIR, que é uma forma de controlar a câmera com a cabeça. Ele possui uma câmera e um clip com 3 LEDs infravermelhos que você encaixa no headset ou em um boné. A câmera detecta a posição dos LEDs e com base nisso a posição da sua cabeça, e usa isso para controlar a câmera do jogo. Basicamente, você vira a cabeça um pouco para a esquerda e o jogo vira a câmera para a esquerda. O movimento é amplificado de forma que um movimento pequeno da cabeça corresponde a um movimento maior da câmera—assim você pode, por exemplo, olhar para o retrovisor direito sem ter que virar a cabeça ao ponto de não conseguir olhar para o monitor.
Infelizmente, o TrackIR é caro. Neste post eu falo sobre alternativas baratas/free para controlar a câmera com a posição da cabeça, da forma que o TrackIR faz.
Veja uma dessas alternativas em ação:
Existe um software chamado FreeTrack que faz a mesma coisa que o TrackIR. Você monta três LEDs infravermelhos no headset ou em um boné, modifica uma webcam para pegar infravermelho (removendo o filtro que bloqueia infravermelho que muitas câmeras têm e colocando um filtro para bloquear luz visível se for necessário), e pronto: TrackIR por menos de R$ 100. Infelizmente, a última versão do FreeTrack que eu achei é de 2008.
Mas existe uma solução ainda mais barata (e mais atualizada): o FaceTrackNoIR. No site você pode comprar a versão 2.0 (€ 2,75, ~R$ 10), mas a versão 1.7 é free e funciona bem o bastante. Você pode baixar a versão 1.7 nesse link:
http://files.dsantosdev.com/FaceTrackNoIR170.zip
A diferença do FaceTrackNoIR comparado ao FreeTrack é que, por padrão, em vez de detectar a posição de LEDs infravermelhos ele funciona detectando a posição do seu rosto. Isso tem prós e contras: não precisa montar o clip com os LEDs e não precisa modificar a câmera, mas por outro lado é bem mais lento e menos estável—afinal, para um computador, detectar a posição e orientação exata do rosto de uma pessoa a partir da imagem de uma webcam não é tão simples quanto pode parecer.
O vídeo acima demonstra o uso do FaceTrackNoIR em modo de face tracking no OMSI 2.
É relativamente comum o FaceTrackNoIR perder a posição do rosto e demorar alguns segundos pra recuperar, e é bom ter um botão configurado para re-centralizar já que também é comum ele perder a posição base (i.e. você está olhando pra frente e ele acha que você está olhando pro lado). Ou seja, eu acho que face tracking não é uma solução definitiva. Pode ser usado pra testes, pra saber se a pessoa se adapta a controlar a câmera dessa forma, mas pra jogar mesmo acaba sendo necessário apelar pros pontos infravermelhos.
O FaceTrackNoIR, inclusive, vem com um plugin para detectar pontos infravermelhos em vez do rosto, fazendo o mesmo que o FreeTrack e que o TrackIR. Existem basicamente duas formas de fazer isso: pontos passivos e ativos. Pontos passivos são iluminados por uma fonte de luz infravermelha e refletem para a câmera. Esse método é especialmente conveniente se a sua câmera possui LEDs infravermelhos (ja que aí a própria câmera produz a luz infravermelha a ser refletida pelos pontos). O problema é que dependendo da câmera os reflexos dos pontos podem não ser fortes o suficiente para serem detectados pelo software.
A forma mais confiável é usar pontos ativos. Basicamente, são LEDs infravermelhos (usando pilhas, baterias, ou uma porta USB como fonte de energia). O circuito é bem simples (três LEDs infravermelhos e um resistor, apenas). A ideia é que o resultado fique mais ou menos assim:
Nesse site tem um monte de informações sobre esse método de usar pontos infravermelhos (ativos e passivos): http://www.free-track.net/english/
Em breve eu vou montar um clip ativo desses pra ver se funciona tão bem quanto dizem nos fóruns. Aí posto o resultado.
Atualização: Como prometido, montei o clip com 3 pontos infravermelhos ativos. Clique aqui para ver.