Isi kandungan:

Pemapar 3D: 4 Langkah
Pemapar 3D: 4 Langkah

Video: Pemapar 3D: 4 Langkah

Video: Pemapar 3D: 4 Langkah
Video: Cara Kerja Mesin 4 Tak hanya 5 MENIT PAHAM 2024, November
Anonim
Pemapar 3D
Pemapar 3D

Helo! Untuk memuaskan minat saya dalam pengaturcaraan dan semoga membantu memuaskan minat anda, saya ingin menunjukkan kepada anda 3D Viewer yang saya kodkan dalam javascript. Sekiranya anda ingin meningkatkan pemahaman anda mengenai permainan 3D atau membuat permainan 3D anda sendiri, penampil 3D prototaip ini sangat sesuai untuk anda.

Langkah 1: Teori

Teori
Teori

Untuk memahami teori pemapar 3D ini, anda hanya dapat memeriksa cara anda melihat persekitaran anda (sangat membantu hanya mempunyai satu sumber cahaya yang ketara). Perhatikan bahawa:

  1. Objek yang berada jauh dari anda mengambil bahagian yang lebih kecil dari bidang penglihatan anda.
  2. Objek yang jauh dari sumber cahaya kelihatan lebih gelap warnanya.
  3. Oleh kerana permukaan menjadi lebih selari (kurang tegak lurus) dengan sumber cahaya, permukaannya kelihatan lebih gelap.

Saya memutuskan untuk mewakili bidang penglihatan dengan sekumpulan garis yang berasal dari satu titik (serupa dengan bola mata). Seperti bola lonjakan, garis perlu dijarakkan secara merata untuk memastikan setiap bahagian medan penglihatan sama. Dalam gambar di atas, perhatikan bagaimana garis yang berasal dari bola lonjakan menjadi lebih jauh ketika mereka bergerak lebih jauh dari pusat bola. Ini membantu memvisualisasikan pelaksanaan program pemerhatian 1 kerana ketumpatan garis menurun ketika objek bergerak lebih jauh dari titik tengah.

Garis adalah unit dasar penglihatan dalam program, dan masing-masing dipetakan ke piksel pada layar. Apabila garis memotong objek, pikselnya berwarna berdasarkan jaraknya dari sumber cahaya dan sudut dari sumber cahaya.

Langkah 2: Teori Pelaksanaan

Teori Pelaksanaan
Teori Pelaksanaan

Untuk mempermudah program, sumber cahaya adalah sama dengan titik tengah (bola mata: titik dari mana peta dilihat dan dari mana garis itu berasal). Sesuai dengan memegang cahaya tepat di sebelah wajah anda, ini menghilangkan bayang-bayang dan membolehkan kecerahan setiap piksel dikira dengan lebih mudah.

Program ini juga menggunakan koordinat sfera, dengan titik pusat penglihatan pada asalnya. Ini membolehkan garis dihasilkan dengan mudah (masing-masing dengan theta unik: sudut mendatar dan phi: sudut menegak), dan memberikan asas pengiraan. Garis dengan theta yang sama dipetakan ke piksel dalam baris yang sama. Fisik sudut yang sepadan meningkat di setiap baris piksel.

Untuk mempermudah matematik, peta 3D terdiri daripada satah dengan pemboleh ubah sepunya (sepunya x, y, atau z), sementara dua pemboleh ubah tidak biasa yang lain terbatas dalam jarak, menyelesaikan definisi setiap satah.

Untuk melihat-lihat dengan tetikus, faktor persamaan program dalam putaran menegak dan mendatar semasa penukaran antara sistem koordinat sfera dan xyz. Ini mempunyai kesan membentuk putaran pada rangkaian garis penglihatan "bola lonjakan".

Langkah 3: Matematik

Persamaan berikut membolehkan program menentukan garis mana yang memotong setiap objek dan maklumat mengenai setiap persimpangan. Saya memperoleh persamaan ini dari persamaan koordinat sfera asas dan persamaan putaran 2D:

r = jarak, t = theta (sudut mendatar), p = phi (sudut menegak), A = putaran mengenai paksi Y (putaran menegak), B = putaran mengenai paksi Z (putaran mendatar)

Kx = (sin (p) * cos (t) * cos (A) + cos (p) * sin (A)) * cos (B) -sin (p) * sin (t) * sin (B)

Ky = (sin (p) * cos (t) * cos (A) + cos (p) * sin (A)) * sin (B) + sin (p) * sin (t) * cos (B)

Kz = -sin (p) * cos (t) * sin (A) + cos (p) * cos (A)

x = r * Kx

y = r * Ky

z = r * Kz

r ^ 2 = x ^ 2 + y ^ 2 + z ^ 2

pencahayaan = Klight / r * (Kx atau Ky atau Kz)

p = arccos ((x * sin (A) * cos (B) + y * sin (A) * sin (B) + z * cos (A)) / r)

t = arccos ((x * cos (B) + y * sin (B) -p * sin (A) * cos (p)) / (r * cos (A) * sin (p)))

Langkah 4: Program

Program
Program

Saya harap penampil 3D prototaip ini membantu anda memahami cara kerja realiti maya 3D. Dengan beberapa penyempurnaan dan pengekodan yang lebih baik, penonton ini pasti berpotensi untuk digunakan dalam pengembangan permainan 3D.

Disyorkan: