Physique
Jeudi, 02 Juillet 2009 15:10

PhysX

Un moteur physique permet de simuler les réactions entre les objets dans un monde virtuel (collisions, frictions, gravité, etc.). Il est indispensable à la création d'un jeu actuel. Pourquoi PhysX ? La principale raison de notre choix vient du fait que notre parcours proposait des cours sur ce moteur, mais c'est aussi pour sa documentation fournie et ses nombreux exemples.

Nous allons voir comment s'articule la création d'objets physiques, les choix que nous avons fait et les problèmes que nous avons rencontrés.

A la base de tout objet physique simple, il y a une "Shape". C'est un objet 3D simple (box, sphere, capsule etc) qui sera l'enveloppe physique de l'objet visuel, Cette shape est contenue dans un acteur qui regroupe une ou plusieur shapes selon la complexité de l'objet, C'est sur lui qu'interviendront les transformations et c'est lui qui nous les fournira par la suite.

Ces shapes ont plusieurs paramètres permettant d'adapter le comportement des objets à ce que l'on attend. Notamment leur taille, leur poids, leur rugosité, leur élasticité.

Plus important encore, ils peuvent être dynamiques et dépendre de la gravité et des collisions ou être statique, ce qui le rendra immobile quoi qu'il arrive. Ces derniers servent à créer le décor, le sol, etc.

Les triggers sont des objets à part dans l'univers physique. Leur but est de signaler quand quelqu'un les touches, reste dedans ou en sort. Ils sont utilisés pour lancer une action scripté, rajouté des bonus etc. Ils suffit, pour les créer, de ne pas fournir de body à l'acteur et de lui donner un flag spécifique. Les collisions sont ensuite récupéré dans une callback.

Les controllers sont une autre notion que nous avons abordée. Ils ont une autre utilité que les acteurs, celle de se déplacer uniquement par translation et d'analyser celle ci avant de la faire, c'est à dire que si elle implique d'entrer dans un mur, elle s'arrêtera avant. Elle est particulièrement utile pour controller une entité via des touches.

Les plus important problèmes que nous avons rencontrés furent la notion de pivot terriblement génante entre la physique et le visuel, Le cooking (qui permet de faire en sorte que la physique s'applique directement au mesh) et l'absence de conception sur la partie physique qui nous a souvent obligé à la revoir en cours de route.