Dynamic Adjustment of Stereo Parameters for Virtual Reality Tools Felipe Carvalho, Daniel R. Trindade, Peter F. Dam, Alberto Raposo, Ismael H. F. dos Santos Introdução Com o aparecimento de novas tecnologias o uso da estereoscopia vem sendo mais frequente (games, cinema, realidade virtual) Entretanto seu uso pode causar problemas como náusea e dor de cabeça caso os parâmetros não sejam ajustados corretamente Introdução Problemas relacionados a estereoscopia: Objetos com valor de paralaxe muito alto (positiva ou negativa) causam desconforto uma vez que os olhos tem dificuldade em convergir. Quando o plano de paralaxe zero não está no mesmo plano da tela (problema da acomodação/convergência). Clipping (pelas bordas da tela) de objetos na região de paralaxe negativa. Em ambientes multiescala se os parâmetros de estereoscopia forem mantidos constantes durante o cenário poderá ocorrer problema de convergência. Objetivo O objetivo do trabalho é propor uma solução capaz de ajustar dinamicamente os parâmetros de estereoscopia para aplicações de realidade virtual, incluindo aplicaçãoes com ambientes multiescala. Cubemap Provê informação sobre o ambiente virtual em um dado momento. Dado uma posição de câmera, esta estrutura é construída a partir de 6 passadas de rendering, cada uma em uma diferente direção para cobrir todo o ambiente. FOV da câmera é 90 graus, portanto a combinação de 6 frustrums resultantes gera um cubo. A orientação do cubemap é a mesma que a da câmera usada. Um shader é usado para calcular a distância do fragmento gerado para a câmera, que é armazenada no canal alpha. Os canais RGB das imagens do cubemap guardam um vetor unitário com origem no fragmento gerado apontando para a câmera. Técnicas de Navegação O modo como o usuário interage com a cena pode influenciar o efeito de estereoscopia. O ajuste dos parâmetros de estereoscopia deve então levar em consideração de que forma o usuário navega e interage com a cena. Neste trabalho são consideradas duas técnicas de interação: Fly – navegação livre pela cena Examine – visualização centrada em um objeto selecionado Técnicas de Navegação A velocidade de navegação do Fly é ajustada automaticamente com base em minDist (o menor valor retornado pelo cubemap para uma dada posição de câmera). Dessa forma a velocidade de navegação é condizente com a escala em que a câmera se encontra. Tratamento de colisão impede que a câmera atravesse os objetos da cena: toda vez que a câmera se aproxima de um objeto ela sofre um fator de repulsão que faz com que ela desvie suavemente. Os planos de corte também são ajustados de acordo com o minDist de forma a sempre garantir a corretude destes. Ajuste Dinâmico dos Parâmetros de Estereoscopia para a Navegação “Fly” Os parâmetros de estereoscopia são ajustados dinamicamente de acordo com as seguintes equações: Distpzero = minDist Eyesep = k * minDist Onde Distpzero é a distância ao plano de paralaxe zero, Eyesep é a separação virtual dos olhos, minDist é o menor valor retornado pelo cubemap e k é uma constante. Esse ajuste é feito sempre que os planos de corte forem ajustados. Ajuste Dinâmico dos Parâmetros de Estereoscopia para a Navegação “Fly” A primeira equação cria um efeito onde os objetos estão na paralaxe positiva na maior parte do tempo para gerar um efeito mais confortável de profundidade. O uso de minDist impede que objetos na paralaxe negativa sejam clipados. É como se pudéssemos prever se um objeto entrará na área visível da câmera. Não importa se o usuário rotacionar a câmera, o valor de minDist depende somente da posição da câmera. Dessa forma uma rotação na câmera não provoca alteração nos parâmetros da estereoscopia. Ajuste Dinâmico dos Parâmetros de Estereoscopia para a Navegação “Fly” A segunda equação ajusta a separação dos olhos de acordo com a escala em que a câmera se encontra no momento. Por exemplo: se a câmera estiver em uma sala pode ser razoável que a separação dos olhos tenha um valor de acordo com a separação dos olhos de uma pessoa real. Porém se a câmera está olhando para um planeta inteiro, a separação dos olhos deverá ser reconfigurada para um valor maior. A constante k é escolhida de forma a prover ao usuário uma sensação confortável de profundidade. Em nossos testes descobrimos que usando k = 0,01 gera um efeito satisfatório. Ajuste Dinâmico dos Parâmetros de Estereoscopia para a Navegação “Fly” O ajuste proposto depende das técnicas de navegação implementadas anteriormente pelos seguintes motivos: Para que esse ajuste funcione corretamente os valores de minDist gerados devem variar de forma suave. Isso é possível graças ao ajuste automatico de velocidade de navegação. O tratamento de colisão garante que não haverá quebra do efeito de estereoscopia, pois a câmera não atravessa os objetos. Ajuste Dinâmico dos Parâmetros de Estereoscopia para a Navegação “Fly” Ajuste Dinâmico dos Parâmetros de Estereoscopia para a Navegação “Examine” Nesta abordagem decidimos posicionar o plano de paralaxe zero no centro do objeto selecionado. A distância entre os olhos é determinada por uma constante multiplicada pelo volume envolvente do objeto selecionado. Para nossos testes usamos o valor de 0,18 para a constante. Esse ajuste garante um efeito estereoscópico interessante uma vez que metade do objeto está na paralaxe negativa sem que ocorra clipping nas bordas. Conclusão Em nossos testes informais verificamos que os ajustes propostos produzem estereoscopia confortável e facilita o uso de aplicações estereoscópicas de realidade virtual pois o usuário não precisa se preocupar com o ajuste dos parâmetros. Como trabalho futuro pretendemos conduzir testes de usuário formais. Dúvidas ?