Realidade Virtual Aula 2 Remis Balaniuk. Enxergando grande, começando pequeno Quem começa a...

16
Realidade Virtual Aula 2 Remis Balaniuk

Transcript of Realidade Virtual Aula 2 Remis Balaniuk. Enxergando grande, começando pequeno Quem começa a...

Page 1: Realidade Virtual Aula 2 Remis Balaniuk. Enxergando grande, começando pequeno Quem começa a aprender RV normalmente sofre um primeiro impacto negativo.

Realidade VirtualAula 2

Remis Balaniuk

Page 2: Realidade Virtual Aula 2 Remis Balaniuk. Enxergando grande, começando pequeno Quem começa a aprender RV normalmente sofre um primeiro impacto negativo.

Enxergando grande, começando pequeno

• Quem começa a aprender RV normalmente sofre um primeiro impacto negativo ao constatar o grande número de tópicos que devem ser estudados:– linguagem de programação: C, C++, Java(?)– Biblioteca gráfica: OpenGL, VRML :-((– Geometria tridimensional: vetores, transformadas, coordenadas

homogêneas, etc– Física: equações do movimento (força, velocidade, aceleração,

gravidade, etc), propriedades dos objetos (massa, densidade, elasticidade, etc), energia, etc.

– Estratégias de simulação: multi-threads, sincronização, frequências de simulação.

– Drivers e dispositivos.

Page 3: Realidade Virtual Aula 2 Remis Balaniuk. Enxergando grande, começando pequeno Quem começa a aprender RV normalmente sofre um primeiro impacto negativo.

Enxergando grande, começando pequeno

• A implementação de aplicações, quando feita do zero, exige bastante esforço de programação.

• Difíceis de depurar (multi-thread).• Modelos são difíceis de serem construídos

(definição do mesh de triângulos, definição das propriedades do objeto, etc).

Page 4: Realidade Virtual Aula 2 Remis Balaniuk. Enxergando grande, começando pequeno Quem começa a aprender RV normalmente sofre um primeiro impacto negativo.

Enxergando grande, começando pequeno

• Por isso, essa disciplina vai adotar as seguintes estratégias para otimizar o aprendizado:– não reinventar a roda:

• usaremos um ambiente de programação adequado, que tenha recursos que facilitem a programação e o debug : o Borland C++

• ao invés de usar o OpenGL diretamente adotaremos uma biblioteca de classes pronta que já traga implementadas as estruturas básicas (vetor, matrizes, operações sobre vetores e matrizes, apresentação, definição de atributos, etc). Usaremos o Chai3d.

Page 5: Realidade Virtual Aula 2 Remis Balaniuk. Enxergando grande, começando pequeno Quem começa a aprender RV normalmente sofre um primeiro impacto negativo.

Enxergando grande, começando pequeno

– defina de forma bem estruturada suas classes, de forma que essas possam ser reutilizadas de uma aplicação para outra.

– programe de forma limpa e bem documentada.– aprenda implementando:

• ataque problemas começando pelos mais simples, e aumente gradualmente sua complexidade.

• dê ênfase ao estudo das transformações geométricas, que são o ponto crucial de uma aplicação em RV.

• explore os recursos da biblioteca gráfica para entender bem seu funcionamento.

Page 6: Realidade Virtual Aula 2 Remis Balaniuk. Enxergando grande, começando pequeno Quem começa a aprender RV normalmente sofre um primeiro impacto negativo.

Passos • Passo 1: escolher a plataforma de implementação

– VRML ou OpenGL?• VRML

– é uma linguagem descritiva de objetos tridimensionais. – necessita de um browser para visualização– o browser, por ser uma caixa preta, não permite adicionar recursos de vizualização ou

alteração no modelo durante a simulação (deformação, dinâmica, etc)– é mais simples a ser usado mas limitado quanto ao uso

• OpenGL– é uma linguagem procedural, que envia instruções à placa gráfica– é bem primária, baseada em primitivas gráficas como linhas, pontos, polígonos simples,

cor do fundo, orientação da camera virtual, etc– código difícil de depurar pois não dá mensagens de erro– instruções dependem do contexto (matriz de transformação) e o programador é que deve

entender esse contexto (camera virtual)

Page 7: Realidade Virtual Aula 2 Remis Balaniuk. Enxergando grande, começando pequeno Quem começa a aprender RV normalmente sofre um primeiro impacto negativo.

Passos

• Passo 1: escolher a plataforma de implementação (cont.)– escolha da linguagem– escolha do ambiente de programação

• glut: biblioteca que adiciona recursos básicos ao OpenGL, tais como abrir janelas, adicionar menus, etc. É multi-plataforma (Windows, Unix)

• MS -Visual, Borland Builder: já trazem recursos de gerenciamento de janelas (mais sofisticados que os do glut) mas são restritos ao Windows.

– escolha de uma biblioteca• deve conter estruturas de dados e classes abrangentes

Page 8: Realidade Virtual Aula 2 Remis Balaniuk. Enxergando grande, começando pequeno Quem começa a aprender RV normalmente sofre um primeiro impacto negativo.

Passos• Passo 2: definir (ou entender) as estruturas de

dados que descrevem o mundo– o mundo virtual é composto de objetos tridimensionais,

cuja superfície é descrita normalmente através de meshes de polígonos (normalmente triângulos).

– um mesh é um conjunto de vértices, conectados pelos polígonos.

– Um vértice é uma localização no espaço descrita por um vetor de coordenadas [x,y,z]

– um polígono é uma lista de vértices e um vetor normal (orientação para refletir a luz)

– cor, textura e tipo de material são ainda propriedades dos polígonos

– um objeto é uma lista de polígonos

Page 9: Realidade Virtual Aula 2 Remis Balaniuk. Enxergando grande, começando pequeno Quem começa a aprender RV normalmente sofre um primeiro impacto negativo.

Passos• Passo 3: entender os sistemas de

coordenadas– a posição de um objeto no espaço (definida pela posição

dos seus vértices) assume que existe um sistema de coordenadas conhecido, em função do qual essas posições são definidas

– antes de mostrar na janela o mundo virtual é preciso definir de qual ângulo e posição se deseja ver esse mundo

– para isso de usa a metáfora da câmera virtual– a câmera define uma outro sistema de coordenadas, que

muda constantemente, enquanto o sistema onde os objetos são definidos permanece fixo.

– Para mostrar o mundo pela perspectiva da câmera virtual é feita uma transformação de coordenadas de um sistema a outro (o OpenGL faz isso)

Page 10: Realidade Virtual Aula 2 Remis Balaniuk. Enxergando grande, começando pequeno Quem começa a aprender RV normalmente sofre um primeiro impacto negativo.

Passos• Passo 4: estudar os conceitos de transformações

geométricas– movimentos do objeto como um todo (movimentos rígidos) e as

mudanças na câmera virtual são definidos por uma composição de translações, rotações e mudanças de escala

– essas transformações geométricas são implementadas usando matrizes especiais chamadas de “coordenadas homogêneas”

– o domínio dessas transformações e de sua implementação é o ponto crítico da aprendizagem em Computação Gráfica e Realidade Virtual.

– deformações definem movimentos específicos a cada vértice que são calculados e aplicados um a um.

Page 11: Realidade Virtual Aula 2 Remis Balaniuk. Enxergando grande, começando pequeno Quem começa a aprender RV normalmente sofre um primeiro impacto negativo.

Passos

• Passo 5: entender o estrutura de controle da simulação– uma simulação é composta por loops simultâneos (threads

paralelas), cada um cuidando de um aspecto da simulação– aliás o loop é a forma de “fatiar” o tempo (discretizar) de

forma a tratar um processo continuo em passos discretos.– os loops devem ser repetidos diversas vezes por segundo

para criar a ilusão de continuidade– a placa gráfica está sempre em loop exibindo a tela e suas

janelas

Page 12: Realidade Virtual Aula 2 Remis Balaniuk. Enxergando grande, começando pequeno Quem começa a aprender RV normalmente sofre um primeiro impacto negativo.

Passos• Passo 5: entender o estrutura de controle da

simulação (cont.)– uma simulação está ligada a uma janela (o mundo virtual)– o loop gráfico (ou refresh) da aplicação executa os

comandos OpenGL que definem as primitivas gráficas que aparecem na janela.

– se esse loop parar a placa gráfica vai continuar a mostrar a ultima imagem gerada.

– se o mundo muda continuamente o loop gráfico precisa rodar a pelo menos ~30Hz (como um filme) para dar a sensação de continuidade dos movimentos.

– mudanças na câmera virtual são simuladas nesse loop

Page 13: Realidade Virtual Aula 2 Remis Balaniuk. Enxergando grande, começando pequeno Quem começa a aprender RV normalmente sofre um primeiro impacto negativo.

Passos• Passo 5: entender o estrutura de controle da simulação (cont.)

– no loop de atualização do mundo (ou update) é simulada as mudanças ocorridas no mundo, ou seja, as mudanças de posição e orientação dos objetos, as deformações, etc.

– se houver simulação física, a cada passo desse loop serão recalculadas forças, acelerações, velocidades e posições dos objetos.

– colisões também são tratadas nesse loop.– para cada mudança num objeto a posição de todos os seus vértices

deve ser recalculada.– esse loop pode funcionar mais devagar ou mais rápido que o loop gráfico

dependendo da aplicação.– se eles funcionam sempre na mesma velocidade podem ser juntados.

Page 14: Realidade Virtual Aula 2 Remis Balaniuk. Enxergando grande, começando pequeno Quem começa a aprender RV normalmente sofre um primeiro impacto negativo.

Passos• Passo 5: entender o estrutura de controle da

simulação (cont.)– o loop háptico calcula forças da interação

entre o usuário e os objetos virtuais– devido à nossa alta sensibilidade tátil o

refresh háptico precisa ser muito mais rápido (~1000Hz).

– devido a essa alta velocidade, o loop háptico precisa ser bastante otimizado e não pode realizar cálculos e testes longos.

Page 15: Realidade Virtual Aula 2 Remis Balaniuk. Enxergando grande, começando pequeno Quem começa a aprender RV normalmente sofre um primeiro impacto negativo.

Passos• Passo 6: estudar animações

– uma animação pode ser baseada numa simulação física ou não– se não for física a implementação depende das características da

aplicação– se for física é preciso estudar os conceitos básicos de integração de

equações diferenciais.– o estado de um sistema físico é definido pela velocidade e posição

dos objetos.– para recalcular o estado é preciso integrar (somar) as acelerações,

que podem ser causadas pela gravidade ou forças externas – como cada passo da integração depende do intervalo de tempo

considerado, é preciso ficar atento ao controle do loop de update para que o intervalo de tempo real coincida com o virtual.

Page 16: Realidade Virtual Aula 2 Remis Balaniuk. Enxergando grande, começando pequeno Quem começa a aprender RV normalmente sofre um primeiro impacto negativo.

Passos

• Passo 7: tópicos específicos– algoritmos de detecção e tratamento de

colisões– algoritmos de cálculo da interação háptica– Texturas, materiais, luzes