Felipe Cavalcanti Ferreira (fcf3) Filipe César Andrade (fcsa)

Slides:



Advertisements
Apresentações semelhantes
Modelagem Baseada na Física Simulação de Corpos Rígidos
Advertisements

Profª Jusciane da Costa e Silva
Professor: Marcelo Alano
Introdução Mecânica Mecânica dos corpos rígidos
UNIVERSIDADE FEDERAL DE SANTA MARIA Laboratório de Biomecânica
ROTAÇÃO DE UM CORPO RÍGIDO O eixo fixo é denominado eixo de rotação
Rotação dos Corpos Rígidos
César Candido Xavier - Aluno Mestrado CG
Análise Gráfica de Velocidades
Medida do Tempo de Execução de um Programa
Medida do Tempo de Execução de um Programa
MOMENTUM LINEAR Caderno de exercícios Nome.
Simulação Física de Corpos Rígidos com Detecção e Reação à Colisões
Laboratório de Máquinas Inteligentes – LMI/ITA
Leis de Isaac Newton.
Modularização: funções e procedimentos
Sistemas Operacionais I
Dinâmica de um Sistema de Muitas Partículas
Polimorfismo em C#.
Prof. Marcelo de Oliveira Rosa
ROBÓTICA Helder Anibal Hermini.
Informática Teórica Engenharia da Computação
Game Engine André Maximo Carlos Henrique Cavalcanti Final 2004.
Análise Estática de Mecanismos
CONSTRAINTS AND CONNECTIONS - ABAQUS
Estrutura Híbrida de Locomoção para um Robô Humanóide
ABAQUS – Interface explícita e implícita
Game Engines.
Teoria Cinética dos Gases
Momento Linear, Impulso e Colisões
Leis do movimento Professor: Antonio dos Anjos Pinheiro da Silva
Programação Orientada à Objetos
Princípios de Cinemática
Dinâmica de um Sistema de Muitas Partículas
Prof. Silvestri – todos os direitos reservados SISTEMAS DISTRIBUIDOS Aula 5 Eduardo Silvestri
ESTÁTICA marcelo alano
Condições de Equilíbrio
Leis de Newton O início de nossa sociedade
AE-712 AEROELASTICIDADE Roberto GIL Annes da Silva R: IAE/ALA-L
4/12/2017 2:27 AM 1.
O estudo das causas do movimento é a Dinâmica
Física.
Oscar Takeshi Omar Mogames Vitor Gomes
LEIS DE NEWTON.
Realidade Virtual Aula 2 Remis Balaniuk. Enxergando grande, começando pequeno Quem começa a aprender RV normalmente sofre um primeiro impacto negativo.
ROTAÇÃO DE UM CORPO RÍGIDO O eixo fixo é denominado eixo de rotação
MOVIMENTO DE UM CORPO RÍGIDO
MOMENTO DE INÉRCIA Suponhamos um corpo rígido que gira ao redor de um eixo Cada partícula de massa do corpo rígido descreve uma trajectória circular.
Teoria Cinética dos Gases
UNIVERSIDADE FEDERAL DE SANTA MARIA Laboratório de Biomecânica
Teoria Cinética dos Gases
ROTAÇÃO DE UM CORPO RÍGIDO O eixo fixo é denominado eixo de rotação
CloudSim Um framework para modelagem e simulação de infraestrutura e serviços de Computação em Nuvem.
UNPACK AND READ QUIETLY "There is a great distance between said and done." -- Puerto Rican proverb.
Disciplina: Aplicações Informáticas Professora: Cátia Sousa Ano lectivo: 2010/2011 Escola Básica e secundaria Gonçalves Zarco Trabalho elaborado por: Diogo.
Aula - 14 Rotações IV Curso de Física Geral.
Robótica Industrial Apontamentos de Aula 2.
UML (Unified Modeling Language) Linguagem Unificada de Modelagem
DINÂMICA DE ESTRUTURAS E AEROELASTICIDADE Prof. Airton Nabarrete
Cinemática Professor John Disciplina Física A.
Análise Dinâmica de Mecanismos
Curso de Pré Física UTFPR – CM 2015/01 Dinâmica Monitores: Hugo Brito Natalia Garcia.
FORÇA E MOVIMENTO II Prof. Bruno Farias
Trabalho e Energia O problema fundamental da dinâmica de uma partícula é saber como a partícula se move, se conhecermos a força que actua sobre ela (como.
Testes de Unidade. 2 Pauta Testes de Unidade; Testes de Unidade; Desenvolvimento orientado a testes; Desenvolvimento orientado a testes; Testes unitários.
Equilíbrio de Corpo Rígido ENGENHARIA DE PRODUÇÃO
ENERGIA POTENCIAL E CONSERVAÇÃO DA ENERGIA
AULA 3.
CENTRO DE MASSA E MOMENTO LINEAR
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Transcrição da apresentação:

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

Índice Modelagem Física Open Dynamics Engine – ODE Havok Conclusão Propriedades físicas API’s Open Dynamics Engine – ODE Havok Conclusão

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

Propriedades Físicas Materiais Leis de Newton Detecção de colisão 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

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

API’s Físicas API’s comerciais API’s não comerciais Physx Havok Open Dynamics Engine Newton Game Dynamics Tokamak

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 Possui um módulo integrado de detecção de colisão, porem ele pode ser substituido, retornar informações sobre os pontos de contato de maneira correta

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

Tipos básicos de ODE Mundo Espaço Corpo Rígido Juntas Geometria 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

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

Espaço Contentor de geometrias Modos de colisão Estrutura de dados 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

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

Corpo Rígido Propriedades constantes Propriedades variáveis 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)

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

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

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

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

