Wann soll ich extrapolieren und wann soll ich interpolieren?


16

Ich habe Probleme zu verstehen, wann extrapoliert und wann interpoliert werden muss. In Gaffer on Games sagte er, er solle interpolieren, aber dann empfahl er in einem anderen Artikel, den Spieler zu extrapolieren. Meine Frage ist also, wann es besser ist zu extrapolieren und wann es besser ist zu interpolieren.


22
Es gibt zwei Arten von Menschen. Diejenigen, die aus unvollständigen Daten extrapolieren können
Almo

2
@Almo und was ist die andere Art? Bitte sag mir, ich muss es wissen!
DJMcMayhem

4
@DJMcMayhem ... und diejenigen, die gerne Fischstäbchen essen.
user253751

4
Ich verstehe die Frage nicht. Können Sie einen Weg erklären, um die Punkte {(1, a), (2, b)} zu "interpolieren", um c in (3, c) vorherzusagen? Und wie würden Sie es extrapolieren?
Mehrdad

Antworten:


29

Sie interpolieren , wenn Sie wissen , die ‚vor‘ und ‚nach‘ Werten.

Zum Beispiel: in einem Point-and-Click - Spiel, ist der Spieler zur Zeit an der Position X, und von seiner Schnittstelle, klickt er an Ort und Stelle Y. Sie müssen interpolieren die Verschiebung zwischen X und Y , weil Sie wissen , die beiden Werte.

Sie extrapolieren, wenn Sie den zukünftigen Wert erraten, basierend auf dem, was Sie bereits wissen.

Beispiel: In einem Ego-Shooter-Spiel befindet sich der Spieler auf Position X und drückt die letzte Sekunde lang den Aufwärtspfeil auf seiner Tastatur. Sie können davon ausgehen, dass er dies in der nächsten Sekunde erneut tut, da dies im Grunde genommen der Fall ist das häufigste Verhalten in Ihrem Spiel; so extrapolieren Sie die Position, dass er nächstes Bild sein wird. Der Server sendet es an die anderen Spieleclients. Dies erklärt die Verzögerung bei der Übertragung vom Server an die Spieler.

Die Extrapolation wird hauptsächlich zur Bewegungsvorhersage verwendet. Es ist nicht von dem Spiel benötigt Server , aber die Spiel - Clients müssen sie eine etwas realistischere und aktuelle Vision des Zustandes des Spiels anzuzeigen , um eine glatte visuelle Erfahrung für die Spieler zu geben.


Ich verstehe diesen Teil, aber ich verstehe nicht, wann ich jeden verwenden soll. Wenn ich zum Beispiel einen Spieler interpoliere, gibt es eine Verzögerung für ihn, um die Bewegung tatsächlich zu sehen, aber wenn ich sie extrapoliere, ist sie augenblicklicher, aber möglicherweise nicht genau und muss korrigiert werden. Ist es normalerweise wünschenswerter, die momentane Bewegung von der Extrapolation oder die konsistentere Bewegung von der Interpolation zu haben?
J leong

@Jleong Sie möchten, dass das Spiel den Benutzern so reibungslos wie möglich präsentiert wird. Sie interpolieren den aktuellen Status des Spiels und Sie extrapolieren, wie es in ein paar Frames sein wird. Sie senden die extrapolierten Werte an die anderen Spieler, um die Verzögerung bei der Netzwerkübertragung zu berücksichtigen. Wenn Sie die interpolierten Werte senden, scheint das Spiel zu verzögern und es würde keinen Spaß machen. (Ich habe meine Antwort bearbeitet. Ich hoffe, sie wird ein bisschen klarer.)
Vaillancourt

oh ok also wird extrapoliert, wenn der Client vorhersagen soll, was passieren wird? Wenn ja, was ist dann der Punkt der Interpolation, wenn Sie immer extrapolieren können, um das Spiel nahe an der Echtzeit zu halten? Würde also wie bei einem FPS der Spieler extrapoliert und die anderen Spieler interpoliert werden?
J leong

Im Allgemeinen erledigt der Server alles: Er interpoliert auf der Grundlage seines Wissens und extrapoliert auf dieser Grundlage die Werte und sendet diese an die Clients, damit diese rechtzeitig eintreffen, um den Spielern präsentiert zu werden. In einem FPS wird die Interpolation verwendet, um Dinge wie Projektile, KI und dergleichen anzuzeigen. Bei der Ausführung von Frame B (von Frame A kommend) werden Werte für den Status von Frame B interpoliert. Es kann auch beginnen, Frame C durch Interpolation der bekannten Werte vorherzusagen , aber es muss Werte extrapolieren, die es nicht kennt (Player-Eingaben). Es wird dann den "zukünftigen" Status an den Client senden.
Vaillancourt

@Jleong Ohne über den Unterschied zwischen Client und Server nachzudenken, kann ich mithilfe der Interpolation eine Position zwischen zwei bekannten Punkten ableiten (z. B. um eine Kollision zu überprüfen, die zwischen Frames aufgetreten sein könnte) oder den betreffenden Datensatz ableiten Geschwindigkeit / Trajektorie und Beschleunigung, gegeben eine Reihe von Punkten, und gegeben die letzte bekannte Geschwindigkeit / Beschleunigung / Trajektorie, kann ich extrapolieren, wo diese Objekte möglicherweise in Zukunft einen konsistenten Zeitrahmen annehmen. Für die Server-Client-Kommunikation wird die "optimistische" hochgerechnete Position verwendet.
Norguard

14

Die Interpolation wird durchgeführt, wenn Sie sowohl einen Start- als auch einen Endwert haben und abschätzen möchten, was zwischen diesem Start- und Endwert passiert. Ein Beispiel wäre, einen Spieler in einer fließenden Bewegung von Position A nach Position B zu bewegen.

Die Extrapolation erfolgt, wenn Sie einen Startwert haben, aber noch keine Daten für das Ende haben. Sie können dann basierend auf Ihren Daten extrapolieren. Anhand der vorherigen Bewegungen eines Spielers können Sie beispielsweise bestimmen, wo er sich voraussichtlich im nächsten Frame befinden wird.


2

Interpolieren Sie immer, wenn Sie können.

Wenn Sie nicht genügend Informationen zum Interpolieren haben, müssen Sie extrapolieren.

Es ist wirklich so einfach, überlege es dir nicht :)

Um ein bisschen mehr zu erklären:

Im Allgemeinen ist die Interpolation besser, da die Interpolation immer richtig ist. Um zu extrapolieren, muss man raten. Dann muss man sich mit dem auseinandersetzen, was passiert, wenn man falsch vermutet, was zu Gummibändern oder Knallen führt, und mit allen möglichen Systemen, um all das zu handhaben und zu verschleiern.

Was passiert, wenn Sie eine Schlägerposition extrapoliert und gezeigt haben, dass sie an die richtige Stelle geht und den Ball abprallt, und anschließend festgestellt haben, dass Sie sich geirrt haben und der Ball nicht abprallt? Es gibt keine gute Möglichkeit, mit diesem Szenario umzugehen.


oh ok so in Pong, wird das Paddel des Benutzers vorhergesagt und der Ball und das andere Paddel werden interpoliert?
J leong

Das hängt ganz davon ab, wie Sie es implementieren. Weitere Informationen finden Sie unter Meine Bearbeitung.
Tim B

2

Sie interpolieren, um Zustände zwischen bekannten Werten zu finden, und Sie extrapolieren, um zukünftige Zustände zu finden.

Denken Sie an das Problem in Form von Zustandsvariablen wie Positionen und Geschwindigkeiten. Im besten Fall hat jeder Computer, der mit dem Status arbeiten muss, Zugriff auf die Statusdaten für die Zeit, an der er arbeiten möchte. Beispiel: Ein Kollisionsalgorithmus, mit dem ermittelt wird, ob der Lasergewehrschuss X den Kopf von Spieler A beeinträchtigt, ist der beste Fall, wenn der Algorithmus die genaue Position jedes Objekts zum Zeitpunkt des Laserabschusses kennt.

In der realen Welt sind wir nicht immer so glücklich. Manchmal sind die Wahrheitsinformationen, die wir erhalten, spärlicher. Wenn Spieler A beispielsweise ein Remote-Spieler auf einem anderen Computer ist, wissen Sie möglicherweise nicht genau, wohin sie gehen, wenn Sie den Laser abfeuern und den Schuss berechnen müssen. In diesem Fall müssen Sie einen Schätzer für die Position von A erstellen, in der Regel mit Interpolation oder Extrapolation.

