Thiago Bastos, Maio de 2006 Head Tracking no framework ViRAL.

25
Thiago Bastos, Maio de 2006 Head Tracking no framework ViRAL

Transcript of Thiago Bastos, Maio de 2006 Head Tracking no framework ViRAL.

Page 1: Thiago Bastos, Maio de 2006 Head Tracking no framework ViRAL.

Thiago Bastos, Maio de 2006

Head Tracking no framework ViRAL

Page 2: Thiago Bastos, Maio de 2006 Head Tracking no framework ViRAL.

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.

Page 3: Thiago Bastos, Maio de 2006 Head Tracking no framework ViRAL.

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.

Page 4: Thiago Bastos, Maio de 2006 Head Tracking no framework ViRAL.

Cenário 1: CAVE

Page 5: Thiago Bastos, Maio de 2006 Head Tracking no framework ViRAL.

Cenário 2: Head Mounted Display

Page 6: Thiago Bastos, Maio de 2006 Head Tracking no framework ViRAL.

Cenário 3: FishTank

Page 7: Thiago Bastos, Maio de 2006 Head Tracking no framework ViRAL.

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 osobjetos podem passar pordentro da CAVE.

Z

X

Y

Page 8: Thiago Bastos, Maio de 2006 Head Tracking no framework ViRAL.

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).

Page 9: Thiago Bastos, Maio de 2006 Head Tracking no framework ViRAL.

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.

Page 10: Thiago Bastos, Maio de 2006 Head Tracking no framework ViRAL.

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.

Page 11: Thiago Bastos, Maio de 2006 Head Tracking no framework ViRAL.

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 equaternions de orientaçãousando uma distribuiçãogaussiana configurável.

Lag configurável

Page 12: Thiago Bastos, Maio de 2006 Head Tracking no framework ViRAL.

Rastreando Cabeças

1. Posição do Sensor (Vector)2. Translação para os Olhos (Vector)

3. Orientação do Sensor (Quaternion)4. Rotação para a Cabeça (Quaternion)

Z X

Y

Posição Entre os Olhos (Vector)

Orientação da Cabeça (Quaternion)

Lido do rastreador.Configurado pelo usuário.

Espaço da Cabeça = ( 1 + 2 ) * 3 * 4

Page 13: Thiago Bastos, Maio de 2006 Head Tracking no framework ViRAL.

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.

Z

X

Y

(es,0,0) (-es,0,0)

distância interocular

Page 14: Thiago Bastos, Maio de 2006 Head Tracking no framework ViRAL.

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.

Page 15: Thiago Bastos, Maio de 2006 Head Tracking no framework ViRAL.

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

Page 16: Thiago Bastos, Maio de 2006 Head Tracking no framework ViRAL.

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

– Os três vetores dão amatriz de rotação da telapara o mundo MscreenToWorld.

– A transposta é a matrizde rotação do mundo para a tela, MworldToScreen.

UL

UR

LL

LR

Page 17: Thiago Bastos, Maio de 2006 Head Tracking no framework ViRAL.

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.

UL UR

LL LR

(0,0)

L R

T

B

UL UR

LL LR

L RT

B

Olho

Page 18: Thiago Bastos, Maio de 2006 Head Tracking no framework ViRAL.

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

Telafar (bem longe)

85%15%

Page 19: Thiago Bastos, Maio de 2006 Head Tracking no framework ViRAL.

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 =

Page 20: Thiago Bastos, Maio de 2006 Head Tracking no framework ViRAL.

Algoritmo de Head Tracking Monocular (5)

• Finalmente, a matriz de View com head tracking é calculada como:

Mview = Mmodelview-virtual * -Eworld * MscreenToWorld

Page 21: Thiago Bastos, Maio de 2006 Head Tracking no framework ViRAL.

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.

Page 22: Thiago Bastos, Maio de 2006 Head Tracking no framework ViRAL.

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!

Page 23: Thiago Bastos, Maio de 2006 Head Tracking no framework ViRAL.

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.

Page 24: Thiago Bastos, Maio de 2006 Head Tracking no framework ViRAL.

Demo com Telas Perpendiculares

Page 25: Thiago Bastos, Maio de 2006 Head Tracking no framework ViRAL.

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.uni-linz.ac.at/save/hardware/main.html