Top Banner
29

Motivação

Jan 02, 2016

Download

Documents

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). - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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?