Angenommen, ich habe ein Physikprimitiv, das ich als "Draht" bezeichnen werde, der um eine 2D-Umgebung gewickelt ist (wie in dieser Frage beschrieben ).
Hier ist eine Illustration, wie das aussehen könnte:
In der Beispielabbildung: Die Box wird vom Draht nach oben gezogen (hochgehalten), und die Box zieht den Draht nach unten. Das Objekt auf der Feder wird vom Draht nach unten gedrückt, drückt aber auch den Draht nach oben.
Obwohl ich noch nicht herausgefunden habe, wie ich es implementieren soll, gehe ich davon aus, dass der Draht frei über die Punkte gleitet, um die er gewickelt ist.
Wie berechnen Sie in einer 2D-Physiksimulation (dh rahmenbasiert) die Kräfte (oder Impulse), die auf die Objekte ausgeübt werden sollen, die an einem solchen Draht befestigt oder von diesem umwickelt sind?
Wie ich in meiner ersten Frage angedeutet habe , stelle ich mir vor, dass, wenn das einzige nicht statische Objekt "auf" dem Draht die Masse am Ende wäre, die Kraft mit einer Verbindung fester Länge zwischen der Masse und dem vorherigen Punkt identisch wäre das auf dem Draht.
quelle
F = T * cos(angle between wire and spring axis)
. Welcher Winkel genau? Außerdem: Ich glaube nicht, dass es (in der Simulation) eine sinnvolle Möglichkeit gibt, den Draht "wissen" zu lassen, dass an diesem Objekt eine Feder angebracht ist.Ich schätze definitiv Ihre Frustration in diesen drahtbasierten Threads, es ist ein schwer zu lösendes Problem. Wir haben nie eine perfekte Kollision erreicht, aber die Einschränkungssimulation ist definitiv machbar und unkompliziert.
Eine Drahtbeschränkung ist tatsächlich fast identisch mit einer regulären Abstandsbeschränkung. Anstelle von zwei Randbedingungen haben Sie n + 1 für einen Draht mit n Segmenten, einen für jeden Scheitelpunkt - an den Endpunkten ist der Jacobi identisch mit einer Abstandsbedingung (dh es ist so etwas wie d / | d |, wobei d der Vektor ist zwischen Punkten), und für die internen Knoten ist der Jacobi so etwas wie (a / | a | - b / | b |), wobei a und b die Vektoren vom Knoten zu den benachbarten Knoten sind. (Entschuldigung, es ist ein paar Jahre her, seit ich das berührt habe ...)
Sie können es nicht a-la vortäuschen "nur das letzte Segment ist dynamisch", da Objekte wie in Ihrem Beispiel mit anderen Segmenten interagieren können, Sie jedoch nur Massen an den Enden des Seils simulieren müssen - intern kann das Seil sei masselos. Die an jedem Knoten berechneten Einschränkungsimpulse müssen auf das Objekt angewendet werden, das an diesem Knoten kollidiert.
Hier sind einige verwandte Artikel:
Die ersten drei sind relativ neu und sollten viel helfen. Seite 75 des unteren Dokuments beschreibt eine "Multibar" -Einschränkung, die im Wesentlichen ein Draht ist.
Viel Glück :)
Raigan
quelle
Die Grundidee ist, dass die Länge des Seils gleich bleibt. Wenn es hochgeschoben wird, müssen Sie dort einen "Split Point" erstellen. Dann bestimmt das Seil, auf welcher Seite es befestigt ist, weil es in dieser Richtung nicht "wachsen" kann. Da es an etwas auf der rechten Seite befestigt ist, wird das Stück Seil auf der linken Seite kürzer und das Stück zwischen dem Teilungspunkt und dem angebrachten Punkt wird etwas länger. Berechnen Sie dann, wie Niall sagte, die Spannung des Drahtes. Wie ich das tun würde, ist die Spannung jedes "Stücks" Seil zu berechnen. Sie können dies dann verwenden, um die beteiligten Kräfte zu bestimmen.
Hoffe das hilft.
quelle