Sisukord:
Video: 3D -vaataja: 4 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:49
Tere! Et rahuldada oma huvi programmeerimise vastu ja loodetavasti aidata rahuldada teie oma, tahaksin teile näidata 3D -vaatajat, mille kodeerisin javascripti. Kui soovite 3D -mängudest paremini aru saada või isegi oma 3D -mängu luua, sobib see 3D -vaataja prototüüp teile ideaalselt.
Samm: teooria
Selle 3D -vaataja teooria mõistmiseks võite lihtsalt uurida, kuidas te oma ümbrust vaatate (see aitab ainult ühe olulise valgusallika olemasolul). Märka seda:
- Sinust kaugemal asuvad objektid võtavad väiksema osa teie vaateväljast.
- Valgusallikast kaugemal asuvad objektid tunduvad tumedamad.
- Kui pinnad muutuvad valgusallikaga paralleelsemaks (vähem risti), tunduvad need tumedamad.
Otsustasin kujutada nägemisvälja, kus on hunnik jooni, mis tulenevad ühest punktist (analoogselt silmamunaga). Nagu piikpall, peavad jooned olema ühtlaselt paigutatud, et tagada nägemisvälja iga osa võrdne esindatus. Pange ülaltoodud pildil tähele, kuidas teravikuulist tulevad jooned lähevad palli keskpunktist kaugemale liikudes üksteisest kaugemale. See aitab visualiseerida programmi 1. vaatluse rakendamist, kuna joonte tihedus väheneb, kui objektid liiguvad keskpunktist kaugemale.
Jooned on programmi nägemise põhiühik ja igaüks neist on kaardistatud ekraanil oleva piksliga. Kui joon lõikub objektiga, värvitakse selle vastav piksel, lähtudes selle kaugusest valgusallikast ja nurgast valgusallikast.
2. samm: rakendamise teooria
Programmi lihtsustamiseks on valgusallikas sama, mis keskpunkt (silmamuna: punkt, kust kaarti vaadatakse ja kust jooned pärinevad). Analoogselt valguse hoidmisega otse näo kõrval kõrvaldab see varjud ja võimaldab iga piksli heledust palju lihtsamalt arvutada.
Programm kasutab ka sfäärilisi koordinaate, mille keskpunkt on vaatepunkt. See võimaldab jooni hõlpsalt genereerida (igaühel on ainulaadne teeta: horisontaalnurk ja phi: vertikaalne nurk) ning see on arvutuste alus. Sama teetaga jooned kaardistatakse sama rea piksliteks. Vastavate nurkade phis suureneb igas pikslireas.
Matemaatika lihtsustamiseks koosneb 3D-kaart lennukitest, millel on ühine muutuja (ühine x, y või z), ülejäänud kaks mitte-tavalist muutujat on piiratud vahemikus, täites iga tasapinna määratluse.
Hiirega ringi vaatamiseks arvestavad programmi võrrandid sfäärilise ja xyz -koordinaatsüsteemi vahelise teisendamise ajal vertikaalses ja horisontaalses pöörlemises. Selle tulemuseks on nägemisjoonte komplekti "spike ball" pöörlemise eelvormistamine.
3. samm: matemaatika
Järgmised võrrandid võimaldavad programmil määrata, millised read lõikavad iga objekti ja teavet iga ristmiku kohta. Tuletasin need võrrandid sfääriliste põhikoordinaatide võrranditest ja 2D pöörlemisvõrranditest:
r = kaugus, t = teeta (horisontaalne nurk), p = phi (vertikaalne nurk), A = pöörlemine ümber Y -telje (vertikaalne pöörlemine), B = pöörlemine ümber Z -telje (horisontaalne pöörlemine)
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
valgustus = Klight/r*(Kx või Ky või 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)))
Samm 4: Programmeerimine
Loodan, et see 3D -vaataja prototüüp aitas teil mõista 3D -virtuaalse reaalsuse toimimist. Täiendades ja kodeerides on sellel vaatajal kindlasti potentsiaali 3D mängude arendamisel kasutada.
Soovitan:
Atari punkkonsool beebiga 8 sammu järjestus: 7 sammu (piltidega)
Atari punkkonsool koos beebi 8-astmelise sekveneerijaga: see vaheehitus on kõik-ühes Atari punk-konsool ja beebi 8-astmeline järjestus, mida saate freesida Bantam Tools töölaua PCB-freespingis. See koosneb kahest trükkplaadist: üks on kasutajaliidese (UI) plaat ja teine on utiliit
Akustiline levitatsioon Arduino Unoga samm-sammult (8 sammu): 8 sammu
Akustiline levitatsioon Arduino Uno abil samm-sammult (8 sammu): ultraheliheli muundurid L298N DC-naissoost adapteri toiteallikas isase alalisvoolupistikuga Arduino UNOBreadboard ja analoogpordid koodi teisendamiseks (C ++)
4G/5G HD -video otseülekanne DJI droonilt madala latentsusega [3 sammu]: 3 sammu
4G/5G HD-video otseülekanne DJI droonilt madala latentsusega [3 sammu]: Järgnev juhend aitab teil saada HD-kvaliteediga otseülekandeid peaaegu igalt DJI droonilt. FlytOSi mobiilirakenduse ja veebirakenduse FlytNow abil saate alustada drooni video voogesitust
Polt - DIY juhtmeta laadimise öökell (6 sammu): 6 sammu (piltidega)
Bolt - DIY juhtmeta laadimise öökell (6 sammu): Induktiivsed laadimised (tuntud ka kui juhtmeta laadimine või juhtmeta laadimine) on traadita jõuülekande tüüp. See kasutab kaasaskantavatele seadmetele elektrit pakkumiseks elektromagnetilist induktsiooni. Kõige tavalisem rakendus on Qi traadita laadimisst
4 sammu aku sisemise takistuse mõõtmiseks: 4 sammu
4 sammu aku sisemise takistuse mõõtmiseks: Siin on 4 lihtsat sammu, mis aitavad mõõta taigna sisemist takistust