Sisällysluettelo:
Video: 3D -katseluohjelma: 4 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:03
Hei! Tyydyttääkseni kiinnostukseni ohjelmoida ja toivottavasti auttaa tyydyttämään sinun, haluan näyttää sinulle 3D -esityksen, jonka olen koodannut javascript -ohjelmaan. Jos haluat parantaa ymmärrystäsi 3D -peleistä tai jopa luoda oman 3D -pelisi, tämä 3D -katseluohjelman prototyyppi on täydellinen sinulle.
Vaihe 1: Teoria
Ymmärtääksesi tämän 3D -katseluohjelman teorian voit yksinkertaisesti tutkia tapaa, jolla katsot ympäristöäsi (auttaa vain yksi merkittävä valonlähde). Huomaa, että:
- Kaukana olevat kohteet vievät pienemmän osan näkökentästäsi.
- Valonlähteestä kauempana olevat kohteet näyttävät tummemmilta.
- Kun pinnat muuttuvat yhdensuuntaisiksi (vähemmän kohtisuoraan) valonlähteen kanssa, ne näyttävät tummemmilta.
Päätin edustaa näkökenttää, jossa on joukko viivoja, jotka ovat peräisin yhdestä pisteestä (analoginen silmämunan kanssa). Piikkipallon tavoin linjat on sijoitettava tasaisesti, jotta kaikki näkökentän osat ovat tasapuolisesti edustettuina. Huomaa yllä olevassa kuvassa, kuinka piikkipallosta tulevat linjat ovat kauempana toisistaan, kun ne siirtyvät kauemmas pallon keskeltä. Tämä auttaa visualisoimaan ohjelman havainnon 1 toteutuksen, koska viivojen tiheys pienenee, kun esineet siirtyvät kauemmas keskipisteestä.
Viivat ovat ohjelman perusyksikkö, ja jokainen niistä on yhdistetty näytön pikseliin. Kun viiva leikkaa kohteen, sitä vastaava pikseli värjätään sen etäisyyden perusteella valonlähteestä ja kulmasta valonlähteeseen nähden.
Vaihe 2: Toteutusteoria
Ohjelman yksinkertaistamiseksi valonlähde on sama kuin keskipiste (silmämuna: piste, josta karttaa katsotaan ja mistä viivat tulevat). Samalla tavalla kuin valon pitäminen kasvojen vieressä, tämä poistaa varjot ja mahdollistaa jokaisen pikselin kirkkauden laskemisen paljon helpommin.
Ohjelma käyttää myös pallomaisia koordinaatteja, joiden keskipiste on lähtökohtana. Tämä mahdollistaa viivojen luomisen helposti (jokaisella on ainutlaatuinen teeta: vaakasuora kulma ja phi: pystykulma), ja se tarjoaa laskelmien perustan. Samat teeta -rivit yhdistetään saman rivin pikseleihin. Vastaavien kulmien phis kasvaa jokaisella pikselirivillä.
Matematiikan yksinkertaistamiseksi 3D-kartta koostuu tasoista, joilla on yhteinen muuttuja (yhteinen x, y tai z), kun taas kaksi muuta ei-yleistä muuttujaa rajoittuvat alueelle ja täydentävät kunkin tason määritelmän.
Jos haluat katsoa ympärillesi hiirellä, ohjelman yhtälöt vaikuttavat pystysuoraan ja vaakasuoraan kiertoon pallomaisen ja xyz -koordinaattijärjestelmän välisen muunnoksen aikana. Tämä vaikuttaa kierteen muodostamiseen "piikkipallon" näkölinjoihin.
Vaihe 3: Matematiikka
Seuraavien yhtälöiden avulla ohjelma voi määrittää, mitkä viivat leikkaavat kunkin objektin, ja tiedot kustakin leikkauksesta. Johdoin nämä yhtälöt pallokoordinaattien perusyhtälöistä ja 2D -kiertoyhtälöistä:
r = etäisyys, t = theta (vaakasuora kulma), p = phi (pystykulma), A = kiertyminen Y -akselin ympäri (pystysuuntainen kierto), B = kierto Z -akselin ympäri (vaakasuuntainen kierto)
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
valaistus = Klight/r*(Kx tai Ky tai 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)))
Vaihe 4: Ohjelmoi
Toivon, että tämä 3D -katseluohjelman prototyyppi auttoi sinua ymmärtämään 3D -virtuaalitodellisuuksien toiminnan. Täydentämisen ja koodauksen ansiosta tällä katsojalla on varmasti potentiaalia käyttää 3D -pelikehityksessä.
Suositeltava:
DIY Raspberry Pi Downloadbox: 4 vaihetta
DIY Raspberry Pi Downloadbox: Löydätkö usein itsesi lataamasta suuria tiedostoja, kuten elokuvia, torrentteja, kursseja, TV -sarjoja jne., Niin tulet oikeaan paikkaan. Tässä Instructable -ohjelmassa muuttaisimme Raspberry Pi zero -laitteemme latauskoneeksi. Joka voi ladata minkä tahansa
Akustinen levitaatio Arduino Unon kanssa Askel askeleelta (8 vaihetta): 8 vaihetta
Akustinen levitaatio Arduino Unon kanssa Askel askeleelta (8 vaihetta): ultraäänikaiuttimet L298N DC-naarasadapterin virtalähde urospuolisella dc-nastalla ja analogiset portit koodin muuntamiseksi (C ++)
4G/5G HD -videon suoratoisto DJI Dronesta alhaisella latenssilla [3 vaihetta]: 3 vaihetta
4G/5G HD -videon suoratoisto DJI Dronesta alhaisella latenssilla [3 vaihetta]: Seuraava opas auttaa sinua saamaan live-HD-videovirtoja lähes mistä tahansa DJI-dronesta. FlytOS -mobiilisovelluksen ja FlytNow -verkkosovelluksen avulla voit aloittaa videon suoratoiston droonilta
Pultti - DIY -langaton latauskello (6 vaihetta): 6 vaihetta (kuvilla)
Pultti - DIY -langaton latausyökello (6 vaihetta): Induktiiviset lataukset (tunnetaan myös nimellä langaton lataus tai langaton lataus) on langattoman voimansiirron tyyppi. Se käyttää sähkömagneettista induktiota sähkön tuottamiseen kannettaville laitteille. Yleisin sovellus on langaton Qi -latauslaite
4 vaihetta akun sisäisen vastuksen mittaamiseksi: 4 vaihetta
4 vaihetta akun sisäisen vastuksen mittaamiseksi: Tässä on 4 yksinkertaista vaihetta, joiden avulla voit mitata taikinan sisäisen vastuksen