Cette page a été traduite de l'anglais. L'original se trouve ici.
Télécharger les démos du moteur physique de Blender 2.42 (3Mo).
Le forum « moteur de jeu » sur BlenderArtists.
NDT : pour des discussions en français, il y a le forum du Zoo Blender.
La liste des fonctionnalités de Bullet (en anglais).
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).
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.
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).
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.
Entre quatre et 32 sommets (« Vertices ») devraient suffire.
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.
Le simulateur fonctionne mieux avec des faibles valeurs de pesanteur (« gravity »), donc si possible n'utilisez pas de grandes valeurs.
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 ?)
N'utilisez pas de grands objets, ni de grands triangles.
Les triangles qui ont à la fois des côtés très longs et un côté très court peuvent poser problème.
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.
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:
PhysicsConstraints.setNumTimeSubSteps(2)
;
PhysicsConstraints.setDebugMode(1)
;
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.
À 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.
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.
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.
Compteur de visites :