Light Green
Light Blue
Gris Souris
Trucs et astuces pour le moteur physique Bullet
merciki?

Cette page a été traduite de l'anglais. L'original se trouve ici.

Étudiez les démos de Blender 2.42

Télécharger les démos du moteur physique de Blender 2.42 (3Mo).

Parlez sur les forums de BlenderArtist / Elisiun ou du Zoo

Le forum « moteur de jeu » sur BlenderArtists.

NDT : pour des discussions en français, il y a le forum du Zoo Blender.

Lisez la liste des fonctionnalités de Bullet

La liste des fonctionnalités de Bullet (en anglais).

Évitez les changements d'échelle

Ne changez pas la taille de vos objets, ou appliquez la transformation avec Ctrl-A. Si vous utilisez des « Sphere-bounds » [1] assurez-vous que le rayon (« Radius ») correspond à l'objet (le rayon est représenté par la ligne pointillée au bout de la flêche noire).

Le problème des rayons

NDT : L'image est un bon exemple de ce qu'il ne faut pas faire ! Le rayon devrait être à peu près deux fois plus grand.

Donnez des masses proches aux objets dynamiques

Si un objet de 100 kg est posé sur un objet de 0,1 kg, le simulateur aura des problèmes. Évitez les grands écarts en donnant des masses proches à vos objets (de l'ordre de quelques kilos).

Donnez le bon type de limites (« bounds »)

Pour un cylindre choisissez « Cylinder », même pour un objet statique. De même, prenez « Box » pour un cube, etc. Le type « Convex Hull » convient pour approcher des formes plus complexes.

Choix du type de limites

N'utilisez pas trop de sommets avec le type « Convex Hull »

Entre quatre et 32 sommets (« Vertices ») devraient suffire.

Laissez le centre de l'objet au milieu de la forme

Le centre de l'objet (là où sont les axes, au centre du cercle en pointillés) doit être bien à l'intérieur de la forme, et non pas au milieu ni en dehors !

L'objet du haut est mauvais : le centre n'est pas au milieu de la forme. L'objet du bas est correct.

NDT : sur cette image, « l'objet » est représenté par deux traits horizontaux et « les axes » sont de la même couleur que l'objet et désignés par une flêche noire. Le repère coloré en haut à droite n'a rien à voir avec le sujet.

Réglez la pesanteur sur 10

Le simulateur fonctionne mieux avec des faibles valeurs de pesanteur (« gravity »), donc si possible n'utilisez pas de grandes valeurs.

Évitez les objets dynamiques trop petits (moins de 0,2 unités)

Ne faites pas d'objets dynamiques plus petits que 0,2 unités. Avec les valeurs par défauts, une unité correspond à un mètre, donc chaque côté de l'objet devrait être plus grand (NDT : plus grand que quoi ?)

Évitez les grands objets

N'utilisez pas de grands objets, ni de grands triangles.

Évitez les triangles dégénérés

Les triangles qui ont à la fois des côtés très longs et un côté très court peuvent poser problème.

Après quelques secondes, l'objet ne bouge plus. Il n'interagit plus avec les plate-formes mobiles, etc.

Vous pouvez activer un objet manuellement grâce à la commande Python object.restoreDynamics.

Ou bien utilisez le bouton « no sleeping ». Mais n'utilisez pas trop ce bouton, seulement pour le personnage principal, la voiture, etc.

Comment configurer un véhicule

Utilisez le module Python PhysicsConstraints pour créer une contrainte spéciale sur un objet rigide. Cette contrainte vous permettra d'ajouter des roues, de régler l'adhérence des pneus, de régler la direction, etc.

Étudiez la démo vehicle3_Steering fix.blend dans le pack de démos.

Étudiez le code source du script Python pour véhicules. Vous pouvez aussi:

Ajouter des objets dynamiques comme enfants ne fonctionne pas

Les objets dynamiques ne peuvent pas avoir de parent. Si vous avez besoin d'un ensemble rigide d'objets, regardez la démo addObject2.blend : elle utilise instantAddObject sur le AddObjectActuator.

Si vous avez besoin d'une configuration complexe telle qu'un mannequin ou un véhicule, vous ne pourrez pas le créer avec un AddObjectActuator. Pour cela, utilisez le Python ou attendez qu'une interface utilisateur permettant de gérer des contraintes soit ajoutée à Blender.

Il y a un espace vide entre le sol et mon objet

À part les boîtes et les sphères, il y a effectivement une marge (0,04 par défaut) entre les objets. Cette marge permet à la simulation de s'exécuter de manière plus fluide et plus stable.

Il est possible de réduire cette marge avec Python, mais c'est déconseillé :

controller = GameLogic.getCurrentController()
owner = controller.getOwner()
owner.setCollisionMargin (0.01)

Éventuellement, vous pouvez aussi essayer d'utiliser une marge de 0 pour les objets immobiles et de laisser la valeur par défaut pour les objets dynamiques.

Je veux une simulation de meilleure qualité pour l'enregistrer dans une IPO en vue d'une animation

Si vous voulez simplement créer une IPO pour une animation et que vous n'avez pas besoin que la simulation se déroule en temps réel, vous pouvez augmenter le nombre de pas de simulation pour améliorer la qualité du résultat :

import PhysicsConstraints
PhysicsConstraints.setNumTimeSubSteps (2)

La valeur par défaut est 1. Des valeurs de 2 ou plus rendent la simulation plus précise.

Remerciements

Merci à JMS, sylm, Myvain et à tous les lecteurs du Zoo Blender pour leur aide et leurs remarques sur cette traduction.


[1] NDT: « Tests de limites sphérique », c'est-à-dire que le moteur remplace l'objet par une sphère pour les tests de collision.


 Écrivez-moi

Compteur de visites : counter

HTML 4.01 Transitional validé CSS validé
Dernière mise à jour le samedi 25 avril 2009 à 9 h 42