Агуулгын хүснэгт:

3D Viewer: 4 алхам
3D Viewer: 4 алхам

Видео: 3D Viewer: 4 алхам

Видео: 3D Viewer: 4 алхам
Видео: Murottal Juz Amma Al Fatihah Animation 3D Learning Letters Arabic Alphabet | Abata 2024, Арваннэгдүгээр
Anonim
3D үзэгч
3D үзэгч

Сайн уу? Програмчлал хийх сонирхлыг минь хангаж, таны хүслийг хангахад туслахын тулд JavaScript -ээр кодлосон 3D үзэгчийг танд үзүүлэхийг хүсч байна. Хэрэв та 3D тоглоомын талаар илүү их ойлголттой болох эсвэл өөрийн 3D тоглоом бүтээхийг хүсч байвал энэхүү 3D үзэгч загвар нь танд төгс тохирно.

Алхам 1: Онол

Онол
Онол

Энэхүү 3D үзэгчийн онолыг ойлгохын тулд та хүрээлэн буй орчноо хэрхэн харж байгааг шалгаж үзэх боломжтой (энэ нь зөвхөн нэг чухал гэрлийн эх үүсвэртэй болоход тусална). Үүнийг анхаарна уу:

  1. Танаас хол байгаа объектууд нь алсын харааны талбайнхаа багахан хэсгийг эзэлдэг.
  2. Гэрлийн эх үүсвэрээс хол байгаа объектууд бараан өнгөтэй харагддаг.
  3. Гадаргуу нь гэрлийн эх үүсвэртэй параллель (перпендикуляр багатай) болох тусам бараан өнгөтэй болдог.

Би алсын харааны талбарыг нэг цэгээс (нүдний алимтай төстэй) холбосон олон тооны шугамаар дүрслэхээр шийдсэн. Баяжуулалтын бөмбөг шиг харааны талбайн хэсэг бүрийг адилхан дүрслэн харуулахын тулд мөрүүдийг тэгшхэн байрлуулах шаардлагатай. Дээрх зурган дээр баяжуулалтын бөмбөгнөөс ирж буй шугамууд бөмбөгний төвөөс холдох тусам хэрхэн илүү зайтай болохыг анхаарна уу. Объектууд төв цэгээс холдох тусам шугамын нягтрал буурдаг тул энэ нь програмын ажиглалт 1 -ийн хэрэгжилтийг төсөөлөхөд тусалдаг.

Шугам нь програмын харааны үндсэн нэгж бөгөөд тэдгээр нь тус бүрийг дэлгэцэн дээр пикселээр дүрсэлдэг. Шугам объектыг огтлох үед түүний харгалзах пикселийг гэрлийн эх үүсвэрээс алслагдсан зай, гэрлийн эх үүсвэрээс авсан өнцгийг үндэслэн өнгөөр будна.

Алхам 2: Хэрэгжүүлэх онол

Хэрэгжүүлэх онол
Хэрэгжүүлэх онол

Хөтөлбөрийг хялбарчлахын тулд гэрлийн эх үүсвэр нь төвийн цэгтэй ижил байна (нүдний хараа: газрын зургийг үзэх цэгүүд, шугамууд хаанаас үүсч байгаа). Нүүрнийхээ дэргэд гэрэл асаахтай адилаар энэ нь сүүдрийг арилгаж, пиксел бүрийн тод байдлыг илүү хялбар тооцоолох боломжийг олгодог.

Хөтөлбөр нь бөмбөрцөг хэлбэрийн координатыг ашигладаг бөгөөд харааны төв цэг нь гарал үүсэлтэй байдаг. Энэ нь шугамыг хялбархан үүсгэх боломжийг олгодог (тус бүр нь өвөрмөц тета: хэвтээ өнцөг ба phi: босоо өнцөг) бөгөөд тооцооллын үндэс суурь болдог. Ита ижил мөрүүдийг нэг эгнээний пикселүүдээр зурдаг. Пикселийн мөр бүрт харгалзах өнцгийн phis нэмэгддэг.

Математикийг хялбарчлахын тулд 3D газрын зургийг нийтлэг хувьсагчтай хавтгайуудаас бүрдүүлдэг (нийтлэг x, y, эсвэл z), нөгөө хоёр нийтлэг бус хувьсагч нь муж дотор хязгаарлагдаж, хавтгай бүрийн тодорхойлолтыг бөглөнө.

Хулганаар эргэн тойрноо харахын тулд бөмбөрцөг ба xyz координатын системийг хөрвүүлэх явцад програмын тэгшитгэл нь босоо ба хэвтээ эргэлтэнд нөлөөлдөг. Энэ нь "баяжуулалтын бөмбөг" алсын харааны шугамын эргэлтийг урьдчилан хийх нөлөөтэй юм.

Алхам 3: Математик

Дараах тэгшитгэлүүд нь объект тус бүрийг огтлох шугамууд болон огтлолцол бүрийн талаархи мэдээллийг тодорхойлох боломжийг олгодог. Би эдгээр тэгшитгэлийг бөмбөрцгийн координатын үндсэн тэгшитгэл ба 2D эргэлтийн тэгшитгэлээс авсан болно.

r = зай, t = тета (хэвтээ өнцөг), p = phi (босоо өнцөг), A = Y тэнхлэгийн эргэн тойрон эргэлт (босоо эргэлт), B = Z тэнхлэгийн эргэлт (хэвтээ эргэлт)

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

гэрэлтүүлэг = Klight/r*(Kx эсвэл Ky эсвэл 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: Хөтөлбөр

Хөтөлбөр
Хөтөлбөр

Энэхүү 3D үзэгч загвар нь 3D виртуал бодит байдлын үйл ажиллагааг ойлгоход тусалсан гэж найдаж байна. Илүү төгс төгөлдөр, кодчилол хийснээр энэхүү үзэгч нь 3D тоглоом хөгжүүлэхэд ашиглах боломжтой юм.

Зөвлөмж болгож буй: