Satura rādītājs:
Video: 3D skatītājs: 4 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:57
Sveiki! Lai apmierinātu manu interesi par programmēšanu un, cerams, palīdzētu apmierināt jūsu, es vēlos jums parādīt 3D skatītāju, ko esmu iekodējis javascript. Ja vēlaties uzlabot savu izpratni par 3D spēlēm vai pat izveidot savu 3D spēli, šis 3D skatītāja prototips ir lieliski piemērots jums.
1. solis: teorija
Lai saprastu šī 3D skatītāja teoriju, varat vienkārši izpētīt veidu, kā jūs skatāties uz savu apkārtni (tas palīdz, ja ir tikai viens nozīmīgs gaismas avots). Ievērojiet, ka:
- Objekti, kas atrodas tālāk no jums, aizņem mazāku redzes lauka daļu.
- Objekti, kas atrodas tālāk no gaismas avota, šķiet tumšāki.
- Tā kā virsmas kļūst arvien paralēlākas (mazāk perpendikulāras) gaismas avotam, tās šķiet tumšākas.
Es nolēmu attēlot redzes lauku ar virkni līniju, kas izriet no viena punkta (līdzīgi acs ābolam). Tāpat kā smailes bumbiņai, līnijām jābūt vienmērīgi izvietotām, lai nodrošinātu, ka katra redzes lauka daļa ir vienādi pārstāvēta. Iepriekš redzamajā attēlā ievērojiet, kā līnijas, kas nāk no smailes lodītes, attālinās no bumbas centra. Tas palīdz vizualizēt programmas 1. novērojuma īstenošanu, jo līniju blīvums samazinās, objektiem attālinoties no centra punkta.
Līnijas ir programmas redzes pamatvienība, un katra no tām displejā tiek kartēta uz pikseļu. Kad līnija krusto objektu, tā atbilstošais pikselis tiek iekrāsots, pamatojoties uz tā attālumu no gaismas avota un leņķi no gaismas avota.
2. solis: ieviešanas teorija
Lai vienkāršotu programmu, gaismas avots ir tāds pats kā centra punkts (acs ābols: punkts, no kura tiek skatīta karte un no kurienes nāk līnijas). Analoģiski gaismas turēšanai tieši pie sejas, tas novērš ēnas un ļauj daudz vieglāk aprēķināt katra pikseļa spilgtumu.
Programmā tiek izmantotas arī sfēriskās koordinātas, kuru centrā ir redzes punkts. Tas ļauj viegli izveidot līnijas (katrai no tām ir unikāla teta: horizontālais leņķis un phi: vertikālais leņķis) un nodrošina aprēķinu pamatu. Līnijas ar vienu un to pašu tetu tiek kartētas uz pikseļiem vienā rindā. Katrā pikseļu rindā palielinās atbilstošo leņķu phis.
Lai vienkāršotu matemātiku, 3D karti veido plaknes ar kopīgu mainīgo (kopīgs x, y vai z), bet pārējie divi neparastie mainīgie ir ierobežoti, aizpildot katras plaknes definīciju.
Lai paskatītos apkārt ar peli, programmas vienādojumi ņem vērā vertikālu un horizontālu rotāciju, konvertējot starp sfēriskajām un xyz koordinātu sistēmām. Tas rada rotācijas iepriekšēju veidošanos redzes līniju "smaiļbumbas" komplektā.
3. solis: matemātika
Šie vienādojumi ļauj programmai noteikt, kuras līnijas krusto katru objektu, un informāciju par katru krustojumu. Es atvasināju šos vienādojumus no pamata sfērisko koordinātu vienādojumiem un 2D rotācijas vienādojumiem:
r = attālums, t = teta (horizontālais leņķis), p = phi (vertikālais leņķis), A = rotācija ap Y asi (vertikālā rotācija), B = rotācija ap Z asi (horizontālā rotācija)
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
apgaismojums = Klight/r*(Kx vai Ky vai 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)))
4. solis: programma
Es ceru, ka šis 3D skatītāja prototips palīdzēja jums izprast 3D virtuālās realitātes darbību. Izmantojot vēl dažas pilnveidošanas un kodēšanas iespējas, šim skatītājam noteikti ir potenciāls, ko izmantot 3D spēļu izstrādē.
Ieteicams:
ESP32 COVID19 STATUSA SKATĪTĀJS: 4 soļi
ESP32 COVID19 STATUSA SKATĪTĀJS: Šis projekts vienkārši iegūst COCID19 statusu json formātā un parāda to OLED
Filmas negatīvais skatītājs un pārveidotājs: 8 soļi (ar attēliem)
Filmu negatīvais skatītājs un pārveidotājs: es atklāju, ka nekavējoties jāspēj ātri apskatīt un ierakstīt vecos filmu negatīvus. Man bija jāsaskaras ar vairākiem simtiem … Es atzīstu, ka manam viedtālrunim ir dažādas lietotnes, bet es nevarēju iegūt apmierinošus rezultātus, tāpēc es to izmantoju
Datora ekrāna rentgena skatītājs: 4 soļi
Datora ekrāna rentgena skatītājs: Šī ir vienkārša metode, kā datoru izmantot kā gaismas kasti rentgena staru skatīšanai. Kaulu laušana tikko sasniegusi jaunu jautrības līmeni
Fotoattēlu skatītājs Rokas sildītājs: 5 soļi
Fotoattēlu skatītājs plaukstas sildītājs: es nopirku vienu no šiem atslēgu piekariņu fotoattēlu skatītājiem, tas bija tikai viens desmitnieks, tāpēc es domāju: "jā, kāpēc ne, iespējams, varētu to uzjaukt kaut ko foršu". Tātad tas parādās un pirmā lieta, ko es daru tas? Izvelciet to un ievietojiet plaukstas sildītājā
Digitālais 3D attēlu skatītājs - "The DigiStereopticon": 6 soļi (ar attēliem)
Digitālais 3D attēlu skatītājs - "The DigiStereopticon": stereoskopiskā fotografēšana ir izkritusi. Iespējams, tas ir saistīts ar faktu, ka cilvēkiem nepatīk valkāt īpašas brilles, lai skatītu ģimenes momentuzņēmumus. Šeit ir mazs jautrs projekts, ko varat izveidot mazāk nekā dienā, lai izveidotu 3D attēlu