Warum ist 90 ° Horz / 60 ° Vert das Standard-FPS-Sichtfeld?

14

Soweit ich weiß, sollte das vertikale Sichtfeld angepasst werden auf:

fov = 2 * arctan(0.5*screenHeight / distanceEyeScreen);

Das heißt, das Sichtfeld sollte dem Abstand und der Größe des Bildschirms eines Benutzers entsprechen.

In vielen FPS gibt es einen Standardwert von 90 ° für horizontales FoV oder 60 ° für vertikales FoV (16: 9 vorausgesetzt). Ein Beispiel ist CryEngine. Bei einem 16: 9 20 "-Bildschirm (Diagonale des sichtbaren Bereichs, dh ca. 40 cm x 25 cm) muss der Benutzer bei diesem Standardwert einen Abstand von 20 cm zum Bildschirm einhalten, um eine perspektivisch korrekte Ansicht zu erhalten.

Entweder habe ich einen Fehler in meinen Berechnungen gemacht, oder es muss einen Grund geben, warum Sie absichtlich einen unzureichenden FoV-Wert wählen würden.

Was ist der Grund für einen voreingestellten FoV von 90 ° horz / 60 ° vert?

dyp
quelle
Ich weiß, dass höhere FOVs ein Spiel schneller fühlen lassen können, wenn sich die Szenerie vorbeibewegt . Es scheint eine Design-Wahl zu sein, die auch von dem Gerät abhängt, auf dem Sie es spielen. Welche FPS haben Sie gemessen?
Anko
@Anko Nun, ich habe ein paar "Nachforschungen" angestellt und eine Menge Forenbeiträge gefunden, in denen für verschiedene Spiele angegeben ist, dass FoV standardmäßig 90 ° horz ist. Außerdem habe ich einige CryEngine-Dokumente gelesen und in seinem Beispielspiel mit FoV herumgespielt.
Typ
Der Grund, warum das Sichtfeld standardmäßig auf den eingestellten Wert eingestellt ist, besteht darin, dass es im Allgemeinen keinen Sinn macht, einen Wert einzustellen, der nicht konstant ist. Die meisten Displays haben keine Sensoren, die anzeigen, wie weit der Kopf des Benutzers entfernt ist. Daher ist 90 Grad eine "gute Vermutung". Ich nehme an, Sie könnten sagen, es ist gleichbedeutend mit der Aussage, dass "alle unsere 20" Bildschirmbenutzer einen Abstand von 20 cm zueinander haben sollten. Wollen Sie das Sichtfeld verkleinern, weil die meisten Benutzer weiter von ihren Bildschirmen entfernt sitzen? und du musst mehr schwenken, um deine Umgebung zu sehen. Das macht ein Spiel mehr für mich saugen.
Steven Lu
Einfache Antwort: Weil es sich beim Spielen gut genug anfühlt und keine übermäßige Verzerrung hervorruft, wie es ein zunehmend breiteres Sichtfeld tut. Das Herumspielen mit Kamerawinkeln ist in jedem 3D-Editor einfach, probieren Sie verschiedene Werte aus und überzeugen Sie sich. Keine einfache Antwort: Es ist eine freimaurerische Verschwörung.
Patrick Hughes
Siehe auch

Antworten:

6

Ich denke, ein FoV von 90 Grad ist das, was sich natürlich anfühlt, wenn Sie versuchen, "durch menschliche Augen schauen" nachzuahmen. Ihre Berechnungen wären korrekt, wenn Sie den Bildschirm verwenden würden, um ein Fenster in eine virtuelle Welt zu simulieren, nicht in eine Perspektive der ersten Person. Bild, das Sie die Welt durch einen 20 "Rahmen 80cm weg von Ihrem Kopf sehen müssten ...

