Je suis à un point sur mon véhicule où, lorsque je vais vite et que je tourne, le véhicule agit bizarrement parce que les pneus intérieurs se déplacent plus rapidement que les pneus extérieurs. J'ai donc besoin de comprendre comment programmer dans un différentiel mais je n'arrive pas à le faire fonctionner correctement, donc je suis ici pour voir si quelqu'un a de l'expérience avec cela.
J'ai vérifié la physique en ligne, mais cela semble prendre en compte plus d'informations que je ne peux en fournir dans mon jeu (comme l'influence réelle de la gravité sur le véhicule). Actuellement, j'utilise la logique suivante pour déterminer les vitesses différentielles des roues. Je vais essayer d'expliquer le plus clairement et le plus simplement possible donc je m'excuse si c'est déroutant ou trop simplifié, c'est déroutant pour moi!
Voici ce que je fais: je divise mon degré de virage actuel par le montant maximal de virage pour obtenir un pourcentage, je prends ensuite ce pourcentage et l'applique à un pourcentage modificateur (juste un pour cent que j'ai composé et ajusté pour réduire le nombre passé au différentiel, vous ne savez pas ce que cela devrait être vraiment. Vitesse du moteur? Vitesse?). Ensuite, dans mon différentiel, je vérifie si le véhicule tourne à gauche ou à droite et réduit la vitesse d'un côté de x% et augmente la vitesse de l'autre côté du même x%
Je suis certain que mon plus gros problème est le nombre que je compose pour réduire le pourcentage de rotation, mais je ne peux pas dire quoi y mettre. Je sais que passer directement le% de virage au différentiel (disons, 40%) réduirait un côté de 40 et augmenterait l'autre de 40 et ce n'est clairement pas correct.
J'ai accès à la vitesse du moteur, à la transmission, à la vitesse de chaque essieu des roues, au couple, à la vitesse du véhicule, etc., mais je ne sais pas lequel de ces éléments je dois prendre en compte lors de la préparation de cette formule.
Peut-être que je complique trop ou peut-être que je simplifie trop. Toute aide pour comprendre cela serait formidable!
Réponses:
Je pense vraiment que vous ne devriez pas le faire de cette façon et que vous devriez vous pencher davantage sur la physique réelle (voir mon commentaire). Cependant, je peux vous dire pourquoi votre approche actuelle ne fonctionne pas. (Trop de temps pour les commentaires donc je vais juste poster ceci comme réponse)
Voyons d'abord ce qui se passe (vous l'avez probablement déjà fait vous-même).
La situation est fondamentalement comme dans l'image ci-dessus, mais simplifions un peu les chiffres:
Supposons que la voiture C mesure 2 mètres de large et ait un rayon de braquage minimum de 5 mètres. Je tourne maintenant à gauche. La roue avant gauche suit désormais un cercle d'un diamètre de 5 mètres. La roue avant droite suit désormais un cercle de 7 mètres de diamètre. Un cercle complet sera parcouru par la roue gauche sur 10 * pi mètres. La roue droite parcourt 14 * pi mètres. Maintenant , dire que les roues de C ont tous la même taille, et que la circonférence des roues est de 0,5 * mètres pi (oui ce sont de grandes roues, mais personne ne dit que nous ne pouvions pas modéliser un camion monstre!) Le différentiel sera Il faut s'assurer que pour chaque 20 tours de la roue gauche la roue droite tourne 28 fois pour qu'aucune des roues ne glisse.
Donc, vous pourriez maintenant dire que le diff-% devrait être modifié, disons que pour la pleine gauche, il devrait différencier + 40%, et lerpons-le complètement à droite -40% et ensuite nous sommes en or?
Malheureusement, comme vous l'avez vu, cela ne fonctionne pas. Trouvons une formule générale pour le différentiel dans cette voiture. Ici x est le cercle de braquage souhaité.
Je dirais que le diff devrait fonctionner à la fraction ((x + 2) * 4 / (x * 4)) [*]. (Times 100% si vous le voulez en pourcentage) complot Let que:
Comme vous pouvez le voir clairement, cette fonction est non linéaire. Donc, le simple fait que le différentiel dépend linéairement de la quantité de braquage à gauche ou à droite ne fonctionnera jamais.
Maintenant, je vois qu'il est tentant d'utiliser simplement la formule ci-dessus, mais je pense que c'est probablement mieux si vous ne le faites pas pour les raisons décrites ci-dessus :). Vous devrez également implémenter 2 différentiels, sauf si votre direction implique les quatre roues, ce qui rend encore plus difficile à mettre en œuvre, voir à nouveau la 1ère image.
[*]: que nous pouvons simplifier: (x + 2) * 4 / (x * 4) => (x + 2) / x
la source