Агуулгын хүснэгт:
Видео: 3D Viewer: 4 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:05
Сайн уу? Програмчлал хийх сонирхлыг минь хангаж, таны хүслийг хангахад туслахын тулд JavaScript -ээр кодлосон 3D үзэгчийг танд үзүүлэхийг хүсч байна. Хэрэв та 3D тоглоомын талаар илүү их ойлголттой болох эсвэл өөрийн 3D тоглоом бүтээхийг хүсч байвал энэхүү 3D үзэгч загвар нь танд төгс тохирно.
Алхам 1: Онол
Энэхүү 3D үзэгчийн онолыг ойлгохын тулд та хүрээлэн буй орчноо хэрхэн харж байгааг шалгаж үзэх боломжтой (энэ нь зөвхөн нэг чухал гэрлийн эх үүсвэртэй болоход тусална). Үүнийг анхаарна уу:
- Танаас хол байгаа объектууд нь алсын харааны талбайнхаа багахан хэсгийг эзэлдэг.
- Гэрлийн эх үүсвэрээс хол байгаа объектууд бараан өнгөтэй харагддаг.
- Гадаргуу нь гэрлийн эх үүсвэртэй параллель (перпендикуляр багатай) болох тусам бараан өнгөтэй болдог.
Би алсын харааны талбарыг нэг цэгээс (нүдний алимтай төстэй) холбосон олон тооны шугамаар дүрслэхээр шийдсэн. Баяжуулалтын бөмбөг шиг харааны талбайн хэсэг бүрийг адилхан дүрслэн харуулахын тулд мөрүүдийг тэгшхэн байрлуулах шаардлагатай. Дээрх зурган дээр баяжуулалтын бөмбөгнөөс ирж буй шугамууд бөмбөгний төвөөс холдох тусам хэрхэн илүү зайтай болохыг анхаарна уу. Объектууд төв цэгээс холдох тусам шугамын нягтрал буурдаг тул энэ нь програмын ажиглалт 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 тоглоом хөгжүүлэхэд ашиглах боломжтой юм.
Зөвлөмж болгож буй:
Ухаалаг мотоциклийн HUD прототип (алхам алхмаар навигаци хийх гэх мэт): 9 алхам
Ухаалаг мотоциклийн HUD прототип (ээлжлэн навигаци хийх гэх мэт): Сайн байна уу! Энэхүү зааварчилгаа нь миний мотоциклийн дуулга дээр суурилуулах зориулалттай HUD (Heads-Up Display) платформыг хэрхэн бүтээж, бүтээсэн тухай түүх юм. Үүнийг " газрын зураг " уралдааны хүрээнд бичсэн болно. Харамсалтай нь би үүнийг бүрэн дуусгаж чадаагүй
Arduino Uno ашиглан акустик левитаци Алхам алхам (8 алхам): 8 алхам
Arduino Uno-тай акустик Levitation Алхам алхамаар (8 алхам): хэт авианы дууны дамжуулагч L298N Dc эмэгтэй адаптерийн эрэгтэй тэжээлийн тэжээлийн хангамж Arduino UNOBreadboard Энэ нь хэрхэн ажилладаг вэ: Нэгдүгээрт, та кодыг Arduino Uno-д байршуулдаг (энэ нь дижитал төхөөрөмжөөр тоноглогдсон микроконтроллер юм. кодыг хөрвүүлэх аналог портууд (C ++)
DIY Arduino робот гар, Алхам алхам: 9 алхам
DIY Arduino робот гар, алхам алхмаар: Эдгээр заавар нь танд робот гарыг хэрхэн яаж хийхийг зааж өгөх болно
Java Viewer бүхий Arduino Baby Monitor: 8 алхам (зурагтай)
Java Viewer-тэй Arduino Baby Monitor: Өрөөний нөхцөл байдлыг ажиглахын тулд Arduino-д суурилсан олон мэдрэгч бүхий төхөөрөмж бүтээгээрэй. Энэ төхөөрөмж нь чийгшил, температур, хөдөлгөөн, дуу чимээг мэдэрч чаддаг. Arduino -ээс цуваа өгөгдөл хүлээн авдаг java дээр суурилсан үзэгчийг хавсаргав
Headup Web Cam Viewer: 7 алхам
Headup Web Cam Viewer: Саяхан оруулсан бичлэг нь хэрэглэгчид вэб камераа шууд харах боломжийг олгохын тулд арилжааны системийг харсан боловч ярилцаж буй хүнээ харах боломжтой хэвээр байна - Teleprompter style - Энэ бол миний энэ санаа юм. Чухал байхын тулд бүтээхэд хялбар байдаг