9Fermer11
bearbecueLe 25/04/2009 à 22:45
NTtU
tank sur terrain, points de contact OK en vert, points de contact en penetration avec le terrain en rouge.
centre de gravite du tank en bleu.
les vecteurs servant a sortir le tank du terrain sont en rouge (c'est les impulses a utiliser par la suite pour modifier la vitesse angulaire)

R7bR
le replacement du tank a une position valide, en utilisant le plus grand vecteur de replacement trouve dans l'etape d'avant.

gCH7
une visualisation des vecteurs necessaires a la modification de la vitesse angulaire: en rouge les impulses, en violet le vecteur "(contactPoint - tank.CenterOfMass)"
vu que tu modifies la vitesse angulaire avec "cross(contactPoint - tank.CenterOfMass, impulse)", et que tu peux voir la magnitude resultat du cross comme directement dependante la surface du triangle forme par les deux autres vecteurs (c'est la surface du parallepipede, donc deux fois la surface du triangle, bref...), tu peux voir que:

- plus l'impulse est eloigne du centre de gravite, plus l'effet sur la vitesse angulaire est fort.
- plus le vecteur de l'impulse "pointe" vers le centre de gravite, moins l'effet sur la vitesse angulaire est fort.



dans les exemples d'au dessus, t'as du voir que suivant la forme du terrain, il va rentrer dans le tank si jamais il y a une bosse entre deux points de contact.

la bonne nouvelle c'est que:
- tu peux rajouter plein de points de contact sous le tank trioui
- tu peux t'amuser a gerer ces intersections terrain/segment. le but etant de trouver le point du segment le plus profondement enfoui dans le terrain. et de rajouter ce point a une liste de points de contacts dynamiques, et la t'aura des collisions "continues" avec une vraie enveloppe quelconque autour de ton tank. tu peux meme t'amuser a dessiner les bords de ton tank avec des segments si t'as envie...
mais le truc bien c'est que tu change rien au systeme derriere.
c'est juste gerer un autre type de primitives de collisions que les points. mais ce que tu donnes a manger au coeur de ton solver physique derriere, ca reste des points de contact, ils sont juste plus statiques. apres tu peux faire ca avec des cercles, de vrais rectangles, bref... (mais juste des segments ca devrait amplement te suffire).

en attendant, pour experimenter, les points c'est le plus simple, et ca te permettra d'arriver rapidement a un truc qui marche ^^

et peut-etre sans le savoir, tu viens de faire un pas dans le monde des rigid bodies \o/