Realidade Virtual Aula 8 Remis Balaniuk Animação em 3D • Como visto anteriormente, a posição e a orientação de um objeto 3D são definidas por vetores de 3 valores. • Em Física, a variação da posição no tempo é chamada de velocidade. • A variação no tempo da orientação é chamada de velocidade angular. • Em termos matemáticos a velocidade é a derivada da posição. Velocidades • A velocidade em um movimento não uniforme varia no tempo. • Entretanto, ao analisar pequenos intervalos de tempo, a velocidade durante esse intervalo pode ser considerada constante, o que permite o seu uso para recalcular a posição no instante de tempo i usando as conhecidas fórmulas: – xi = xi-1 + xi-1’ . t – i = i-1 + i-1’ . t Velocidades • Lembre-se que nessas fórmulas xi , xi-1 , xi-1’, i , i-1 , i-1’ representam vetores tridimensionais. • dx = xi-1’.t representa a translação a ser aplicada em um instante de tempo • d = i-1’.t representa a rotação a ser aplicada em um instante de tempo • naquele formato de rotação definido na aula 4 ||d|| (o vetor unitário normalizado de d) é o eixo de rotação e o comprimento de d é o ângulo. Integração explícita • O processo de recalculo de um valor passo a passo usando uma derivada desse valor em pequenos intervalos é chamado de integração explícita desse valor. • No caso das equações xi = xi-1 + xi-1’ . t e i = i-1 + i-1’ . t, a posição e a orientação respectivamente estão sendo integradas no tempo usando as velocidades. Acelerações • A atualização das velocidades também se faz por meio de integração explícita, usando-se para isso a aceleração e a aceleração angular. – xi’ = xi-1’ + xi-1’’ . t – i’ = i-1’ + i-1’’ . t Acelerações • O cálculo das acelerações segue as leis de Newton e são definidas por: – xi’’ = Fi / m • onde Fi é a força sendo aplicada no instante i e m é a massa do objeto. – i’’ = I-1 . Ti • Onde Ti é o torque sendo aplicado no instante i e I é o “momento de inércia” ou tensor de inércia do objeto. • O torque é uma força que faz o objeto só rodar. • O momento de inércia é uma matriz que depende da massa e da forma do objeto e que determina a “resistência” do objeto a girar. Animação em 3D • Uma força qualquer aplicada a um ponto só gera uma translação desse ponto, sendo que num objeto volumétrico ela gera ao mesmo tempo translação e rotação. F Decomposição de forças • Ou seja, um vetor de força F aplicada a um objeto, deve ser decomposto em força propriamente dita F* e torque T. • Essa decomposição se faz da seguinte forma: F* = -||r||.(F • ||r||) F T T=F×r F p Visão frontal Do cubo r Centro de massa do objeto c F* Centro de massa • o centro de massa do objeto é normalmente seu centro geométrico se esse tem forma simétrica e é composto de material homogêneo. • Nesses casos pode se considerar o centro de da “boundary box” que envolve o objeto como sendo seu centro geométrico. • O centro de massa é o centro das rotações do objeto quando esse esta livre no espaço. • Por isso é importante definir o objeto (seus vértices) em torno do centro do seu sistemas de coordenadas, de forma que o centro de massa coincida com esse centro. Centro de massa • A força e o torque devem ser calculados para o centro de massa, para então calcular a aceleração linear e angular do objeto. • Para calcular o efeito de uma força pontual qualquer agindo num ponto qualquer do objeto leva-se em consideração o vetor r, formado entre o ponto de contato p e o centro de massa c: – r=p-c Força • A equação que define o componente da força linear no centro de massa é: F* = -||r||.(F • ||r||) – a operação • é o “dot product” entre os vetores da força F e da normalização de r: [a,b,c] •[d,e,f] = a.d+b.e+c.f – ||r|| é a normalização do vetor r (vetor unitário) – -||r|| define direção do componente da força resultante no centro de massa e (F • ||r||) define a intensidade dessa força. Torque • A equação que define o torque aplicado ao centro de massa do objeto: T=F×r – a operação × é o produto vetorial definido por: • [a,b,c] ×[d,e,f] = [b.f-c.e,a.f-c.d,a.e-b.d] – T será um vetor perpendicular ao plano formado por F e r Massa • A massa dos objetos é normalmente calculado como o volume multiplicado pela densidade, considerando que o objeto é feito de material homogêneo. • A densidade é uma propriedade de cada tipo de material. Momento de inércia • O momento de inércia depende da massa e da forma do objeto e define a “resistência do objeto às rotações”. • A fórmula que relaciona torque com aceleração angular é definida como: – T = I . ’’ • T e ’’ são vetores e I é uma matriz 3x3 chamada “tensor de inércia”: '' I xx I xy I xz x Tx '' T I I I y yx yy yz y Tz I zx I zy I zz z'' Momento de inércia • O cálculo de I para um objeto qualquer envolve um processo razoavelmente complexo de integração da massa x a distância de todas as partículas que compõem o objeto. • Para figuras geométricas simétricas em torno dos 3 eixos, entretanto, I é uma matriz diagonal (só a diagonal diferente de 0). • Para figuras mais simples os valores de Ixx , Iyy e Izz são definidos. Momento de inércia • Um paralelepípedo de massa m, comprimento a, altura b e largura c tem I definida por: – Ixx=m.(b2 + c2 )/12 – Iyy=m.(a2 + c2 )/12 – Izz=m.(a2 + b2 )/12 y x b c z a Momento de inércia • Uma esfera de massa m e raio a tem como momento de inércia: – Ixx= Iyy= Izz = 2.m.a2 /5 • um cilindro ao longo do eixo x, de comprimento L e raio a tem como momento de inércia: – Ixx= m.a2 / 2 – Iyy= Izz = m.(3a2 + L2) / 12 Momento de inércia • Queremos implementar a integração da aceleração angular, então precisamos implementar a fórmula: – i’’ = I-1 . Ti • Para implementar I-1 basta definir um objeto da classe cMatrix3d, preenche-la com a diagonal Ixx , Iyy e Izz e 0 nas demais posições e inverte-la usando o método invert() Gravidade • Para simular a gravidade basta acrescentar à aceleração do centro de massa a aceleração da gravidade – g=[0,-9.8,0] • A gravidade não produz torque no centro de gravidade. Unidades de medida • As unidades de medida padrão são Newtons para forças, metros para distâncias e segundos para tempo. • Para que o comportamento da simulação pareça real é necessário compatibilizar essas medidas. • Por exemplo, embora a massa dos objetos não precise ser calculada com precisão, é necessário que ela não seja nem muito grande nem muito pequena pois mudaria muito a aceleração do objeto. • Mudanças de escala do objeto deveriam afetar sua massa. Controle da integração • As integrações explícitas de posição, orientação, velocidade e velocidade angular devem ser repetidas em media 50 vezes por segundo para garantir um bom efeito visual, o que daria um t = 0.02. • A chamada dos métodos de integração pode ser feita usando um timer no BBC++. Exercício • Calcular a aceleração linear e angular de um cubo de lado 1 e massa 1 quando uma força [1,0,0] é aplicada no seu canto superior frontal esquerdo. [1,0,0] Implementações • Implementar uma especialização da classe cGenericObject chamada objetoDinamico que adicione propriedades e métodos que permitam a sua simulação dinâmica: – Integração explícita da posição, orientação, velocidade, velocidade angular. – Com ou sem gravidade. – Incluindo propriedades de densidade, massa, momento de inércia. – O centro de massa deveria ser sempre [0,0,0], para isso deveria haver um método de ajuste das coordenadas dos vértices caso o objeto não fosse criado em torno do centro do sistema de coordenadas. Implementações • Criar um jogo em 3D com as seguintes características: – Um canhão vai lançar uma bola que deve acertar no buraco da parede. Implementações – A propulsão do canhão deve ser modelada como sendo a de uma mola que gera uma força de intensidade F = k. l, onde k é um parâmetro da “dureza” da mola e l é o quanto ela está comprimida. – A direção da força é determinada pela direção do canhão. – O jogador pode direcionar o canhão usando dois ângulos e também pode regular quanto de compressão deseja na mola do canhão. – A trajetória da bola será calculada por integração explicíta, considerando a gravidade.