Kazalo:

Pregledovalnik 3D: 4 koraki
Pregledovalnik 3D: 4 koraki

Video: Pregledovalnik 3D: 4 koraki

Video: Pregledovalnik 3D: 4 koraki
Video: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, November
Anonim
Pregledovalnik 3D
Pregledovalnik 3D

Zdravo! Da bi zadovoljil svoje zanimanje za programiranje in upam, da bom zadovoljil vaše, bi vam rad pokazal pregledovalnik 3D, ki sem ga kodiral v javascript. Če želite razširiti svoje razumevanje 3D iger ali celo ustvariti lastno 3D igro, je ta prototipni 3D pregledovalnik kot nalašč za vas.

1. korak: Teorija

Teorija
Teorija

Če želite razumeti teorijo tega pregledovalnika 3D, lahko preprosto preučite, kako gledate na svojo okolico (pomaga imeti samo en pomemben vir svetlobe). Upoštevajte, da:

  1. Predmeti, ki so bolj oddaljeni od vas, zasedajo manjši del vašega vidnega polja.
  2. Predmeti, ki so bolj oddaljeni od vira svetlobe, so temnejše barve.
  3. Ker površine postajajo bolj vzporedne (manj pravokotne) na vir svetlobe, so videti temnejše barve.

Odločil sem se, da predstavljam vidno polje s kopico črt, ki izvirajo iz ene same točke (analogno zrklu). Tako kot konico kroglice morajo biti črte enakomerno razporejene, da se zagotovi, da je vsak del vidnega polja enako zastopan. Na zgornji sliki opazite, kako se črte, ki prihajajo iz konice kroglice, bolj oddaljijo, ko se oddaljijo od središča krogle. To pomaga vizualizirati izvedbo programa opazovanja 1, saj se gostota črt zmanjšuje, ko se predmeti odmikajo dlje od središčne točke.

Črte so osnovna enota vida v programu in vsaka je na zaslonu preslikana v slikovno piko. Ko črta seka predmet, je ustrezen piksel obarvan glede na njegovo oddaljenost od vira svetlobe in njegov kot od vira svetlobe.

2. korak: Teorija implementacije

Teorija izvajanja
Teorija izvajanja

Za poenostavitev programa je vir svetlobe enak središčni točki (očesno jabolko: točka, s katere je prikazan zemljevid in od koder izhajajo črte). Podobno kot držanje luči tik ob obrazu odpravlja sence in omogoča veliko lažje izračun svetlosti vsake slikovne pike.

Program uporablja tudi sferične koordinate s središčem vidnega polja pri izhodišču. To omogoča enostavno generiranje črt (vsaka ima edinstven theta: vodoravni kot in phi: navpični kot) in zagotavlja osnovo za izračune. Črte z isto teto so preslikane na slikovne pike v isti vrstici. Phis ustreznih kotov se poveča v vsaki vrstici slikovnih pik.

Za poenostavitev matematike je 3D-zemljevid sestavljen iz ravnin s skupno spremenljivko (skupni x, y ali z), medtem ko sta drugi dve nenavadni spremenljivki omejeni v obsegu, s čimer je dokončana opredelitev vsake ravnine.

Če si želite ogledati z miško, enačbe programa upoštevajo navpično in vodoravno vrtenje med pretvorbo med sferičnimi in xyz koordinatnimi sistemi. To vpliva na prednastavitev rotacije na nizu vidnih linij "spike ball".

3. korak: matematika

Naslednje enačbe omogočajo programu, da določi, katere črte sekajo vsak predmet in informacije o vsakem presečišču. Te enačbe sem izpeljal iz osnovnih enačb sferičnih koordinat in enačb 2D rotacije:

r = razdalja, t = theta (vodoravni kot), p = phi (navpični kot), A = rotacija okoli osi Y (navpična rotacija), B = rotacija okoli osi Z (vodoravna rotacija)

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

osvetlitev = Klight/r*(Kx ali Ky ali 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. korak: Program

Program
Program

Upam, da vam je ta prototipni 3D pregledovalnik pomagal razumeti delovanje 3D navidezne resničnosti. Z nekaj bolj izpopolnjevanjem in kodiranjem ima ta gledalec zagotovo potencial za uporabo pri razvoju 3D iger.

Priporočena: