Pelatihan teknologi ray-casting. Bagian 2

Salam, pembaca. Ini adalah bagian kedua dari rangkaian terjemahan Tutorial Ray-Casting Untuk Pengembangan Game dan Tujuan Lainnya. Bagian kedua didahului oleh yang pertama, yang juga bisa dilihat .

Ayo mulai! Ayo lanjutkan!

Batasan pengecoran sinar

Teknologi pengecoran sinar cepat karena menggunakan beberapa kendala geometris. Dalam kebanyakan kasus, dinding selalu tegak lurus dengan lantai (perhatikan bahwa ini tidak berlaku untuk sudut di antara dinding itu sendiri).

Dari sini kita mendapatkan batasan lain: sudut pandang tidak dapat berputar sepanjang sumbu Z (yang kita semua tahu sebagai sumbu aplikasi - kira-kira. Per.). Mengapa? Bayangkan sebaliknya: rotasi diperbolehkan. Dalam hal ini, dinding dapat dimiringkan, dan karenanya, keuntungan menggambar bagian vertikal dari dinding-dinding ini akan hilang. Batasan rotasi adalah salah satu alasan mengapa pengecoran sinar tidak dapat dianggap 3D penuh.

Teknologi ray-casting memungkinkan pemain untuk bergerak maju / mundur dan berbelok ke kanan / kiri, tetapi tidak berputar di sekitar sumbu Z (jenis rotasi ini disebut roll (jika sumbu Y vertikal, maka rotasi di sepanjang itu adalah pitch, dan sepanjang sumbu X adalah yaw, - kira-kira. . per.)).

Langkah 1: Menciptakan Lingkungan

Untuk membuat pekerjaan pengecoran sinar, kami akan membuat pemandangan labirin berdasarkan batasan geometris berikut:

  •   

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

(Terkadang kita mengacu pada sudut antara sinar yang berurutan sebagai sudut antara kolom yang berdekatan. Nanti sudut ini akan digunakan untuk iterasi dalam loop dari satu kolom ke kolom berikutnya. Jarak ke bidang proyeksi akan dibutuhkan untuk penskalaan.)

Akhir dari bagian kedua




All Articles