A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

PHYSX Artur Ribeiro de Aquino Bruno Feitosa Marques

Apresentações semelhantes


Apresentação em tema: "PHYSX Artur Ribeiro de Aquino Bruno Feitosa Marques"— Transcrição da apresentação:

1 PHYSX Artur Ribeiro de Aquino Bruno Feitosa Marques
João Paulo Fernandes Barbosa Lucas Aranha Barreto Lucas Praciano Marinho Pablo Carvalho Pinheiro Rodrigo Emanoel Araújo de Freitas Wagner de Souza Rolim 1

2 ROTEIRO Introdução Motivação Entidades Básicas
Scene Actor Shape Joints Material Compilação no Visual Studio 2008 Praticando Referências 2

3 Introdução O NVIDIA PhysX é um poderoso mecanismo de física, que introduz a física em tempo real nos mais modernos jogos para PC e para console. O software PhysX é amplamente adotado por mais de 150 jogos. Com mais de 10 mil desenvolvedores de todos os tipos, é compatível com Sony Playstation 3, Microsoft Xbox 360, Nintendo Wii e PC. O PhysX é otimizado a fim de acelerar o hardware através de processadores com alto nível de computação paralela. 3

4 Motivação Não é fácil introduzir elementos de física nos jogos. É um ambiente com altíssima atividade computacional, baseado em um conjunto único de algoritmos físicos que exigem volumes imensos de cálculos matemáticos e lógicos simultâneos.

5 Motivação Processamento paralelo de elementos físicos
Introduz maior realismo nas colisões Fogs que interagem com os corpos Interação realista com o ambiente Em suma: Simula a física real no ambiente virtual Pode ser muito proveitoso seu uso em jogos NVIDIA PhysX SDK é de graça 5

6 Motivação 6

7 Motivação - Vídeos Nesses videos estão exemplos do uso do Physx em algumas aplicações 7

8 Entidades Básicas Scene Actor Shape Joints Material 8

9 Entidades Básicas – Scene
Simula o comportamento de objetos de acordo com sua interação (tais como corpos ou forças) com o passar do tempo Pode manipular elementos do ambiente – gravidade Exemplo: NxSceneDesc sceneDesc; sceneDesc.gravity = NxVec3(0.0f, -9.81f, 0.0f); //Seta a gravidade da cena gScene = gPhysicsSDK->createScene(sceneDesc); 9

10 Entidades Básicas – Actor
É o principal objeto de simulação e é criado por uma cena. Pode ser dinâmico ou estático Exemplo: // Cria um ator estático NxPlaneShapeDesc planeDesc; NxActorDesc actorDesc; actorDesc.shapes.pushBack(&planeDesc); NxActor *staticActor = gScene->createActor(actorDesc); 10

11 Entidades Básicas – Shape
Modelam o objeto São usadas para detectar e controlar colisões Vários tipos: caixa, cápsula, esfera, dentre outros Exemplo: NxBoxShapeDesc boxDesc; boxDesc.dimensions.set(0.5f,0.5f,0.5f); // Cubo de 1m. NxBoxShape *boxShape=actor->createShape(boxDesc)->isBox(); 11

12 Entidades Básicas – Joints
São conexões entre corpos rígidos (atores) Define como se dá a movimentação dos atores sobre o ponto da junta Exemplo: NxVec3 globalAnchor = NxVec3(0,5,0); NxVec3 globalAxis = NxVec3(0,1,0); NxSphericalJointDesc sphericalDesc; sphericalDesc.actor[0] = a0; sphericalDesc.actor[1] = a1; sphericalDesc.setGlobalAnchor(globalAnchor); sphericalDesc.setGlobalAxis(globalAxis); sphericalDesc.flags |= NX_SJF_SWING_LIMIT_ENABLED; sphericalDesc.swingLimit.value = 0.3*NxPi; sphericalDesc.flags |= NX_SJF_TWIST_LIMIT_ENABLED; sphericalDesc.twistLimit.low.value = -0.05*NxPi; sphericalDesc.twistLimit.high.value = 0.05*NxPi; NxSphericalJoint *j = (NxSphericalJoint*)gScene->createJoint(sphericalDesc); 12

13 Entidades Básicas – Material
Descreve as propriedades da superfície Pode ser anisotrópica também Exemplo: // Cria um material anisotrópico NxMaterialDesc material; // Atrito anisotrópico material.restitution = 0.0f; material.staticFriction = 0.1f; material.dynamicFriction = 0.1f; material.dynamicFrictionV = 0.8f; material.staticFrictionV = 1.0f; material.dirOfAnisotropy.set(0,0,1); material.flags = NX_MF_ANISOTROPIC; NxMaterial *anisoMaterial = gScene->createMaterial(material); 13

14 Compilação no Visual Studio 2008
Criar um Win32 Console Application (Empty Project) Vá em propriedades do projeto > C/C++ > General > Additional Include Directories: 14

