Download ppt - Motivação

Transcript
Page 1: Motivação
Page 2: Motivação

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

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

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

Sem PhysX Engine

Page 6: Motivação

Com PhysX Engine

Page 7: Motivação

ImersãoCell Factor: Revolution

Page 8: Motivação

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

Efeitos

Corpos rígidos Corpos moles Fluídos Tecidos Explosões Fumaça e neblina densas Colisões

Page 10: Motivação

Advanced Gaming Physics

Fidelidade

Escala

Interação

Sofisticação

Page 11: Motivação
Page 12: Motivação

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

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

AGEIA PPU

Page 15: Motivação

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

Arquitetura

Page 17: Motivação

Performance com a PPU

Page 18: Motivação

Aplicações

Jogos, jogos e mais jogos!

Page 19: Motivação

Cell Factor: Revolution

Cell Factor: Revolution

Page 20: Motivação

Monster Truck Maniax

Page 21: Motivação

Gothic 3

Page 22: Motivação

Demonstração

//executar demo da AGEIA

Page 23: Motivação

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

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

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

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

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

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

Dúvidas?