Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouRafael Barros de Sintra Alterado mais de 8 anos atrás
2
Motivação Até agora, apenas limitados programas de física tem sido integrados nos jogos. Isto significa que computação física vem sendo tratada por CPU de propósito geral, o que já é bastante limitado, pois a demanda de jogos avançados incluem Lógica e Inteligência Artificial (IA). Como resultado, a física nos jogos está limitada a poucos objetos numa cena, efeitos repetidos ou cenas que apenas iludem o usuário com uma imitação da física real.
3
Objetivo Introduzir a ferramenta de simulação PhysX, como meio para aumentar a imersão do usuário enquanto utiliza jogos de computadores.
4
Física aplicada à multimídia Não é apenas como os objetos e cenas se parecem, mas como eles se comportam. Na grande maioria dos jogos atuais, os objetos simplesmente não parecem agir do jeito que você gostaria ou espera. A maior parte da ação é limitada a animações pré- produzidas. Poderosas armas deixam pouco mais do que marcas nas paredes mais finas e todo oponente que você elimina parece cair de um jeito estranhamente familiar.
5
Sem PhysX Engine
6
Com PhysX Engine
7
Imersão Cell Factor: Revolution
8
O que é o PhysX? PhysX é uma ferramenta que auxilia aplicações multimídias. Sua função é simular o modelo da física de Newton. Utiliza variáveis tais como a massa, velocidade, atrito e resistência do ar. Simula e prevê efeitos sob diferentes condições que se aproximam da vida real.
9
Efeitos Corpos rígidos Corpos moles Fluídos Tecidos Explosões Fumaça e neblina densas Colisões
10
Advanced Gaming Physics Fidelidade Escala Interação Sofisticação
12
Formas de funcionamento A PhysX Engine pode funcionar de duas maneiras: Através do SDK do PhysX, apenas utilizando o próprio processador do computador ° Todos os cálculos feitos na CPU do computador. Obs. Não suporta a simulação de efeitos de fluídos! Através do SDK do PhysX, utilizando a PPU ° Todos os cálculos feitos na PPU. Obs. Suporta a simulação de todos os tipos de efeitos.
13
Physics Processing Unit (PPU) Empregar os conceitos da física em um jogo exige uma quantidade tremenda de cálculos matemáticos e lógicos, com uma utilização massiva de memória. Isto requer a utilização de um processador altamente especializado para fornecer um rico ambiente imersivo com características como: Explosões que causam poeira e efeitos colaterais; Personagens com uma geometria mais complexa, que permitem uma interação e movimentação mais realista; As armas apresentam novos efeitos não previsíveis; Densa fumaça e neblina que circundam os objetos em movimento;
14
AGEIA PPU
15
Como funciona? A ferramenta PhysX não é um software de renderização. Não trata da simulação de sons. Necessita de outra ferramenta para construir a cena. Por exemplo: OpenGL, OGRE.
16
Arquitetura
17
Performance com a PPU
18
Aplicações Jogos, jogos e mais jogos!
19
Cell Factor: Revolution
20
Monster Truck Maniax
21
Gothic 3
22
Demonstração //executar demo da AGEIA
23
Questão Teórica Baseando-se nos conceitos de multimídia, qual a principal vantagem da utilização da ferramenta PhysX?
24
Inicializando o PhysX void InitNx() { // Inicializando o SDK gPhysicsSDK = NxCreatePhysicsSDK(NX_PHYSICS_SDK_VERSION); if (!gPhysicsSDK) return; // Criando a cena NxSceneDesc sceneDesc; sceneDesc.simType = NX_SIMULATION_SW; sceneDesc.gravity = NxVec3(0,-9.81,0); gScene = gPhysicsSDK->createScene(sceneDesc); // Criando o material padrão NxMaterial* defaultMaterial = gScene->getMaterialFromIndex(0); defaultMaterial->setRestitution(0.5); defaultMaterial->setStaticFriction(0.5); defaultMaterial->setDynamicFriction(0.5); // Criando os objetos na cena groundPlane = CreateGroundPlane(); actor = CreateBox(); // criar uma esfera iniciando na posicao (0,5,0) }
25
Loop do PhysX void loopPhysics(){ // recebe a variação do tempo em relação à última chamada da função float gDeltaTime = UpdateTime(); // chama a simulação do PhysX passando como parâmetro a variação //do tempo gScene->simulate(gDeltaTime); gScene->flushStream(); }
26
Criando uma Esfera NxActor* CreateSphere(const NxVec3& pos){ NxActorDesc actorDesc; NxBodyDesc bodyDesc; // O ator tem somente um shape(forma), a esfera NxSphereShapeDesc sphereDesc; // setando o raio da esfera sphereDesc.radius = 1; actorDesc.shapes.pushBack(&sphereDesc); actorDesc.body = &bodyDesc; //configurando a densidade do corpo do ator actorDesc.density = 5; //setando a posição global do ator actorDesc.globalPose.t = pos; return gScene->createActor(actorDesc); }
27
Criando uma Cápsula NxActor* CreateCapsule(const NxVec3& pos, const NxReal height, const NxReal radius, const NxReal density) { NxActorDesc actorDesc; NxBodyDesc bodyDesc; // O ator tem somente um shape(forma), a cápsula NxCapsuleShapeDesc capsuleDesc; // Setando a altura e o raio da cápsula capsuleDesc.height = height; capsuleDesc.radius = radius; // Setando a posição local da cápsula para que ela inicie no plano capsuleDesc.localPose.t = NxVec3(0,radius+0.5*height,0); actorDesc.shapes.pushBack(&capsuleDesc); actorDesc.body = &bodyDesc; actorDesc.density = density; // Setando a posição global do ator actorDesc.globalPose.t = pos; return gScene->createActor(actorDesc); }
28
Questões Práticas Exercício 1: Modifique Exercicio1.cpp, de forma que ao invés de se ter uma cena com um cubo, tenha uma cena com uma esfera. Utilize a função CreateSphere demonstranda anteriormente Exercício 2: Modifique Exercicio2.cpp de forma que se adicione uma esfera e uma cápsula à cena. A esfera deve ser inicializada na posição (- 5,0,5), raio 1 e densidade 10, enquanto que a cápsula estará na posição (0,0,0), altura 2, raio 0.5 e densidade 10
29
Dúvidas?
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.