15 Compilação no Visual Studio 2008
- C:\Program Files\NVIDIA Corporation\NVIDIA PhysX SDK\v2.8.1\SDKs\Cooking\include - C:\Program Files\NVIDIA Corporation\NVIDIA PhysX SDK\v2.8.1\SDKs\Foundation\include - C:\Program Files\NVIDIA Corporation\NVIDIA PhysX SDK\v2.8.1\SDKs\Physics\include - C:\Program Files\NVIDIA Corporation\NVIDIA PhysX SDK\v2.8.1\SDKs\PhysXLoader\include - C:\Program Files\NVIDIA Corporation\NVIDIA PhysX SDK\v2.8.1\Graphics\include\win32 - C:\Program Files\NVIDIA Corporation\NVIDIA PhysX SDK\v2.8.1\Samples\SampleCommonCode\src 15

16 Compilação no Visual Studio 2008
Vá em propriedades do projeto > Linker > General > Additional Library Directories: - C:\Program Files\NVIDIA Corporation\NVIDIA PhysX SDK\v2.8.1\SDKs\lib\Win32 - C:\Program Files\NVIDIA Corporation\NVIDIA PhysX SDK\v2.8.1\Graphics\lib\win32\glut 16

17 Compilação no Visual Studio 2008
Vá em propriedades do projeto > Linker > Input > Additional Dependencies: - PhysXLoader.lib Copie o glut32.dll (de C:\Program Files\NVIDIA Corporation\NVIDIA PhysX SDK\v2.8.1\Bin\win32) para a pasta do projeto. 17

18 Compilação no Visual Studio 2008
Vá em propriedades do projeto > General > Character Set: - "Use Multi-Byte Character Set" 18

19 Praticando – Exercício 1
Crie um novo projeto e o configure como explicado anteriormente Copie os arquivos DrawObjects.cpp, GLFontRenderer.cpp, PerfRenderer.cpp, Timing.cpp e Ex1.cpp Pode compilar e rodar! Deverá aparecer simplesmente uma janela Pode-se passear pela cena usando as setas do teclado e o mouse 19

20 Praticando – Exercício 1
Criando um plano para servir de chão: NxPlaneShapeDesc planeDesc; NxActorDesc actorDesc; actorDesc.shapes.pushBack(&planeDesc); gScene->createActor(actorDesc); 20

21 Praticando – Exercício 1
Criando um cubo: // Create body NxBodyDesc bodyDesc; bodyDesc.angularDamping = 0.5f; NxBoxShapeDesc boxDesc; boxDesc.dimensions = NxVec3(size, size, size); // size: definido no método NxActorDesc actorDesc; actorDesc.shapes.pushBack(&boxDesc); actorDesc.body = &bodyDesc; actorDesc.density = 0.5f; actorDesc.globalPose.t = pos; // pos: definido no método cube = gScene->createActor(actorDesc); 21

22 Praticando – Exercício 1
Pode criar outros tipos de figuras O código já se encontra preparado para se fazer uma esfera e uma cápsula A criação dos objetos é análoga Dica, assim como uma caixa tem 3 dimensões Esfera possui um raio (radius) Cápsula possui um raio e uma altura (radius e height) 22

23 Praticando – Exercício 1
O comando para adicionar uma força é: addForce(NxVec3 (x, y, z)) addTorque(NxVec3 (x, y, z)) A rotina do teclado é feita em no método: KeyboardCallback(...) Você pode adicionar uma força à um ator? ator-> addForce(NxVec3 (x, y, z)) Se a nada acontecer cheque o peso (densidade), atritos (estático e dinâmico) e a intensidade da força aplicada 23

24 Praticando – Exercício 2
Crie um novo projeto e o configure como explicado anteriormente Copie os arquivos SampleD6Joint.h, cooking.cpp, Actors.cpp, DebugRenderer.cpp, Timing.cpp, DrawObjects.cpp, GLFontRenderer.cpp, Joints.cpp, Stream.cpp, PerfRenderer.cpp, e Ex2.cpp Pode compilar e rodar! 24

25 Praticando – Exercício 2
Neste exercício vocês podem ver vários tipos de junções diferentes Os comandos aparecem no prompt de comando Lembrem-se de apertar ‘B’ para visualizar o tipo de junta selecionada 25

26 Praticando – Exemplos Para quem já acabou existem vários exemplos prontos Os exemplos estão em: Start >> All Programs >> NVIDIA Corporation >> PhysX SDK >> Samples >> Executables Sugestões: SampleBoxes SampleCloth Divirtam-se! 26

27 REFERÊNCIAS http://www.nvidia.com/object/nvidia_physx.html
Ageia_2008_01_11_release_v0.4.pdf 2007/SVR2007_ApostilaTutorialPhysX.pdf 27


Carregar ppt "PHYSX Artur Ribeiro de Aquino Bruno Feitosa Marques"

Apresentações semelhantes


Anúncios Google