Grüße, Leser. Dies ist der zweite Teil der Übersetzungsreihe "Ray-Casting-Tutorial für Spieleentwicklung und andere Zwecke". Dem zweiten Teil geht der erste voraus, der ebenfalls angezeigt werden kann .
Lasst uns beginnen! Lass uns weitermachen!
Ray-Casting-Einschränkungen
Die Ray Casting-Technologie ist schnell, da sie einige geometrische Einschränkungen verwendet. In den meisten Fällen stehen die Wände immer senkrecht zum Boden (beachten Sie, dass dies nicht für die Ecken zwischen den Wänden selbst gilt).
Daraus ergibt sich eine weitere Einschränkung: Der Blickwinkel kann sich nicht entlang der Z-Achse drehen (die wir alle als Achse des Applikats kennen - ca. Per.). Warum? Stellen Sie sich das Gegenteil vor: Rotation ist erlaubt. In diesem Fall können die Wände kippen, und dementsprechend geht der Vorteil des Zeichnens vertikaler Schnitte derselben Wände verloren. Die Rotationsbegrenzung ist einer der Gründe, warum das Strahlenwerfen nicht als volles 3D betrachtet werden kann.

Die Ray-Casting-Technologie ermöglicht es dem Spieler, sich vorwärts / rückwärts zu bewegen und sich nach rechts / links zu drehen, aber nicht um die Z-Achse zu drehen (diese Art der Drehung wird als Rollen bezeichnet (wenn die Y-Achse vertikal ist, ist die Drehung entlang der Steigung und entlang der X-Achse Gieren). . per.)).
Schritt 1: Erstellen der Umgebung
Um Ray Casting-Arbeiten zu rendern, erstellen wir eine Labyrinthszene, die auf den folgenden geometrischen Einschränkungen basiert:
64x64x64 ( , , 2. , ). , , , , .

, ( - ), - . .

. , . - .
2.
, , . :
, (FOV - Field Of View),
, . FOV, , . FOV 90° . , . 60°, ( - FOV). , 32 . , , . ( -, : 2.4 / 1.7 = 1.41 - . .).

, - , . , , FOV - . .
, X-, Y- . 3 POV (point of view) .
, - (1, 2), 45 , FOV , . ( 64x64 ).

POV, . - FOV - . - . .
, , . 320 200 - , .. VG .
POV , , .

FOV .
:

, ( ): 320200 (160, 100). " ". - . .
( , , , , ).

FOV 60. 320 , 60° 320 , , 1 60 / 320 . - . .

FOV . , 320 / 2 = 160 : 90°, 60° / 2 = 30° 90° - 30° = 60° . (277), . - . .
:
() = 320200
(160, 100)
= 277
= 60 / 320
(Manchmal wird der Winkel zwischen aufeinanderfolgenden Strahlen als Winkel zwischen benachbarten Spalten bezeichnet. Später wird dieser Winkel verwendet, um innerhalb der Schleife von einer Spalte zur nächsten zu iterieren. Der Abstand zur Projektionsebene ist für die Skalierung erforderlich.)