Der Unterschied zwischen den beiden besteht darin, ob Sie Daten haben, die auf beiden Seiten oder nur auf einer Seite begrenzt sind. Angenommen, Spieler A hat bereits seine Wahrheitsposition für t = 0 und t = 1 angekündigt. Spieler B schießt einen Laser bei t = 0,5. In vielen Situationen kann es vorkommen, dass Spieler A seine Position bei t = 1 ansagt, bevor Spieler B den Abzug drückt. Warum? In vielen Spielen ist die Reaktionsfähigkeit der Steuerelemente weniger als augenblicklich. In einer Rennsimulation ist ein Großteil der Position des Spielers durch die Physik eines sich bewegenden Fahrzeugs begrenzt. Sie können eine "zukünftige Position" ankündigen, weil Sie wissen, dass Sie in kurzer Zeit wirklich nicht so viel steuern können. Wenn Sie in Zukunft Informationen haben, können Sie zwischen den beiden Werten interpolieren.

Was, wenn Sie nicht das Glück haben, einen Wert von = 1 zu haben? Was wäre, wenn Spieler A nicht in der Lage wäre, seinen zukünftigen Standort mitzuteilen, und Sie nicht sicher sind, ob Sie nur mit den Informationen von t = 0 treffen oder verpassen? In diesem Fall müssen Sie extrapolieren. Bei der Extrapolation verwenden Sie das, was Sie über die Bewegung wissen, um über die vorhandenen Daten hinauszugehen. Möglicherweise wissen Sie, dass Spieler A eine bestimmte Geschwindigkeit hat. Nehmen Sie also an, dass Sie, wenn Sie diese mit der Zeit multiplizieren, jedes Mal eine Position erhalten können.

Der Unterschied liegt im Verhalten. Für die Interpolation müssen Sie eine obere und eine untere Schranke haben, die Sie nicht immer haben. In fast allen Situationen hat es jedoch weitaus bessere Ergebnisse als die Extrapolation. Extrapolation kann leicht zu unrealistischen Bewegungen führen. Betrachten Sie den Fall eines Spielers, der nach links und rechts ausweicht, um nicht beim Vorrücken angeschossen zu werden. Zu jedem Zeitpunkt verläuft ihre Geschwindigkeit entlang einer Diagonale. Wenn Sie also extrapolieren, läuft der Spieler möglicherweise zur Seite, obwohl dies niemals der Fall ist. Wenn Sie nur interpolieren, neigen die Werte dazu, nicht von den realistischen Werten abzuweichen.

Interpolation und Extrapolation sind zwei Extreme in der Welt der Filterung. Es gibt viele, viele, viele Filter für den Umgang mit solchen Daten, die Eigenschaften zwischen Interpolation und Extrapolation mischen und anpassen. Seien Sie daher nicht überrascht, wenn Sie Algorithmen sehen, die nicht eindeutig interpolieren oder extrapolieren. Diese beiden sind nur die Spitze des Eisbergs.


1

Bei der Interpolation werden bekannte Daten verwendet, um ein Datum innerhalb der Grenzen des Datensatzes zu berechnen (wobei es sich um das Präfix 'inside' handelt). Bei der Extrapolation wird ein Datum außerhalb der Grenzen der vorhandenen Daten berechnet (zusätzlich wird das Präfix 'outside' verwendet). Beide werden zur Synthese zusätzlicher Daten verwendet, wobei die genaue Berechnungsmethode die erwartete Zuverlässigkeit der generierten Daten definiert.

Oder um es in ein sehr einfaches Diagramm zu fassen:

A - - - - - B - - - - - C - - - - - D

Gegeben die Datenpunkte Aund Cman kann interpolieren Bund extrapolieren D.


Die Genauigkeit einer Interpolation oder einer Extrapolation hängt ganz davon ab, wie gut Sie jede Variable in der Berechnung berücksichtigen können. Wenn Sie alle Variablen kennen und eine Gleichung haben, die sie alle berücksichtigt, können Sie gleichermaßen leicht interpolieren oder extrapolieren.

Für die Spielmechanik sind die begrenzenden Faktoren die Punkte, an denen die Variablen auf unvorhersehbare Weise beeinflusst werden, entweder vom Spieler oder einem zufälligen oder pseudozufälligen Element.

Beispielsweise kann die Bewegung eines Balls in Breakout (in seiner einfachsten Form) bis zu dem Punkt hochgerechnet werden, an dem er möglicherweise mit dem Paddel des Spielers interagiert. Bis zu diesem Punkt können alle Variablen berücksichtigt werden, sodass Sie die Aktionen des Balls präzise modellieren können. Wenn es den Punkt erreicht, an dem eine Interaktion mit dem Spieler möglich ist, gibt es eine Reihe von möglichen Ergebnissen und es gibt keine Möglichkeit, genau zu modellieren, was davon der Fall sein wird, bis es tatsächlich passiert. Dies ist die Vorhersagegrenze des Spielphysikmodells.