Universal Movimento em qualquer direção Ex.: Motor de transmissão de um carro Parecido com o de bola e soquete, só que ele não pode girar

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

Geometrias Rigidez Propriedades geométricas Forma 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

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

Geometrias Estáticas Dinâmicas 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

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

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 Um contato especial de junção será criado para cada ponto de contato. Ao ponto de junção de contado é dada uma informação extra sobre o contato, por exemplo, o atrito presente entre o contato com a superfície. Os contatos das junções são colocados em conjunto, que lhes permite ser adicionados e removidos do sistema muito mais rapidamente. A simulação da velocidade cai à medida que o número de contatos sobe, e várias diferentes estratégias podem ser usadas para limitar o número de pontos de contato. 

Junção de contato

Criação de um objeto simples

Aplicações de ODE Jogos, simulação de robôs, animação 3D, etc.

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

Vídeos de demonstração

1- Empresa 2 - Produtos 3- Physics: O que é? 4- Uso 5- O que não é? 6- Funcionamento 7- Havok Dynamics

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

Produtos Simulação de destruição de objetos rígidos. 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.

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

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)

Uso - Jogos

Uso - Aplicações

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…

O que não é? -Kit de construção de jogos -Tecnologia Simples -Caixa preta -Renderizador Comercial

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 ); Hkmemory -> gerenciador de memória, sem recompilação. hkThreadMemory -> gerenciador de memória de thread. Se passado null, ele mesmo cria

Funcionamento Hkmemory -> gerenciador de memória, sem recompilação. hkThreadMemory -> gerenciador de memória de thread. Se passado null, ele mesmo cria

Funcionamento 1- Preparar Simulação Particionar objetos em grupos de simulação Grupos mantidos pelo próprio framework Hkmemory -> gerenciador de memória, sem recompilação. hkThreadMemory -> gerenciador de memória de thread. Se passado null, ele mesmo cria

Funcionamento Hkmemory -> gerenciador de memória, sem recompilação. hkThreadMemory -> gerenciador de memória de thread. Se passado null, ele mesmo cria

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… Dar o exemplo de mover objetos para uma nova localização

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 Dar o exemplo de mover objetos para uma nova localização

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 Dar o exemplo de mover objetos para uma nova localização

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 Dar o exemplo de mover objetos para uma nova localização

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… Dar o exemplo de mover objetos para uma nova localização

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…)

Havok Dynamics Mundo(2/2) hkpWorldCinfo info; info.m_simulationType = hkpWorldCinfo::SIMULATION_TYPE_DISCRETE; info.m_gravity.set( 0,-9.8f,0); info.m_collisionTolerance = 0.1f; info.setBroadPhaseWorldSize( 150.0f ); info.setupSolverInfo( hkpWorldCinfo::SOLVER_TYPE_4ITERS_MEDIUM ); m_world = new hkpWorld( info );

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.

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.

Havok Dynamics Corpos Rígidos(3/4) … hkArray<hkVector4> dummyPlaneEquations; hkpConvexVerticesShape* pShape = new hkpConvexVerticesShape(stridedVerts, dummyPlaneEquations); hkpRigidBodyCinfo rigidBodyInfo; rigidBodyInfo.m_shape = pShape; hkReal mass = 10.0f; hkpInertiaTensorComputer::setShapeVolumeMassProperties(pShape, mass, rigidBodyInfo); rigidBodyInfo.m_motionType = hkpMotion::MOTION_BOX_INERTIA; rigidBodyInfo.m_qualityType = HK_COLLIDABLE_QUALITY_MOVING; hkpRigidBody* pRigidBody = new hkpRigidBody(rigidBodyInfo);

Havok Dynamics Corpos Rígidos(4/4) Exemplo de aplicação de forças: if (m_brakePressed) { hkVector4 zero; zero.setZero4(); m_body->setLinearVelocity(zero); m_body->setAngularVelocity(zero); setBrakePressed(false); } Limitação de pontos na detecção de colisões

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

Havok Dynamics Restrições(2/2) hkpBallAndSocketConstraintData* bsData = new hkpBallAndSocketConstraintData(); hkpConstraintInstance* bsInstance = new hkpConstraintInstance( bodyA, bodyB, bsData ); m_world->addConstraint( bsInstance ); bsData->removeReference(); bsInstance->removeReference();

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.

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

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

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

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

Dúvidas ????