Dolch
quelle
1
Aber geht es bei einer perspektivischen Projektion nicht darum, "durch ein Fenster in eine virtuelle Welt zu schauen"? Oh, und Sie können auch Dinge, die aus Ihrem Bildschirm herausragen, auf die Bildschirmoberfläche projizieren.
Typ
4
Für First-Person-Perspektiv-Spiele kann ein sehr eingeschränkter FoV-Wert das Gameplay und das Immersions-IMO irritieren und beeinträchtigen, da Sie viel weniger sehen, als Sie es im wirklichen Leben gewohnt sind. Ich persönlich finde alles, was unter 90 ° liegt, unangemessen. Stellen Sie sich vor, Sie stehen in einer Ecke eines quadratischen Raums mit einem horizontalen FoV von 65 °, wie es bei Konsolenspielen üblich ist. Sie könnten nicht den gesamten Raum sehen und müssten weiter nach links und rechts schauen, um das Bewusstsein aufrechtzuerhalten. Das würde mich im wirklichen Leben verrückt machen :)
1
Ja, natürlich ist es das. Tun Sie dies us.123rf.com/400wm/400/400/ronstik/ronstik1112/ronstik111200016/... mit den Fingern und simuliert einen 20" Bildschirm vor Ihnen (80 cm entfernt). Nun stell dir vor , dass alles , was Sie sehen können. Als melak47 Das wäre ärgerlich, wenn Sie diesen simulierten 20-Zoll-Bildschirm / Rahmen 20 cm von Ihrem Kopf entfernt platzieren. Er sollte in etwa Ihrem tatsächlichen Sichtfeld entsprechen.
Dirk
3
In der Tat ist die falsche Perspektive, die durch ein künstlich weites Sichtfeld hervorgerufen wird, völlig unnatürlich, und ich persönlich finde oft die Verzerrung, die es erzeugt, stressig und nervig. Aber es ist noch unendlich vorzuziehen Blick alles wie durch ein 20 ° -30 ° Guckloch zu versuchen, die über das , was „realistische“ Perspektive auf einem typischen einzelnen Monitor würde bedeuten. Sprechen Sie über Tunnelblick!
Ilmari Karonen
3

Ein Großteil der Wirkung von FOV hängt davon ab, wie schnell Sie sich scheinbar durch die Welt bewegen (es ist immer noch die gleiche Geschwindigkeit; dies ist eine reine Wahrnehmung). Bei einem zu breiten horizontalen FOV scheinen Sie sich sehr schnell zu bewegen, bei einem zu engen FOV scheinen Sie sich sehr langsam zu bewegen. 90 Grad horizontal scheint der "Sweet Spot" zu sein, und der Spieleentwickler kann von dort aus eine gewünschte Bewegungsgeschwindigkeit für einzelne Spiele einstellen.

Es ist auch der Fall, dass 4 mal 90 Grad 360 Grad sind, was ein Kreis ist. Es erscheint sinnvoll, das horizontale FOV so einzustellen, dass es gut auf die vorderen / linken / hinteren / rechten Quadranten abgestimmt ist.

Und schließlich gibt es die alte Kastanie der Vorrangstellung und Trägheit. Ich bin mir nicht sicher, ob Spiele ein vom Spieler einstellbares Sichtfeld vor dem Beben boten, aber das Beben tat es und es war standardmäßig auf 90 Grad horizontal eingestellt. Es ist leicht vorstellbar, dass andere Spiele von dort aus nur um 90 Grad ansteigen.

Es ist anzumerken, dass 90 Grad heutzutage weniger verbreitet sind und Spiele (insbesondere moderne FPS) einen etwas niedrigeren Wert haben - in oder um 80.

Wenn Sie Ihr FOV aspektkorrigieren möchten, können Sie so etwas verwenden (ich behaupte nicht, dass es der einzige oder beste Weg ist, aber er steht im Einklang mit dem FOV-Rechner unter http://www.emsai.net/projects/widescreen / fovcalc / ; dies wird relativ zu einem Basis-Seitenverhältnis von 4: 3 vorausgesetzt (Sie können dies im Aufruf von CalcFovY unten anpassen)

float CalcFovX (float fov_y, float width, float height)
{
    float   a;
    float   y;

    if (fov_y < 1) fov_y = 1;
    if (fov_y > 179) fov_y = 179;

    y = height / tan (fov_y / 360 * M_PI);
    a = atan (width / y);
    a = a * 360 / M_PI;

    return a;
}

float CalcFovY (float fov_x, float width, float height)
{
    float   a;
    float   x;

    if (fov_x < 1) fov_x = 1;
    if (fov_x > 179) fov_x = 179;

    x = width / tan (fov_x / 360 * M_PI);
    a = atan (height / x);
    a = a * 360 / M_PI;

    return a;
}

Dann nenne es wie folgt:

// you should use #define of const instead of magic numbers here, which are just here for illustration purposes in this sample
fov_y = CalcFovY (playerAdjustableFOV, 4, 3); // this is your base aspect that adjusted FOV should be relative to
fov_x = CalcFovX (fov_y, width, height); // this is your actual window width and height

Das berechnete fov_x und fov_y können dann in die folgende perspektivische Matrix (OpenGL-Konvention) eingefügt werden:

1.0f / tan (DEG2RAD (fov_x) * 0.5f),
0,
0,
0,
0,
1.0f / tan (DEG2RAD (fov_y) * 0.5f),
0,
0,
0,
0,
(zFar + zNear) / (zNear - zFar),
-1,
0,
0,
(2.0f * zFar * zNear) / (zNear - zFar),
0

Auf diese Weise erhalten Sie ein an das Seitenverhältnis angepasstes horizontales FOV, das das vertikale FOV unabhängig von Auflösung und Seitenverhältnis beibehält.

Maximus Minimus
quelle