1 / 27

PHYSX

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. ROTEIRO. Introdução Motivação Entidades Básicas Scene Actor Shape

justis
Download Presentation

PHYSX

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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ãoexemplos do uso do Physxemalgumasaplicações • http://www.youtube.com/watch?v=UQtjY-Q2BB8 • http://www.youtube.com/watch?v=dZ1PPzCyNcg 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: NxSceneDescsceneDesc; 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 é criadoporumacena. • Pode ser dinâmicoouestático • Exemplo: // Cria um atorestático NxPlaneShapeDescplaneDesc; NxActorDescactorDesc; actorDesc.shapes.pushBack(&planeDesc); NxActor *staticActor = gScene->createActor(actorDesc); 10

  11. Entidades Básicas – Shape • Modelam o objeto • São usadasparadetectar e controlarcolisões • Váriostipos: caixa, cápsula, esfera, dentreoutros • Exemplo: NxBoxShapeDescboxDesc; 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 propriedadesdasuperfície • Pode ser anisotrópicatambém • Exemplo: // Cria um material anisotrópico NxMaterialDesc material; // Atritoanisotró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 19 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

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

  21. Praticando – Exercício 1 21 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. Praticando – Exercício 1 22 • 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. Praticando – Exercício 1 23 • 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. Praticando – Exercício 2 24 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! Deverá aparecer simplesmente uma janela Pode-se passear pela cena usando as setas do teclado e o mouse

  25. Praticando – Exercício 2 25 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. Praticando – Exemplos 26 • Para quem já acabou existem vários exemplos prontos • Os exemplos estão em: Start >> All Programs >> NVIDIA Corporation >> PhysX SDK 2.8.1 >> Samples >> Executables • Sugestões: • SampleBoxes • SampleCloth • Divirtam-se!

  27. REFERÊNCIAS • http://www.nvidia.com/object/nvidia_physx.html • http://en.wikipedia.org/wiki/PhysX • http://www.delta3d.org/filemgmt_data/files/SDD_Ageia_2008_01_11_release_v0.4.pdf • https://www.gprt.ufpe.br/~grvm/pdfs/Minicursos/2007/SVR2007_ApostilaTutorialPhysX.pdf 27

More Related