Përmbajtje:

3D Viewer: 4 hapa
3D Viewer: 4 hapa

Video: 3D Viewer: 4 hapa

Video: 3D Viewer: 4 hapa
Video: Human Heart Anatomy (3D Medical Animation) 2024, Korrik
Anonim
3D Viewer
3D Viewer

Përshëndetje! Për të kënaqur interesin tim në programim dhe shpresoj të ndihmoj në kënaqjen tuajin, do të doja t'ju tregoja një Shikues 3D që kam koduar në javascript. Nëse dëshironi të kuptoni më tej lojërat 3D ose madje të krijoni lojën tuaj 3D, ky prototip shikues 3D është i përsosur për ju.

Hapi 1: Teoria

Teoria
Teoria

Për të kuptuar teorinë e këtij shikuesi 3D, thjesht mund të ekzaminoni mënyrën se si e shihni mjedisin tuaj (ndihmon të keni vetëm një burim domethënës të dritës). Vini re se:

  1. Objektet që janë më larg nga ju marrin një pjesë më të vogël të fushës tuaj të shikimit.
  2. Objektet që janë më larg nga burimi i dritës duken me ngjyrë më të errët.
  3. Ndërsa sipërfaqet bëhen më paralele (më pak pingul) me burimin e dritës, ato duken me ngjyrë të errët.

Vendosa të përfaqësoja një fushë vizioni me një mori rreshtash që buronin nga një pikë e vetme (analoge me kokërdhokun e syrit). Ashtu si një top me majë, linjat duhet të ndahen në mënyrë të barabartë për të siguruar që secila pjesë e fushës së shikimit të përfaqësohet në mënyrë të barabartë. Në figurën e mësipërme, vini re se si linjat që vijnë nga topi me thumba bëhen më të ndara ndërsa lëvizin më larg nga qendra e topit. Kjo ndihmon në përfytyrimin e zbatimit të programit të vëzhgimit 1 pasi dendësia e linjave zvogëlohet ndërsa objektet lëvizin më larg nga pika qendrore.

Linjat janë njësia bazë e vizionit në program, dhe secila prej tyre është hartuar në një piksel në ekran. Kur një linjë kryqëzon një objekt, pikseli i tij përkatës ngjyroset bazuar në distancën e tij nga burimi i dritës dhe këndin e tij nga burimi i dritës.

Hapi 2: Teoria e Zbatimit

Teoria e Zbatimit
Teoria e Zbatimit

Për të thjeshtuar programin, burimi i dritës është i njëjtë me pikën qendrore (kokërdhoku: pika nga e cila shihet harta dhe prej nga burojnë linjat). Analogjike me mbajtjen e një drite pranë fytyrës tuaj, kjo eliminon hijet dhe lejon që shkëlqimi i secilit piksel të llogaritet shumë më lehtë.

Programi përdor gjithashtu koordinata sferike, me pikën qendrore të vizionit në origjinë. Kjo mundëson që linjat të gjenerohen lehtë (secila me një theta unike: kënd horizontal dhe phi: kënd vertikal), dhe siguron bazën e llogaritjeve. Linjat me të njëjtën theta janë të hartuara në piksele në të njëjtën rresht. Fis i këndeve përkatëse rritet në secilën rresht pikselësh.

Për të thjeshtuar matematikën, harta 3D përbëhet nga rrafshe me një ndryshore të përbashkët (x, y, ose z të përbashkët), ndërsa dy ndryshoret e tjera jo të zakonshme kufizohen brenda një diapazoni, duke kompletuar përkufizimin e secilit plan.

Për të parë përreth me miun, ekuacionet e programit faktorizojnë një rrotullim vertikal dhe horizontal gjatë shndërrimit midis sistemeve koordinative sferike dhe xyz. Kjo ka efektin e paraformimit të një rrotullimi në grupin e "topit të pikut" të linjave të shikimit.

Hapi 3: Matematikë

Ekuacionet e mëposhtme i mundësojnë programit të përcaktojë se cilat linja ndërpresin çdo objekt dhe informacion në lidhje me çdo kryqëzim. I kam nxjerrë këto ekuacione nga ekuacionet bazë të koordinatave sferike dhe ekuacionet e rrotullimit 2D:

r = distanca, t = theta (këndi horizontal), p = phi (këndi vertikal), A = rrotullimi rreth boshtit Y (rrotullimi vertikal), B = rrotullimi rreth boshtit Z (rrotullimi horizontal)

Kx = (sin (p)*cos (t)*cos (A)+cos (p)*sin (A))*cos (B) -min (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

ndriçimi = Klight/r*(Kx ose Ky ose 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)))

Hapi 4: Programi

Program
Program

Shpresoj se ky prototip i shikuesit 3D ju ndihmoi të kuptoni funksionimin e realiteteve virtuale 3D. Me disa përsosje dhe kodim, ky shikues sigurisht që ka potencialin për t'u vënë në përdorim në zhvillimin e lojërave 3D.

Recommended: