Modelagem F - PowerPoint PPT Presentation

About This Presentation
Title:

Modelagem F

Description:

... Cinema Alguns filmes que usaram Havok: Tr ia, Matrix, Charlie and the Chocolate Factory, X-Men 3, Harry Potter and the Order Of The Phoenix, 10,000 BC ... – PowerPoint PPT presentation

Number of Views:141
Avg rating:3.0/5.0
Slides: 63
Provided by: FelipeF6
Category:

less

Transcript and Presenter's Notes

Title: Modelagem F


1
Modelagem Física
  • Felipe Cavalcanti Ferreira (fcf3)
  • Filipe César Andrade (fcsa)

2
Índice
  • Modelagem Física
  • Propriedades físicas
  • APIs
  • Open Dynamics Engine ODE
  • Havok
  • Conclusão

3
Modelagem Física
  • Simulação física em ambientes virtuais
  • Como os objetos se movem, interagem e reagem ao
    ambiente em volta
  • Requer uma imensa quantidade de cálculos lógicos
    e matemáticos

4
Propriedades Físicas
  • Materiais
  • Fricção
  • Dureza
  • Leis de Newton
  • Forças aplicadas e aceleração
  • Ação e reação
  • Detecção de colisão
  • Juntas e molas
  • Objetos complexos

5
Propriedades Físicas
  • Fluidos
  • Sangue
  • Movimento de rios e oceanos
  • Sistemas de partículas
  • Fumaça
  • Explosões

6
APIs Físicas
  • APIs comerciais
  • Physx
  • Havok
  • APIs não comerciais
  • Open Dynamics Engine
  • Newton Game Dynamics
  • Tokamak

7
Open Dynamics Engine
  • Utilizado para simular o movimento de corpos
    rígidos em ambientes virtuais dinâmicos
  • Possui um sistema integrado de detecção de
    colisões
  • Independente da API gráfica
  • Open-source

8
Open Dynamics Engine
  • Criado inicialmente por Russell Smith
  • Escrito em C, mas prover uma interface em C
  • Troca exatidão por velocidade
  • Relativamente estável comparado com outros
    simuladores

9
Tipos básicos de ODE
  • Mundo
  • Gravidade e integração do tempo
  • Espaço
  • Otimização de colisões
  • Corpo Rígido
  • Objeto físico que sofre ações das leis da física
  • Juntas
  • Ligação entre dois corpos
  • Geometria
  • Forma dos corpos

10
Mundo
  • Contentor de corpos
  • Gravidade
  • Step(dt)
  • Aproximação física entre mundos real e virtual

11
Espaço
  • Contentor de geometrias
  • Geometria que contem outras geometrias
  • Modos de colisão
  • Entre geometrias dentro do mesmo espaço
  • Entre geometrias de espaços diferentes
  • Estrutura de dados
  • Simples, hash table e quad tree

12
Corpo Rígido
  • Corpo indeformável, cujas posições relativas
    permanecem fixas, independentemente de quais as
    forças aplicadas.

13
Corpo Rígido
  • Propriedades constantes
  • Massa
  • Centro de massa
  • Matriz de inércia
  • Propriedades variáveis
  • Posição vetorial (centro de massa)
  • Velocidade linear
  • Velocidade angular
  • Orientação (matriz de rotação)

14
Juntas
  • Estabelece uma relação entre dois corpos de forma
    a confinar a posição/orientação de um corpo
    relativamente ao seu par
  • Vários tipos de juntas
  • Possibilidade de adicionar novas junções

15
Bola e Soquete (Ball and socket)
  • Movimento em torno de números indefinidos de
    eixos, com o mesmo centro em comum
  • Ex. Ombro e quadril

16
Dobradiça-1 (Hinge-1)
  • Só permite movimento para frente e para trás no
    mesmo plano
  • Ex. Portas de armários, joelhos.

17
Deslizante (Slider)
  • Permite um objeto deslizar em relação ao outro

18
Universal
  • Movimento em qualquer direção
  • Ex. Motor de transmissão de um carro

19
Deslizante-2 (Hinge-2)
  • Duas dobradiças ligadas em série, com diferentes
    eixos de dobradiça.
  • Ex. Volante de um carro

20
Geometrias
  • Rigidez
  • Propriedades geométricas
  • Tamanho, forma, posição, orientação
  • Não tem velocidade e nem massa
  • Forma
  • Esfera, caixa, plano, cilindro fechado, malha
    triangular, e forma definida pelo usuário
  • Possibilidade de adicionar novas geometrias

21
Geometrias
  • Corpo com várias geometrias
  • Formas mais complexas, mas mantendo a
    simplicidade física
  • Exemplo
  • Carro é uma caixa com várias geometrias que
    descrevem o corpo
  • Corpo separado da geometria
  • Objetos invisíveis são feitos pelo não ligamento
    da geometria a um corpo
  • Objetos estáticos podem ser feitos criando a
    geometria sem um corpo

22
Geometrias
  • Estáticas
  • Representam objetos estáticos do ambiente (que
    nunca se movem)
  • Dinâmicas
  • Associadas a um corpo
  • Posição/orientação iguais a posição/orientação do
    corpo associado

23
Detecção de Colisões
  • Tratado antes de cada etapa da simulação
  • Detecção de colisões
  • Espaços
  • Geometrias
  • Processamento das colisões detectadas
  • Pontos de contatos

24
Junção de contato
  • Evita a intersecção entre corpos no ponto de
    contato
  • Tempo de vida de um timestep
  • Construída em resposta à detecção de colisões
  • Destruída após processamento da colisão
  • Informação extra sobre o contato, como por
    exemplo o atrito

25
Junção de contato
26
Criação de um objeto simples
27
Aplicações de ODE
  • Jogos, simulação de robôs, animação 3D, etc.

28
Exemplo de aplicação
  • Modelo simples de um bípede
  • Perna esquerda fixa no chão
  • Forças são aplicadas na perna direita
  • Postura do modelo muda para manter o equilíbrio

29
Vídeos de demonstração
30
(No Transcript)
31
1- Empresa 2 - Produtos 3- Physics O que é? 4-
Uso 5- O que não é? 6- Funcionamento 7- Havok
Dynamics
32
Empresa
  • Empresa de software que provê software
    interativos e serviços para desenvolvedores de
    jogos e cinema
  • Fundada em 1998 por Hugh Reynolds e Dr. Steven
    Collins do Dep. Ciência da Computação da Univ.
    Trinity em Dublin.
  • Parceria com diversos fabricantes de jogos. Ex
    Microsoft, Ubisoft, EA, Sony
  • Recentemente comprada pela Intel

33
Produtos
  • Havok Behavior
  • Desenvolvimento do comportamento de objetos
    baseando-se em eventos
  • Havok Physics
  • Estado da arte da física
  • Havok Animation
  • Otimização de reprodução e composição em tempo
    real
  • Havok Cloth
  • Permite adicionar movimentos baseados na física
    para cabelos, camisas
  • Havok Destruction
  • Simulação de destruição de objetos rígidos.

34
Physics O que é?
  • Havok Physics é uma engine física(middleware).
  • Desenvolvida para PCs e Consoles para permitir
    interação entre objetos em tempo real.
  • Permite reduzir o tempo gasto com o
    desenvolvimento do comportamento dos objetos

35
Physics O que é?
-Havok is committed to providing not only the
premier physics software to our customers, but
also in giving them new tools, such as Havok
Behavior, that can substantially reduce the time
it takes teams to develop character behaviors,
allowing game programmers to focus on developing
the best game they can.. (Diretor Executivo
David O'Meara)
36
Uso
- Jogos
37
Uso
- Aplicações
38
Uso
- Cinema
Alguns filmes que usaram Havok Tróia, Matrix,
Charlie and the Chocolate Factory, X-Men 3, Harry
Potter and the Order Of The Phoenix, 10,000 BC
39
O que não é?
-Kit de construção de jogos -Tecnologia
Simples -Caixa preta -Renderizador Comercial
40
Funcionamento
  • Bibliotecas básicas
  • Gerenciamento de memória
  • Temporização
  • Tipos básicos
  • -Inicialização
  • static hkResult HK_CALL init(
  • hkMemory memoryManager,
  • hkThreadMemory threadMemory,
  • hkErrorReportFunction errorReportFunction
  • void errorReportObject HK_NULL )

41
Funcionamento
42
Funcionamento
  • 1- Preparar Simulação
  • Particionar objetos em grupos de simulação
  • Grupos mantidos pelo próprio framework

43
Funcionamento
44
Funcionamento
  • 2 Aplicar Ações
  • Controlar o estado dos objetos durante a
    simulação
  • Métodos applyAction() chamados
  • 3- Definir Restrições
  • Processamento das restrições,
  • como juntas de contato, dobradiças

45
Funcionamento
  • 4- Solucionador
  • Garantir satisfação das restrições
  • Minimizar possíveis erros
  • 5- Integração
  • Método hkpWorld integrate()
  • Cálcular os novos estados de movimento
    (velocidade, aceleração, posição) dos objetos

46
Funcionamento
  • 6- Detecção de colisão
  • Dividida em 3 fases
  • BroadPhase
  • MidPhase
  • NarrowPhase
  • Objeto hkpShape determina forma para propósitos
    da detecção de colisão

47
Funcionamento
  • 7- Simulação Contínua
  • Soluciona eventos de impacto gerados na fase
    anterior
  • Eventos de impacto podem gerar novos eventos
  • Na simulação discreta, não é chamada

48
Havok Dynamics
  • Módulo central do sistema
  • Cria mundo simulado
  • Adiciona objetos
  • Avançar no tempo
  • Possui vários elementos
  • Mundo, corpos rígidos, ações, restrições,
    ouvintes

49
Havok Dynamics
  • Mundo(1/2)
  • Simulações contém uma ou mais instâncias do
    objeto hkpWorld.
  • Recipiente para todos os objetos da simulação,
    chamados de entidades.
  • Necessita de um objeto do tipo hkpWorldCinfo,
    contendo informações como
  • Gravidade
  • Tolerância à colisões
  • Parâmetros da simulação contínua (velocidade
    máxima, tipo de simulação)

50
Havok Dynamics
  • Mundo(2/2)
  • hkpWorldCinfo info
  • info.m_simulationType hkpWorldCinfoSIMULATION_
    TYPE_DISCRETE
  • info.m_gravity.set( 0,-9.8f,0)
  • info.m_collisionTolerance 0.1f
  • info.setBroadPhaseWorldSize( 150.0f )
  • info.setupSolverInfo( hkpWorldCinfoSOLVER_TYPE_4
    ITERS_MEDIUM )
  • m_world new hkpWorld( info )

51
Havok Dynamics
  • Corpos Rígidos(1/4)
  • Todos os objetos reais imutáveis
  • Simulações só com corpos rígidos são rapidamente
    criáveis
  • Adaptados para moverem-se realisticamente
  • Pertence à classe hkpRigidBody, subclasse de
    hkpEntity
  • Contém instância do objeto hkpRigidMotion com as
    informações sobre como o corpo deve se mover.

52
Havok Dynamics
  • Corpos Rígidos(2/4)
  • Precisa de um objeto do tipo hkpRigidBodyCinfo
    que contém várias informações do corpo, como por
    exemplo
  • hkpShape m_shape Forma do objeto utilizada para
    fins de detecção de colisão
  • hkReal m_mass Massa do corpo rígido. Precisa
    ser definido.
  • hkReal m_friction Define o atrito do corpo
    rígido
  • hkVector4 m_position Posição inicial do objeto
    ao ser adicionado ao mundo.

53
Havok Dynamics
  • Corpos Rígidos(3/4)
  • hkArraylthkVector4gt dummyPlaneEquations
  • hkpConvexVerticesShape pShape new
    hkpConvexVerticesShape(stridedVerts,
    dummyPlaneEquations)
  • hkpRigidBodyCinfo rigidBodyInfo
  • rigidBodyInfo.m_shape pShape
  • hkReal mass 10.0f
  • hkpInertiaTensorComputersetShapeVolumeMassProper
    ties(pShape, mass, rigidBodyInfo)
  • rigidBodyInfo.m_motionType hkpMotionMOTION_BOX
    _INERTIA
  • rigidBodyInfo.m_qualityType HK_COLLIDABLE_QUALIT
    Y_MOVING
  • hkpRigidBody pRigidBody new hkpRigidBody(rigidB
    odyInfo)

54
Havok Dynamics
  • Corpos Rígidos(4/4)
  • Exemplo de aplicação de forças
  • if (m_brakePressed)
  • hkVector4 zero
  • zero.setZero4()
  • m_body-gtsetLinearVelocity(zero)
  • m_body-gtsetAngularVelocity(zero)
  • setBrakePressed(false)
  • Limitação de pontos na detecção de colisões

55
Havok Dynamics
  • Restrições(1/2)
  • 6 graus de liberdade
  • Limitação da liberdade de movimento
  • Diferentes formas de limitar os movimentos levam
    a várias aplicações
  • Porta
  • Junção da roda de um carro
  • Quanto maior a complexidade da restrição, maior o
    tempo gasto com a computação da mesma

56
Havok Dynamics
  • Restrições(2/2)
  • hkpBallAndSocketConstraintData bsData new
    hkpBallAndSocketConstraintData()
  • hkpConstraintInstance bsInstance new
    hkpConstraintInstance( bodyA, bodyB, bsData )
  • m_world-gtaddConstraint( bsInstance )
  • bsData-gtremoveReference()
  • bsInstance-gtremoveReference()

57
Havok Dynamics
  • Ações(1/2)
  • Forma simples e eficiente de controlar o
    comportamento físico do mundo simulado
  • Anti-gravidade, controle de vôo de um
    helicóptero
  • Implementam o método applyAction()
  • A cada passo da simulação, método é chamado.

58
Havok Dynamics
  • Ações(2/2)
  • Classes de tipos de ações já fornecidas
  • hkpUnaryAction Aplicadas a um único corpo.
  • Ex Motor de turbina
  • hkpBinaryAction Aplicadas a um par de corpos.
  • Ex Elástico unindo dois corpos
  • hkpArrayAction Aplicadas a Vários corpos de uma
    vez.
  • Ex Magneto

59
Havok Dynamics
  • Ouvintes
  • Reagem apenas à eventos específicos da simulação
  • Mais utilizados para responder a eventos
    infrequentes
  • Chamada de retorno passa informações relevantes
    sobre o evento
  • Podem ser extendidas para eventos de entidades
    particulares ou do mundo inteiro

60
Conclusão
  • APIs bem avançadas, inclusive as Open source
  • Facilitam bastante a construção de jogos
  • Não é trivial
  • Requer alto processamento de hardware

61
Referências
  • www.ode.org
  • www.havok.com
  • www.wikipedia.com/Havok_(company)
  • www.wikipedia.com/Havok_(software)

62
Dúvidas
????
Write a Comment
User Comments (0)
About PowerShow.com