Die Interpolation ist in Spielen einfacher, weil Sie mit bekannten Punkten arbeiten und sich nicht fragen müssen, ob sich die Bedingungen ändern werden. Außerdem haben Sie die volle Kontrolle über die beteiligten Variablen und können beliebige Regeln verwenden, um den Pfad eines Objekts zu bestimmen. Je komplexer die Regeln sind, desto schwieriger kann es sein, zu interpolieren.

Für Objektbewegungen mit einfachen Kollisionen in einem schwerkraftfreien Spielraum (wie Breakout oder Pong) ist der Mechanismus für die Interpolation entlang einer Linie auf dem Pfad eine einfache lineare Interpolation der Punkte. Dieselbe Berechnung kann verwendet werden, um die Linie zu extrapolieren Test für zukünftige Kollisionen. Sobald eine Kollision erkannt wurde, können Sie die Auswirkungen dieser Kollision auf die betroffenen Objekte extrapolieren.


Dies ist genau der Unterschied zwischen den Wörtern. Der Grund, warum wir unterschiedliche Wörter für das Erraten von B und D haben, wenn wir nur A und C haben, ist, dass das richtige Erraten von B so viel einfacher ist als das richtige Erraten von D. Artillerieexperten nennen Interpolation Backeting. Sie haben zwei Markierungsrunden auf beiden Seiten von dir. Du bist tot, wenn du dich nicht bewegst. Extrapolieren ist das, was Sie versuchen, wenn Sie an der Börse spielen, nachdem Sie sich die Aktienkurscharts angesehen haben. Hochrechnen ist schwer.
candied_orange

@CandiedOrange Komplexe Systeme zu extrapolieren ist schwierig, aber auch zu interpolieren. Dies hängt von der Qualität Ihrer Datenpunkte und der Vorhersagbarkeit des Systems ab. Wenn Sie eine genaue Gleichung ableiten können, die das System beschreibt, können Sie mit Genauigkeit interpolieren oder extrapolieren - Linien sind einfach zu extrapolieren, Kurven können es sein, Aktienmärkte nicht so sehr.
Corey

Mit hart meine ich, dass das Interpolieren Ihnen den Grundsatz des Kalküls gibt, auf den Sie zurückgreifen können. Extrapolieren nicht. A und C sagen dir, dass B irgendwo C möglich gemacht hat, vorausgesetzt A. Nach D zu fragen, bedeutet, die Zukunft vorherzusagen. Soweit Sie wissen, ist C der Ort, an dem der Spieler gestorben ist. Welches ist zuverlässiger und akzeptabler: Interpolation oder Extrapolation? Warum-ist-Extrapolation-riskanter-als-Interpolation
candied_orange

@CandiedOrange Sicher, die Extrapolation ist auf den Grad beschränkt, in dem Sie alle relevanten Variablen steuern und vorhersagen können. So ist Interpolation. Bei zwei Positionen, die ein Spieler in der Vergangenheit eingenommen hat, kann man einen Mittelpunkt nicht unbedingt genau interpolieren, da der Spieler möglicherweise von einem direkten oder optimalen Weg abgewichen ist. Beide Methoden sind begrenzt.
Corey

Klar, beide sind begrenzt. Aber einer zerstört öfter Karrieren als der andere. Rate mal was. Ich behaupte nicht, dass Interpolation perfekt ist. Es ist gefährlich, sie mit derselben Vorhersagekraft zu sehen.
candied_orange

0

Die kurze Antwort: Sie interpolieren, wenn Sie einen Wert zwischen zwei bekannten Werten schätzen müssen (dh: in einer Stunde ist der Wert 1, in 3 Stunden sind es drei, um den Wert bei 2 mit dem wahrscheinlichsten Wert 2 zu interpolieren, mit dem gegebenen Wert Werte). Extrapolieren heißt, wenn das Unbekannte außerhalb dessen liegt, was Sie wissen. Wenn also 1 und 2 bekannt sind, können Sie eine fundierte Vermutung zu 3 anstellen.

Interpolieren: Zwischen Extrapolieren: Außerhalb

Die langen Antworten hier sind höchstwahrscheinlich viel genauer und wissenschaftlich korrekt, aber ich hoffe, dass meine einfache Erklärung für einige sinnvoll sein kann

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.