290 likes | 446 Views
Prof.ª Judith Kelner Alunos:. Davi Barbosa Leonardo Batista Marcelo Almeida Wagner Barros. [dbb, lbs3, maa, wbas]@cin.ufpe.br. Sumário. Introdução Características Hardware Software Exemplos Referências. Introdução. O que é PhysX ?
E N D
Prof.ª Judith Kelner Alunos: Davi Barbosa Leonardo Batista Marcelo Almeida Wagner Barros [dbb, lbs3, maa, wbas]@cin.ufpe.br
Sumário • Introdução • Características • Hardware • Software • Exemplos • Referências
Introdução • O que é PhysX ? PhysX é uma unidade de processamento física, primeiramente projetada pela .
Introdução • Proprietário
Introdução • Leis de Newton • Primeira Lei de Newton (inércia); • Segunda Lei de Newton (relação força-mov.); • Terceira Lei de Newton (ação e reação).
Introdução • Leis de Newton • Primeira Lei de Newton (inércia)
Introdução • Leis de Newton • Segunda Lei de Newton (relação força-mov.)
Introdução • Leis de Newton • Terceira Lei de Newton (ação e reação)
Introdução • SDK disponível e livre de cobrança.
Hardware • AGEIA PhysX • Primeiro processador dedicado apenas para à aceleração de hardware para jogos de PC • Placa de extensão de acelerador • Produção de movimentos e iteração dinâmicos
Hardware • Exemplo de um processador produzido pela AGEIA • PhysX 100M
Hardware • A importância de Física para os Jogos • Efeitos de Animação pré-fabricados • Evolução dos Jogos • Melhor Interação e Reação com o Ambiente
Hardware • Como os Jogos ficam otimizados com o PhysX ? • Criação de recursos físicos • Criação de recursos para aceleração de hardware • Estabilidade • Funcionalidade • Desempenho
Hardware • A NVIDIA oferece aos desenvolvedores de jogos o PhysXSDK(Software Development Kit) • É aceito por quase todas as ferramentas de desenvolvimento • Oferece suporte direto em várias plataformas • Microsoft • Xbox 360 • PlayStation 3
Hardware • Processador • GPUs (Graphics Processing Unit) da Nvidia • Basicamente, é um processador produzido especificamente para realizar cálculos e tarefas relacionadas ao Processamento de Gráficos em tempo real.
Hardware • Por que a GPU é boa para processamento da física ? • O mecanismo PhysX multiencadeado foi projetado especificamente para aceleração de hardware em ambientes de intensa computação paralela.
Hardware • Fabricantes de GPU • INTEL • NVIDIA • ATI
Hardware • Exemplo de um processador, desenvolvido pela NVIDIA. • GEFORCE 6600 GT
Hardware • Contribuição do PhysX para GPU ? • As GPUs da NVIDIA baseadas na CUDA, estão sendo habilitadas com a tecnologia NVIDIA PhysX. • Combinação entre elementos gráficos e físicos • Maior aproveitamento para desenvolvedores • Melhor Interação entre o usuário e o ambiente virtual
Hardware • O que é CUDA ? • É uma arquitetura de computação paralela projetada para tirar melhor aproveitamento dos mecanismos de computação paralela das unidades de processamento gráfico (GPUs) NVIDIA
Software • Algoritmo de colisão, posicionamento espacial, etc. • PhysX SDK implementado em c++ • Organizado como uma hierarquia de classes • Cada classe contendo alguma funcionalidade acessível pelo usuário implementa uma interface • Nomes de interface sempre começam com “Nx”
WORLD • Classe usada para instanciar objetos e setar parâmetros globais que afetam todas as cenas • Método NxCreatePhysicsSDK() é usado para obter uma instância desta classe • Exemplo: NxPhysicsSDK *myworld = NxCreatePhysicsSDK(NX_PHYSICS_SDK_VERSION);
SCENE • Conjunto de corpos, restrições e efeitos • Simula comportamento de objetos de acordo com sua interação, com as interações só ocorrendo entre objetos de uma mesma cena • Pode manipular elementos de ambiente, como por exemplo a gravidade • Exemplo: NxSceneDescsceneDesc; • sceneDesc.gravity = NxVec3(0.0f, -9.81f, 0.0f); //Define a gravidade da cena • gScene = gPhysicsSDK->createScene(sceneDesc);
ACTOR • Principal objeto de simulação, sendo criado por uma cena e pertencente à mesma • Pode ser estático ou dinâmico • No caso de ator estático, definem-se como elementos de paisagens, não possuem atributos físicos e são utilizados habitualmente na detecção de colisões • Atores dinâmicos são corpos e possuem um conjunto de propriedades físicas • Exemplo abaixo cria um ator estático NxPlaneShapeDescplaneDesc; NxActorDescactorDesc; actorDesc.shapes.pushBack(&planeDesc); NxActor *staticActor = gScene->createActor(actorDesc);
SHAPE • Modelam o objeto • Utilizados para o controle e detecção de colisões • Podem assumir vários tipos, tais como caixa, esfera, cápsula, cubo, entre outros • No exemplo abaixo, modelamos um cubo de 1m de aresta NxBoxShapeDescboxDesc; boxDesc.dimensions.set(0.5f,0.5f,0.5f); NxBoxShape *boxShape=actor->createShape(boxDesc)->isBox();
JOINTS • São conexões entre corpos rígidos, ou seja, entre atores • Necessita sempre de pelo menos 2 atores • Possuem pontos em comum que tanto podem ser de rotação como de translação • Classificados em diversas categorias, tais como, esférica, prismática, ponto no plano, ponto na reta, etc • Define como se dá a movimentação dos atores sobre o ponto de junta • Exemplo • NxVec3 globalAnchor = NxVec3(0,5,0); • NxVec3 globalAxis = NxVec3(0,1,0); • NxSphericalJointDescsphericalDesc; • 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);
MATERIAL • Descreve as propriedades da superfície • Pode ser anisotrópica, ou seja, propriedade física pode variar com a direção • Exemplo abaixo cria um material anisotrópico, definindo também o seu atrito anisotrópico: NxMaterialDesc material; 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);
Resultados • lista de jogos : http://nzone.com/object/nzone_physxgames_home.html
Referências • http://pt.wikipedia.org/wiki/PhysX • http://www.nvidia.com/object/nvidia_physx.html • http://www.infomaniaco.com.br/games/physx-o-que-e-e-o-que-ele-muda-nos-jogos/ • http://www.nvmania.com.br/forum/ultimas-noticias/513-nvidia-compra-ageia-e-seu-physx.html • http://www.forumpcs.com.br/noticia.php?b=217951 • http://www.nvidia.com.br/object/physx_accelerator_br.html