In Anlehnung an meine vorherige Frage : Ich habe den Ball ziemlich realistisch von Oberflächen abprallen lassen, auf die er trifft. Jetzt möchte ich es aus der Reibung des Treffers heraus drehen lassen .
Dies zu zeigen ist einfach genug: Ich drehe den Ball bei jedem Tick um seine Winkelgeschwindigkeit und wende dieselbe Drehung an, wenn er gerendert wird.
Wenn ein Ball auf eine Wand trifft, weiß ich, dass die Rotationsgeschwindigkeit von ...
- die Anfangsgeschwindigkeit des Balls beim Auftreffen auf die Oberfläche
- die Reibungskoeffizienten der Kugel und der Oberfläche (physikalische Konstanten)
- der Einfallswinkel (der Winkel zwischen dem ankommenden Geschwindigkeitsvektor des Balls und der Flächennormalen).
Der Einfallswinkel wird durch das Skalarprodukt der Aufprall- und Austrittsgeschwindigkeitsvektoren des Balls approximiert. (1 bedeutet high spin, -1 bedeutet no spin und alles andere relativ dazwischen)
Multiplizieren Sie alle oben genannten Werte und stellen Sie sicher, dass sie in den Bereich 0 - 1 transformiert und mit der maximalen Rotationsgeschwindigkeit multipliziert wurden. Der Ball schien erwartungsgemäß mit der Rotationsgeschwindigkeit zu reagieren. Abgesehen von einer Sache: Es würde sich immer im Uhrzeigersinn drehen (wegen positiver Werte).
Ist das eine gute Methode? Können Sie sich einen einfacheren Weg vorstellen?
Wenn diese Methode in Ordnung zu sein scheint, was fehle ich? Woher weiß ich, wann sich der Ball gegen den Uhrzeigersinn drehen soll?
quelle
Ermitteln Sie zunächst die Flächentangente aus der Flächennormalen: t = (ny, -nx)
Dann können Sie die Geschwindigkeitskomponente entlang der Oberfläche als vt = v dot t erhalten .
Nun können Sie die Rotation der Kugel berechnen: w = | ( normal * r) cross vt |, wobei r der Radius der Kugel ist.
Hier gehe ich davon aus, dass der Ball keine Rotationsträgheit hat und sofort mit der Geschwindigkeit rotiert, die er hätte, wenn er über die Oberfläche gerollt wäre. Sie können einen Reibungskoeffizienten verwenden, um ihn realistischer zu gestalten und wenn Sie möchten, die Rotationsträgheit der Kugel zu berücksichtigen.
quelle
Okay, das klingt vielleicht dumm, aber Sie verwenden nicht das Punktprodukt des Kugelvektors und der Flächennormalen und machen nur einen Bogen, um den Winkel zu berechnen, oder? Denn dann würde der Winkel positiv sein , ob es positiv war (bis zu 90 Grad) oder negativ (dito) als Kosinus 0 symmetrisch um ist
Wenn dies ist der Fall , dann stattdessen die Normale der Ebene der Verwendung Verwenden die Ebenenrichtung selbst und Subtrahieren Sie 90 Grad vom Winkel, sodass 0 bis 180 zu -90 bis +90 Grad werden (oder -halb PI bis + halb PI, wenn Sie radial geneigt sind).
quelle
Das erste, was Sie tun müssen, ist, ob Sie sich drehen oder drehen, bevor Sie auf die Wand treffen. sagen wir mal Si; ist größer, gleich oder kleiner als der Wert, der benötigt wird, um den gleichen Spin nach dem Schlagen beizubehalten, sagen wir Ss. Mit dieser Funktion können Sie den tatsächlichen Wert nach dem Schlagen von Spin, z. B. Se, anhand eines Reibungswerts zwischen der Kugel und der Oberfläche ermitteln
Ermitteln Sie die Geschwindigkeitskomponente über die Prellfläche Vxi = Vi Punkt Vx, wobei Vx ein Parallelvektor zur Fläche mit der Größe 1 ist.
Der Wert, den Sie suchen, ist Ss = Vxi / r, um Vxi in Winkelgeschwindigkeit umzuwandeln. Wenn Si niedriger als Ss ist, sollte der Ball einen positiven Spin erzielen. Wenn Si gleich Ss ist, sollte der Ball ungefähr den gleichen Spin behalten, etwa später. Wenn Si größer als Ss ist, sollte der Ball den Spin verlieren
Geschwindigkeitsverlust und Geschwindigkeitsgewinn hängen vom Reibungswert Fr ab. Eigentlich ist es eine Kreuzung zwischen dem Radius und der Reibungskraft, aber Sie können diesen Wert nach Belieben einstellen.
Sie müssen auch beachten, dass der Ball neben dem Sprung-Coef aufgrund einer Reibung zwischen Ball und Oberfläche etwas Energie verliert, wodurch Vxi negativ beeinflusst wird. Ich würde sagen, Bounce Coef beeinflusst Vy und Friktion beeinflusst Vx.
Sie sollten die Verformung der Kugel berücksichtigen. Dies wirkt sich auf die Zeit oder die Frames aus, in denen der Ball an der Wand haftet. Daher wirkt sich die Reibungskraft für eine längere Zeit auf den Spin und die Austrittsgeschwindigkeit aus. Diese Verformung hängt davon ab, wie Ihr Modell aussehen soll.
quelle