Tartalomjegyzék:
Videó: 3D megtekintő: 4 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:43
Helló! A programozás iránti érdeklődésem kielégítésére és remélhetőleg a tiéd kielégítésére szeretném megmutatni neked a 3D Viewer programot, amelyet javascript -ben kódoltam. Ha szeretné jobban megérteni a 3D -s játékokat, vagy akár saját 3D -s játékot szeretne létrehozni, ez a 3D -s prototípus tökéletes az Ön számára.
1. lépés: Az elmélet
Ennek a 3D -s nézőnek az elméletének megértéséhez egyszerűen megvizsgálhatja, hogyan látja a környezetét (segít, ha csak egy jelentős fényforrás van). Vegye figyelembe, hogy:
- A tőled távolabbi tárgyak a látómező kisebb részét foglalják el.
- A fényforrástól távolabbi tárgyak sötétebb színűnek tűnnek.
- Ahogy a felületek párhuzamosabbak (kevésbé merőlegesek) a fényforrással, sötétebb színűnek tűnnek.
Úgy döntöttem, hogy egy látómezőt ábrázolok, egy csomó sorból, amelyek egyetlen pontból erednek (a szemgolyóhoz hasonlóan). A tüskegolyóhoz hasonlóan a vonalakat egyenletesen kell elhelyezni, hogy a látómező minden része egyenlően jelenjen meg. A fenti képen figyelje meg, hogy a tüskegolyóból érkező vonalak távolabb kerülnek egymástól, amikor távolabb kerülnek a labda közepétől. Ez segít vizualizálni a program 1. megfigyelésének megvalósítását, mivel a vonalak sűrűsége csökken, amikor a tárgyak távolabb kerülnek a középponttól.
A vonalak a program alapvető látási egységei, és mindegyikük egy pixelre van leképezve a kijelzőn. Amikor egy vonal metszi a tárgyat, a hozzá tartozó pixel a fényforrástól való távolsága és a fényforrástól való szöge alapján színeződik.
2. lépés: Végrehajtási elmélet
A program egyszerűsítése érdekében a fényforrás megegyezik a középponttal (szemgolyó: pont, ahonnan a térképet nézik, és ahonnan a vonalak származnak). Annak analógjához hasonlóan, hogy a fényt közvetlenül az arca mellett tartja, ez kiküszöböli az árnyékokat, és sokkal könnyebben kiszámítja az egyes képpontok fényerejét.
A program gömbkoordinátákat is használ, a látómező középpontja az eredet. Ez lehetővé teszi a vonalak egyszerű előállítását (mindegyik egyedi tétával: vízszintes szög és phi: függőleges szög), és számítások alapját képezi. Az azonos tétával rendelkező sorokat ugyanabban a sorban lévő képpontokra képezik le. A megfelelő szögek phis -ja minden képpontsorban nő.
A matematika egyszerűsítése érdekében a 3D-s térkép egy közös változójú (közös x, y vagy z) síkokból áll, míg a másik két nem gyakori változó egy tartományon belül van, ezzel befejezve az egyes síkok definícióját.
Ahhoz, hogy körülnézzen az egérrel, a program egyenletei függőleges és vízszintes elforgatásban vesznek részt a gömb- és xyz -koordináta -rendszerek közötti konverzió során. Ez azt eredményezi, hogy a forgatást előkészíti a látóvonalak "tüskegolyó" -halmazán.
3. lépés: Matematika
A következő egyenletek lehetővé teszik a program számára, hogy meghatározza, hogy mely vonalak metszik az egyes objektumokat, és információkat az egyes metszéspontokról. Ezeket az egyenleteket az alapvető gömbkoordináta -egyenletekből és a 2D forgási egyenletekből származtattam:
r = távolság, t = théta (vízszintes szög), p = phi (függőleges szög), A = forgás az Y tengely körül (függőleges forgás), B = forgás a Z tengely körül (vízszintes forgás)
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
világítás = Klight/r*(Kx vagy Ky vagy 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. lépés: Programozás
Remélem, hogy ez a 3D -s megtekintő prototípus segített megérteni a 3D virtuális valóság működését. Néhány további tökéletesítéssel és kódolással ez a néző minden bizonnyal képes felhasználni a 3D -s játékfejlesztésben.
Ajánlott:
DC - DC feszültség Lépés lekapcsoló mód Buck feszültségátalakító (LM2576/LM2596): 4 lépés
DC-DC feszültség Lépés lekapcsoló üzemmód Buck feszültségátalakító (LM2576/LM2596): A rendkívül hatékony bakkonverter készítése nehéz feladat, és még a tapasztalt mérnököknek is többféle kivitelre van szükségük, hogy a megfelelőt hozzák létre. egy DC-DC áramátalakító, amely csökkenti a feszültséget (miközben növeli
Akusztikus levitáció az Arduino Uno-val Lépésről lépésre (8 lépés): 8 lépés
Akusztikus lebegés az Arduino Uno-val Lépésről lépésre (8 lépés): ultrahangos hangátvivők L298N Dc női adapter tápegység egy egyenáramú tűvel Arduino UNOBreadboard és analóg portok a kód konvertálásához (C ++)
Élő 4G/5G HD videó streamelés DJI drónról alacsony késleltetéssel [3 lépés]: 3 lépés
Élő 4G/5G HD videó streaming a DJI Drone-tól alacsony késleltetéssel [3 lépés]: Az alábbi útmutató segít abban, hogy szinte bármilyen DJI drónról élő HD minőségű videó streameket kapjon. A FlytOS mobilalkalmazás és a FlytNow webes alkalmazás segítségével elindíthatja a videó streamingjét a drónról
Bolt - DIY vezeték nélküli töltő éjszakai óra (6 lépés): 6 lépés (képekkel)
Bolt - DIY vezeték nélküli töltés éjszakai óra (6 lépés): Az induktív töltés (más néven vezeték nélküli töltés vagy vezeték nélküli töltés) a vezeték nélküli áramátvitel egyik típusa. Elektromágneses indukciót használ a hordozható eszközök áramellátásához. A leggyakoribb alkalmazás a Qi vezeték nélküli töltő
Számítógép-képernyő röntgen-megtekintő: 4 lépés
Számítógép-képernyő röntgennézegető: Ez egy egyszerű módszer a számítógép fénykeretként való használatára a röntgensugarak megtekintésére. A csonttörés a szórakozás új szintjét érte el