BulletSim/fr
From OpenSimulator
Contents |
BulletSim
BulletSim est un module pour OpenSimulator qui crée la physique du monde virtuel en utilisant le Moteur physique Bullet. Ce module fournit une physique de qualité ainsi qu'une performance physique des véhicules compatible avec Second Life.
Information sur le projet
BulletSim/Functionality dresse la liste des opérations physiques possibles, de leur état de mise en œuvre avec une note relative à leur utilisation. Ceci est particulièrement utile pour les opérations sur les véhicules.
Construction
Architecture de BulletSim
BSScene
Éléments sur le simulateur de pas (un système qui gère les étapes de la simulation physique). Événements de pas (Pre-Step-Event, Post-Step-Event).
Exigence pour contrôler les modifications du moteur physique avec un Taint-System (normale Taints, post-taints).
Système de journalisation détaillé.
Système du paramètres.
BSPhysObject
Classes enfants de BSPrim et BSCharacter.
Terrain
Contraintes
Implémentation de Bullet
BulletSim est une enveloppe pour le moteur physique Bullet.L'interface du monde virtuel adaptant BulletSim au moteur physique est décrite par la classe abstraite BSAPITemplate. Il existe deux instances de cette classe,BSAPIXNA
et BSAPIUnman
BSAPIUnman
contient la connexion à la DLL/SO non gérée qui est la version C++ du moteur physique Bullet. Les sources et les instructions de construction sont disponibles sur git://opensimulator.org/git/opensim-libs/trunk/unmanaged/BulletSim
.
BSAPIXNA
est la connexion à une version C# de Bullet dont les sources sont hébergées sur https://code.google.com/p/bullet-xna/
.
La sélection du moteur physique se fait au moment du démarrage de la région. Elle est spécifiée pour chaque simulateur avec les paramètres INI suivants :
[Startup] physics = BulletSim [BulletSim] BulletEngine = BulletUnmanaged ; Par défaut ; BulletEngine = BulletXNA ; décommenter cette ligne pour la version C# de Bullet
Interface gérée/non gérée
Liens
Architecture des Acteurs et leurs Rôles
Chaque objet physique BulletSim peut être associé à un nombre quelconque d'« acteurs ». Les acteurs s'enregistrent pour les événements de simulation (généralement appelés avant chaque étape de la simulation) et modifient les paramètres physiques de l'objet. Les acteurs actuellement implémentés sont les suivants :
- BSActorAvatarMove : contrôle les mouvements et les marches des avatars ;
- BSActorHover : implémente le survol vertical des objets et des avatars ;
- BSActorLockAxis : applique une contrainte aux objets physiques pour verrouiller un ou plusieurs mouvements angulaires ;
- BSActorMoveToTarget : déplace un objet physique vers un emplacement ;
- BSActorSetForce : applique une force continue à un objet physique ;
- BSActorSetTorque : applique un couple continu à un objet physique ;
- BSDynamic (le nom changera) : implémente le modèle de véhicule de SecondLife®.
Vehicules
Voir aussi la page archivée : Véhicules
Fonctions d'extension des scripts BulletSim
L'interface d'extension physique est utilisée par BulletSim pour implémenter de nombreuses nouvelles fonctions physiques. L'interface mod_invoke doit être activée pour que ces fonctions fonctionnent.
Avatar qui monte des escaliers
L'acteur du mouvement de l'avatar inclut des vérifications spéciales pour permettre aux avatars de se déplacer sur des objets en escalier (comme des marches). Le code vérifie les collisions à proximité des pieds de l'avatar et, s'il essaie d'avancer et non de voler, pousse l'avatar vers le haut pour passer au-dessus de l'objet. Il s'agit d'un algorithme différent de celui d'ODE, qui s'appuie sur la courbure de la capsule de l'avatar pour se déplacer sur des obstacles bas.
Sept paramètres INI permettent de contrôler les escaliers :
AvatarStepHeight | Hauteur maximale d'une marche. Si l'avatar entre en collision avec quelque chose en dessous de cette hauteur, cela sera considéré comme une marche et l'avatar envisagera de se déplacer vers le haut pour la franchir. |
AvatarStepAngle | Angle maximal de la surface de collision pour qu'elle soit considérée comme une marche. Par exemple, si elle est fixée à zéro, les surfaces de marche doivent être parfaitement verticales avant d'être considérées comme des surfaces de marche. La valeur typique est de 0,3f, ce qui permet une certaine variabilité des pas. |
AvatarStepGroundFudge | Petit facteur de correction soustrait du calcul de la position de la plante des pieds de l'avatar lors de la vérification si la collision est proche de ses pieds. Cette hauteur peut être légèrement élevée (au-dessus du sol), donc ce facteur permet de la comparer à une hauteur plus basse pour la marche. Cela peut empêcher que des petites bosses sur le sol soient considérées comme trop petites pour être une marche, ce qui pourrait amener le moteur à traiter la bosse comme un obstacle solide, empêchant ainsi l'avatar de se déplacer correctement. |
AvatarApproachFactor | Angle d'approche de la marche. Il s'agit des radians de l'angle formé entre l'avatar et la surface de la marche avec laquelle il entre en collision. Cela permet d'éviter de monter sur des objets lorsque l'on s'approche d'un angle trop grand. La valeur par défaut de 0,6 correspond à un angle d'approche de 45 degrés. En réglant cette valeur à 0.3, par exemple, l'avatar devra marcher presque directement sur la marche pour obtenir les actions de montée. |
AvatarStepUpCorrectionFactor | Facteur de multiplication pour changer la position de l'avatar afin de franchir la marche. La hauteur de la collision avec la marche est multipliée par ce facteur et ce nombre est ajouté à la coordonnée Z de l'avatar. Cela déplace l'avatar vers le haut par rapport à la marche. Si ce facteur est inférieur à zéro, AvatarStepHeight est utilisé. |
AvatarStepForceFactor | Facteur de force pour pousser l'avatar vers le haut afin de franchir la marche. Une force de poussée égale à la hauteur de la marche multipliée par la masse de l'avatar multipliée par ce facteur est appliquée à l'avatar. Ces deux derniers facteurs peuvent être utilisés en combinaison pour déplacer l'avatar lors d'une collision avec une marche. |
AvatarStepSmoothingSteps | Lorsqu'un avatar monte les marches, les collisions se succèdent au fur et à mesure que les marches sont heurtées et franchies. C'est le nombre de ticks du simulateur (environ 10 par seconde) pendant lesquels la montée des marches sera encore effectuée après que la dernière collision de marche ait été détectée. Cela permet d'adoucir un peu l'action. |
Les valeurs par défaut sont :
[BulletSim]
AvatarStepHeight = 0.6
AvatarStepGroundFudge = 0.1
AvatarStepApproachFactor = 0.6
AvatarStepUpCorrectionFactor = 1.0
AvatarStepForceFactor = 2.0
AvatarStepSmoothingSteps = 1
Autres notes
Ajuster la hauteur de l'avatar
Depuis le 13 mai 2013, BulletSim utilise la forme de la capsule Bullet pour se rapprocher d'un avatar debout. L'une des particularités de la capsule est sa hauteur, qui n'est pas adaptée à ce qu'OpenSimulator attend. Pour y remédier, plusieurs paramètres d'ajustement sont disponibles pour corriger la hauteur de la capsule de l'avatar de sorte qu'un avatar semble être debout sur le sol plutôt que de flotter ou de s'y enfoncer.
Ces paramètres sont les suivants :
Variable INI | Défaut | Description |
---|---|---|
AvatarHeightMidFudge | 0.0 | Il s'agit d'un facteur de correction ajouté à la hauteur de 50 % de l'avatar (environ 1,87 mètre). Ce chiffre est ajouté à la hauteur totale, de sorte que l'ajustement de ce chiffre fait monter ou descendre l'ensemble de la capsule d'environ cette hauteur. |
AvatarHeightLowFudge | 0.0 | Ce facteur est ajouté à l'extrémité inférieure de la capsule (hauteur de '0%' qui est d'environ 1,62 mètre). Ce nombre est ajusté proportionnellement entre la hauteur moyenne et la hauteur basse. Ajuster ce nombre modifie la taille de la capsule pour les formes petites. |
AvatarHeightHighFudge | 0.0 | Cette fonction est similaire à AvatarHeightLowFudge, mais elle est appliquée à la partie supérieure de la hauteur (hauteur « 100 % », soit environ 2,12 mètres). Elle est également ajoutée proportionnellement à partir de la hauteur moyenne jusqu'à la grande hauteur. |