Motivação
-
Upload
illiana-mclaughlin -
Category
Documents
-
view
21 -
download
0
description
Transcript of Motivação
![Page 1: Motivação](https://reader036.fdocumentos.com/reader036/viewer/2022062517/568134ca550346895d9bf47d/html5/thumbnails/1.jpg)
![Page 2: Motivação](https://reader036.fdocumentos.com/reader036/viewer/2022062517/568134ca550346895d9bf47d/html5/thumbnails/2.jpg)
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.
![Page 3: Motivação](https://reader036.fdocumentos.com/reader036/viewer/2022062517/568134ca550346895d9bf47d/html5/thumbnails/3.jpg)
Objetivo
Introduzir a ferramenta de simulação PhysX, como meio para aumentar a imersão do usuário enquanto utiliza jogos de computadores.
![Page 4: Motivação](https://reader036.fdocumentos.com/reader036/viewer/2022062517/568134ca550346895d9bf47d/html5/thumbnails/4.jpg)
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.
![Page 5: Motivação](https://reader036.fdocumentos.com/reader036/viewer/2022062517/568134ca550346895d9bf47d/html5/thumbnails/5.jpg)
Sem PhysX Engine
![Page 6: Motivação](https://reader036.fdocumentos.com/reader036/viewer/2022062517/568134ca550346895d9bf47d/html5/thumbnails/6.jpg)
Com PhysX Engine
![Page 7: Motivação](https://reader036.fdocumentos.com/reader036/viewer/2022062517/568134ca550346895d9bf47d/html5/thumbnails/7.jpg)
ImersãoCell Factor: Revolution
![Page 8: Motivação](https://reader036.fdocumentos.com/reader036/viewer/2022062517/568134ca550346895d9bf47d/html5/thumbnails/8.jpg)
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.
![Page 9: Motivação](https://reader036.fdocumentos.com/reader036/viewer/2022062517/568134ca550346895d9bf47d/html5/thumbnails/9.jpg)
Efeitos
Corpos rígidos Corpos moles Fluídos Tecidos Explosões Fumaça e neblina densas Colisões
![Page 10: Motivação](https://reader036.fdocumentos.com/reader036/viewer/2022062517/568134ca550346895d9bf47d/html5/thumbnails/10.jpg)
Advanced Gaming Physics
Fidelidade
Escala
Interação
Sofisticação
![Page 11: Motivação](https://reader036.fdocumentos.com/reader036/viewer/2022062517/568134ca550346895d9bf47d/html5/thumbnails/11.jpg)
![Page 12: Motivação](https://reader036.fdocumentos.com/reader036/viewer/2022062517/568134ca550346895d9bf47d/html5/thumbnails/12.jpg)
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.
![Page 13: Motivação](https://reader036.fdocumentos.com/reader036/viewer/2022062517/568134ca550346895d9bf47d/html5/thumbnails/13.jpg)
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;
![Page 14: Motivação](https://reader036.fdocumentos.com/reader036/viewer/2022062517/568134ca550346895d9bf47d/html5/thumbnails/14.jpg)
AGEIA PPU
![Page 15: Motivação](https://reader036.fdocumentos.com/reader036/viewer/2022062517/568134ca550346895d9bf47d/html5/thumbnails/15.jpg)
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.
![Page 16: Motivação](https://reader036.fdocumentos.com/reader036/viewer/2022062517/568134ca550346895d9bf47d/html5/thumbnails/16.jpg)
Arquitetura
![Page 17: Motivação](https://reader036.fdocumentos.com/reader036/viewer/2022062517/568134ca550346895d9bf47d/html5/thumbnails/17.jpg)
Performance com a PPU
![Page 18: Motivação](https://reader036.fdocumentos.com/reader036/viewer/2022062517/568134ca550346895d9bf47d/html5/thumbnails/18.jpg)
Aplicações
Jogos, jogos e mais jogos!
![Page 19: Motivação](https://reader036.fdocumentos.com/reader036/viewer/2022062517/568134ca550346895d9bf47d/html5/thumbnails/19.jpg)
Cell Factor: Revolution
Cell Factor: Revolution
![Page 20: Motivação](https://reader036.fdocumentos.com/reader036/viewer/2022062517/568134ca550346895d9bf47d/html5/thumbnails/20.jpg)
Monster Truck Maniax
![Page 21: Motivação](https://reader036.fdocumentos.com/reader036/viewer/2022062517/568134ca550346895d9bf47d/html5/thumbnails/21.jpg)
Gothic 3
![Page 22: Motivação](https://reader036.fdocumentos.com/reader036/viewer/2022062517/568134ca550346895d9bf47d/html5/thumbnails/22.jpg)
Demonstração
//executar demo da AGEIA
![Page 23: Motivação](https://reader036.fdocumentos.com/reader036/viewer/2022062517/568134ca550346895d9bf47d/html5/thumbnails/23.jpg)
Questão Teórica
Baseando-se nos conceitos de multimídia, qual a principal vantagem da utilização da ferramenta PhysX?
![Page 24: Motivação](https://reader036.fdocumentos.com/reader036/viewer/2022062517/568134ca550346895d9bf47d/html5/thumbnails/24.jpg)
Inicializando o PhysXvoid 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)
}
![Page 25: Motivação](https://reader036.fdocumentos.com/reader036/viewer/2022062517/568134ca550346895d9bf47d/html5/thumbnails/25.jpg)
Loop do PhysXvoid 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();
}
![Page 26: Motivação](https://reader036.fdocumentos.com/reader036/viewer/2022062517/568134ca550346895d9bf47d/html5/thumbnails/26.jpg)
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);
}
![Page 27: Motivação](https://reader036.fdocumentos.com/reader036/viewer/2022062517/568134ca550346895d9bf47d/html5/thumbnails/27.jpg)
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ápsulacapsuleDesc.height = height;capsuleDesc.radius = radius;// Setando a posição local da cápsula para que ela inicie no planocapsuleDesc.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 atoractorDesc.globalPose.t = pos;return gScene->createActor(actorDesc);
}
![Page 28: Motivação](https://reader036.fdocumentos.com/reader036/viewer/2022062517/568134ca550346895d9bf47d/html5/thumbnails/28.jpg)
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
![Page 29: Motivação](https://reader036.fdocumentos.com/reader036/viewer/2022062517/568134ca550346895d9bf47d/html5/thumbnails/29.jpg)
Dúvidas?