INHOUDSOPGAWE:
Video: 3D -kyker: 4 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:27
Hallo! Om my belangstelling in programmering te bevredig en hopelik die uwe te bevredig, wil ek u 'n 3D -kyker wys wat ek in javascript gekodeer het. As u u begrip van 3D -speletjies wil verbeter of selfs u eie 3D -speletjie wil skep, is hierdie prototipe 3D -kyker perfek vir u.
Stap 1: Die teorie
Om die teorie van hierdie 3D -kyker te verstaan, kan u eenvoudig die manier waarop u u omgewing sien, ondersoek (dit help om slegs een belangrike bron van lig te hê). Neem waar dat:
- Voorwerpe wat verder van u af is, beslaan 'n kleiner deel van u gesigsveld.
- Voorwerpe wat verder van die ligbron af is, lyk donkerder van kleur.
- Namate oppervlaktes meer parallel (minder loodreg) met die ligbron word, lyk dit donkerder van kleur.
Ek het besluit om 'n visieveld voor te stel met 'n klomp lyne wat uit 'n enkele punt kom (analoog aan die oogbal). Net soos 'n spykelbal, moet die lyne eweredig gespasieer wees om te verseker dat elke deel van die sigveld ewe veel verteenwoordig word. Op die foto hierbo, let op hoe die lyne wat van die spike -bal af kom, meer gespasieer word namate hulle verder van die middel van die bal af wegbeweeg. Dit help om die implementering van waarneming 1 deur die program te visualiseer, aangesien die digtheid van lyne afneem namate voorwerpe verder van die middelpunt af wegbeweeg.
Die lyne is die basiese visie -eenheid in die program, en dit word elk op 'n pixel op die skerm gekarteer. As 'n lyn 'n voorwerp sny, word die ooreenstemmende pixel daarvan gekleur op grond van die afstand van die ligbron en die hoek van die ligbron.
Stap 2: Implementeringsteorie
Om die program te vereenvoudig, is die ligbron dieselfde as die middelpunt (oogbal: punt waarvandaan die kaart gekyk word en waar die lyne vandaan kom). Net soos om 'n lig langs jou gesig te hou, elimineer dit skaduwees en kan die helderheid van elke pixel baie makliker bereken word.
Die program gebruik ook sferiese koördinate, met die middelpunt van visie by die oorsprong. Dit stel die lyne in staat om maklik gegenereer te word (elk met 'n unieke theta: horisontale hoek en phi: vertikale hoek), en bied die basis van berekeninge. Lyne met dieselfde theta word in dieselfde ry in pixels geplaas. Die phis van ooreenstemmende hoeke neem toe oor elke ry pixels.
Om die wiskunde te vereenvoudig, bestaan die 3D-kaart uit vliegtuie met 'n gemeenskaplike veranderlike (gewone x, y of z), terwyl die ander twee nie-algemene veranderlikes binne 'n reeks beperk word, wat die definisie van elke vlak voltooi.
Om met die muis rond te kyk, neem die vergelykings van die program 'n vertikale en horisontale rotasie mee tydens die omskakeling tussen sferiese en xyz -koördinaatstelsels. Dit het die gevolg dat 'n rotasie vooraf op die stel "spike ball" se stel lyne gevorm word.
Stap 3: Wiskunde
Die volgende vergelykings stel die program in staat om te bepaal watter lyne elke voorwerp sny en inligting oor elke kruising. Ek het hierdie vergelykings afgelei van die basiese sferiese koördinaatvergelykings en die 2D rotasievergelykings:
r = afstand, t = theta (horisontale hoek), p = phi (vertikale hoek), A = rotasie om Y -as (vertikale rotasie), B = rotasie om Z -as (horisontale rotasie)
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
beligting = Klight/r*(Kx of Ky of 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)))
Stap 4: Programmeer
Ek hoop dat hierdie prototipe 3D -kyker u gehelp het om die werking van virtuele 3D -realiteite te verstaan. Met nog meer vervolmaking en kodering, het hierdie kyker beslis die potensiaal om in 3D -spelontwikkeling gebruik te word.
Aanbeveel:
Spelontwerp in vyf stappe: 5 stappe
Spelontwerp in fliek in 5 stappe: Flick is 'n baie eenvoudige manier om 'n speletjie te maak, veral iets soos 'n legkaart, visuele roman of avontuurlike spel
Gesigsopsporing op Raspberry Pi 4B in 3 stappe: 3 stappe
Gesigsopsporing op Raspberry Pi 4B in 3 stappe: in hierdie instruksies gaan ons gesigsopsporing uitvoer op Raspberry Pi 4 met Shunya O/S met behulp van die Shunyaface-biblioteek. Shunyaface is 'n biblioteek vir gesigherkenning/opsporing. Die projek het ten doel om die vinnigste opsporing en herkenningssnelheid te bereik met
DIY Vanity Mirror in eenvoudige stappe (met LED -strookligte): 4 stappe
DIY Vanity Mirror in eenvoudige stappe (met behulp van LED Strip Lights): In hierdie pos het ek 'n DIY Vanity Mirror gemaak met behulp van die LED strips. Dit is regtig cool, en u moet dit ook probeer
Arduino Halloween Edition - Zombies pop -out skerm (stappe met foto's): 6 stappe
Arduino Halloween Edition - Zombies pop -out skerm (stappe met foto's): wil u u vriende skrik en 'n skreeu geraas maak tydens Halloween? Of wil u net 'n goeie grap maak? Hierdie pop-up skerm van Zombies kan dit doen! In hierdie instruksies sal ek u leer hoe u maklik Zombies kan spring deur Arduino te gebruik. Die HC-SR0
Speel Doom op u iPod in 5 maklike stappe !: 5 stappe
Speel Doom op u iPod in 5 maklike stappe !: 'n Stap-vir-stap gids oor hoe u Rockbox op u iPod kan dubbellaai om Doom en tientalle ander speletjies te speel. Dit is iets baie maklik om te doen, maar baie mense staan nog steeds verbaas as hulle sien hoe ek op my iPod doom speel en deurmekaar raak met die instruksies