Head Tracking no framework
ViRAL
Thiago Bastos, Maio de 2006
Objetivos do Trabalho
• Implementar (no ViRAL) head tracking para
sistemas de projeção em telas planas.
– Pode ser usado em sistemas Surround-Screen (e.g. uma
CAVE), Head-Mounted Displays e FishTanks.
– Não pode ser usado em telas curvas, a menos que o
nível de distorção seja tolerável (como nos HMD’s).
• Desenvolver uma aplicação de testes utilizando o
Flock of Birds.
Head Tracking
• Consiste em rastrear a posição e a orientação da
cabeça do usuário no mundo real....
• ... e então usar essas informações para calcular
matrizes de view e projection para cada tela de
projeção de um sistema de RV.
• Absolutamente necessário em sistemas de RV
imersivos:
– Permite que a visão (câmera) acompanhe os movimentos
do usuário no mundo real.
– Permite a correção de distorções nas projeções (e.g. quando
a posição do usuário em relação à tela não forma um
frustum simétrico).
– Permite o cálculo correto de projeções stereo.
Cenário 1: CAVE
Cenário 2: Head Mounted Display
Cenário 3: FishTank
Exemplo Interessante: CAVE
• Primeiro Surround-Screen Virtual Environment (1991, com 4
paredes).
• Telas fixas alinhadas com os eixos do sistema de rastreamento
(com origem no centro da CAVE).
• Até seis telas (walls) de 9m2 – permitem a projeção de
ambientes em escala natural.
• As telas funcionam como janelas de vidro para um mundo
virtual – com a diferença que os
objetos podem passar por
dentro da CAVE.
Y
X
Z
Sistemas de Projeção com Head Tracking
• São compostos por:
– Um sistema de rastreamento (head tracker).
– Uma ou mais superfícies de projeção – geralmente planas –
com posição conhecida no espaço do head tracker.
• Os sistemas podem ser separados em três casos:
– Telas de projeção que se mantém fixas no espaço do mundo
(e.g. uma CAVE).
– Telas de projeção que se mantém fixas no espaço da cabeça
(e.g. um HMD).
– Telas de projeção que podem se mover independentemente
do usuário (i.e. telas móveis, que precisam ser rastreadas).
Requisitos do Sistema de Rastreamento
• Baixa latência (acima de 60Hz).
• Alta precisão e bom alcance.
– Milímetros são importantes quando existem
objetos perto do usuário;
– Deve cobrir toda área do ambiente de RV (e.g. 3m
de diâmetro numa CAVE).
• Ausência de ruídos.
– Qualquer tremedeira do rastreador pode causar
enjôo nos usuários, e estragar o stereo.
O Nosso Rastreador: Flock of Birds
• Sistema de rastreamento eletromagnético
escalável (múltiplos sensores com 6DOF).
• Características Positivas:
– Baixa latência (até ~140Hz);
– Boa precisão (2 milímetros) até certa distância.
• Características Negativas:
– Curto alcance (1.2m) [outro modelo vai até 3m];
– Sujeito a ruídos:
• Bastante sensível a interferência eletromagnética.
Amaciando Ruídos no FoB
• Filtro Gaussiano provê o melhor custo/benefício no caso do
Flock of Birds (que não precisa de predição de movimentos).
Filtra vetores de posição e
quaternions de orientação
usando uma distribuição
gaussiana configurável.
Lag configurável
Rastreando Cabeças
1. Posição do Sensor (Vector)
2. Translação para os Olhos (Vector)
Posição Entre os Olhos (Vector)
3. Orientação do Sensor (Quaternion)
4. Rotação para a Cabeça (Quaternion)
Orientação da Cabeça (Quaternion)
Lido do rastreador.
Configurado pelo usuário.
Espaço da Cabeça = ( 1 + 2 ) * 3 * 4
Y
Z
X
Posição dos Olhos
• Conhecendo o espaço
da cabeça e dada uma
distância interocular,
podemos calcular a
posição de cada olho
no espaço do mundo.
Y
Z
X
(es,0,0)
distância interocular
(-es,0,0)
Posição das Telas de Projeção
• Cada tela é definida por quatro pontos no espaço do mundo (ou
seja, no espaço do head tracker).
– Ou ainda, no espaço da cabeça, para HMDs...
• Telas móveis podem ser rastreadas pelo mesmo sistema.
• Telas fixas podem ser configuradas manualmente se a origem
do rastreador também for fixa.
Posição do Usuário no Mundo Virtual
• No ViRAL, a posição do observador no
mundo virtual é definida por três parâmetros:
– Um vetor de posição;
– Um quaternion de orientação do corpo;
– Um quaternion de rotação da cabeça;
• Não têm nada a ver com o head-tracking!
• Matriz de ModelView “virtual”:
– Mmodelview-virtual = (T * Rbody * Rhead)
–1
Algoritmo de Head Tracking Monocular (1)
• Para cada tela de projeção...
– Achar a base da tela no espaço do mundo.
• X = (LR – LL) / width
• Y = (UR – LR) / height
• Z = X cross Y
UR
UL
– Os três vetores dão a
matriz de rotação da tela
para o mundo MscreenToWorld.
LR
LL
– A transposta é a matriz
de rotação do mundo para a tela, MworldToScreen.
Algoritmo de Head Tracking Monocular (2)
• Levando UL, UR, LL e LR para o espaço da tela,
obtemos os quatro pontos num plano XY (com -Z =
distância da tela até a origem do tracker).
• Levando o olho para o espaço da tela e o projetando
no plano, podemos obter as coordenadas Left, Right,
Top, e Bottom de um frustum assimétrico.
(0,0)
UL
UR
Olho
UL
L T
T
L
R
R
B
B
LL
UR
LR
LL
LR
Algoritmo de Head Tracking Monocular (3)
• Precisamos calcular distâncias near e far para o
frustum.
– near é uma porcentagem da distância do olho até a tela de
projeção.
– far é um número bem grande (e.g. 100Km).
near
far (bem longe)
Tela
Algoritmo de Head Tracking Monocular (4)
• A matriz projection é calculada usando a mesma
fórmula da função glFrustum(), que espera as
coordenadas Left, Right, Top, e Bottom no plano near.
– Podem ser obtidas por semelhança de triângulos.
Mprojection =
Algoritmo de Head Tracking Monocular (5)
• Finalmente, a matriz de View com head
tracking é calculada como:
Mview = Mmodelview-virtual * -Eworld * MscreenToWorld
Head Tracking e Estereoscopia
• Podemos calcular projeções estereoscópicas
por head-tracking de forma bastante intuitiva:
1. Achamos a posição dos olhos usando a
distância interocular.
2. Executamos o procedimento de head tracking
monocular uma vez para cada olho.
Escalas
• O mundo real (espaço do tracker) e o virtual precisam
estar na mesma escala.
– No ViRAL tudo é padronizado em metros.
– Caso o mundo virtual não esteja em metros, podemos
aplicar uma escala à distância interocular e às posições
rastreadas.
• O tamanho máximo que um objeto importante pode
ter é aproximadamente o tamanho da tela.
– FishTanks em desktop precisam trabalhar com objetos
miniaturizados.
• Escalas inconsistentes causam a total perda de
imersão!
Aproximando-se da Tela...
• Efeitos da aproximação do usuário a uma tela:
– Translação na matriz de view (ou não...);
– Achatamento do frustum, que torna-se mais largo;
• O que está para fora da tela sofre zoom-in;
• O que está para dentro da tela sofre zoom-out;
• Problemas:
– O FOV converge para 180º, levando tudo para o
infinito.
– zNear fica muito pequeno, diminuindo a precisão
do z-buffer.
Demo com Telas Perpendiculares
Referências
• Cruz-Neira, C., D.J.Sandin, and DeFanti, T.
Surround-Screen Projection-Based Virtual Reality:
The Design and Implementation of the CAVE. In
SIGGRAPH '93 Proceedings (Aug. 1993),
Association for Computing Machinery.
• Dave Pape, Daniel J. Sandin, and Thomas A. DeFanti.
Transparently supporting a wide range of VR and
stereoscopic display devices. Proc. SPIE Int. Soc.
Opt. Eng. 3639, 346 (1999)
• VRJuggler. http://www.vrjuggler.org
• Fotos de equipamentos de RV retiradas do site do
instituto FAW, Áustria. http://www.faw.unilinz.ac.at/save/hardware/main.html
Download

Apresentação PowerPoint - PUC-Rio