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

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

1 PHYSX Artur Ribeiro de Aquino Bruno Feitosa Marques João Paulo Fernandes Barbosa Lucas Aranha Barreto Lucas Praciano Marinho Pablo Carvalho Pinheiro.

Apresentações semelhantes


Apresentação em tema: "1 PHYSX Artur Ribeiro de Aquino Bruno Feitosa Marques João Paulo Fernandes Barbosa Lucas Aranha Barreto Lucas Praciano Marinho Pablo Carvalho Pinheiro."— Transcrição da apresentação:

1 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

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

3 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.

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. 4

5 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

6 6 Motivação

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

8 8 Entidades Básicas Scene Actor Shape Joints Material

9 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);

10 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);

11 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();

12 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);

13 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);

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

15 Compilação no Visual Studio 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

16 Compilação no Visual Studio 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 Vá em propriedades do projeto > Linker > Input > Additional Dependencies: - PhysXLoader.lib 5. 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 Vá em propriedades do projeto > General > Character Set: - "Use Multi-Byte Character Set" 18

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

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

21 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);

22 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)

23 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

24 24 Praticando – Exercício 2 1.Crie um novo projeto e o configure como explicado anteriormente 2.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 3.Pode compilar e rodar!

25 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

26 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!

27 27 REFERÊNCIAS Ageia_2008_01_11_release_v0.4.pdf Ageia_2008_01_11_release_v0.4.pdf https://www.gprt.ufpe.br/~grvm/pdfs/Minicursos/ 2007/SVR2007_ApostilaTutorialPhysX.pdf https://www.gprt.ufpe.br/~grvm/pdfs/Minicursos/ 2007/SVR2007_ApostilaTutorialPhysX.pdf


Carregar ppt "1 PHYSX Artur Ribeiro de Aquino Bruno Feitosa Marques João Paulo Fernandes Barbosa Lucas Aranha Barreto Lucas Praciano Marinho Pablo Carvalho Pinheiro."

Apresentações semelhantes


Anúncios Google