thiago bastos, maio de 2006 head tracking no framework viral

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

Upload: internet

Post on 18-Apr-2015

105 views

Category:

Documents


0 download

TRANSCRIPT

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