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

Rvaula8 - GEOCITIES.ws