Tartalomjegyzék:

3D megtekintő: 4 lépés
3D megtekintő: 4 lépés

Videó: 3D megtekintő: 4 lépés

Videó: 3D megtekintő: 4 lépés
Videó: CS 3D Viewer fogászati CT program telepítése lépésről - lépésre 2024, November
Anonim
3D -s megtekintő
3D -s megtekintő

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

Az elmélet
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:

  1. A tőled távolabbi tárgyak a látómező kisebb részét foglalják el.
  2. A fényforrástól távolabbi tárgyak sötétebb színűnek tűnnek.
  3. 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

Végrehajtás elmélete
Végrehajtás elmélete

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

Program
Program

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: