Mundarija:
Video: 3D tomoshabin: 4 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:28
Salom! Dasturlashga bo'lgan qiziqishimni qondirish va umid qilamanki, sizning xohishingizni qondirishga yordam berish uchun men sizga JavaScript -da kodlangan 3D Viewer dasturini ko'rsatmoqchiman. Agar siz 3D o'yinlar haqidagi tushunchangizni yanada kengaytirmoqchi bo'lsangiz yoki hatto o'zingizning 3D o'yiningizni yaratmoqchi bo'lsangiz, bu 3D tomoshabin prototipi siz uchun juda mos keladi.
1 -qadam: nazariya
Ushbu 3D tomoshabin nazariyasini tushunish uchun siz atrofga qanday qarashingizni tekshirishingiz mumkin (bu faqat bitta muhim yorug'lik manbasiga ega bo'lishga yordam beradi). E'tibor bering:
- Sizdan uzoqroq bo'lgan ob'ektlar ko'rish maydonining kichik qismini egallaydi.
- Yorug'lik manbasidan uzoqroq bo'lgan ob'ektlar quyuqroq rangda ko'rinadi.
- Sirtlar yorug'lik manbaiga parallel (kamroq perpendikulyar) bo'lganda, ular quyuqroq rangda ko'rinadi.
Men ko'rish maydonini bitta nuqtadan (ko'z olmasiga o'xshash) bir qator chiziqlar bilan ifodalashga qaror qildim. Boshoq to'pi singari, ko'rish maydonining har bir qismi teng ravishda ifodalanishi uchun chiziqlar bir -biridan teng taqsimlanishi kerak. Yuqoridagi rasmda, to'pning o'rtasidan uzoqlashganda, boshdan to'p keladigan chiziqlar qanday qilib bir -biridan uzoqlashib ketganiga e'tibor bering. Bu dasturning 1 -kuzatishning bajarilishini tasavvur qilishga yordam beradi, chunki ob'ektlar markaziy nuqtadan uzoqlashganda chiziqlar zichligi kamayadi.
Chiziqlar dasturning asosiy ko'rish birligi bo'lib, ularning har biri displeyda piksel bilan xaritalanadi. Chiziq ob'ektni kesib o'tganda, unga mos keladigan piksel yorug'lik manbasidan masofa va yorug'lik manbasidan burchakka qarab ranglanadi.
2 -qadam: Amalga oshirish nazariyasi
Dasturni soddalashtirish uchun yorug'lik manbai markaziy nuqta bilan bir xil (ko'z olmasi: xarita ko'riladigan va chiziqlar kelib chiqadigan nuqta). Yorug'likni yuzingiz yonida ushlab turishga o'xshab, bu soyalarni yo'q qiladi va har bir pikselning yorqinligini osonroq hisoblash imkonini beradi.
Dastur, shuningdek, sferik koordinatalardan foydalanadi, uning markazida ko'rish nuqtasi joylashgan. Bu chiziqlarni osonlikcha yaratishga imkon beradi (har birida yagona teta: gorizontal burchak va phi: vertikal burchak) va hisob -kitoblar uchun asos bo'ladi. Xuddi shu teta bilan chiziqlar bir qatorda piksellar bilan xaritada joylashtirilgan. Har bir piksel qatorida mos keladigan burchaklar phi oshadi.
Matematikani soddalashtirish uchun 3D xaritasi umumiy o'zgaruvchiga ega bo'lgan tekisliklardan tashkil topgan (umumiy x, y yoki z), qolgan ikkita umumiy bo'lmagan o'zgaruvchi esa har bir tekislikning ta'rifini to'ldirgan holda diapazonda cheklangan.
Sichqoncha bilan atrofga nazar tashlasak, sharsimon va xyz koordinata tizimlari o'rtasida konversiya paytida dasturning tenglamalari vertikal va gorizontal aylanishga ta'sir qiladi. Bu "boshoqli to'p" ko'rish chizig'iga oldindan aylanish ta'sirini ko'rsatadi.
3 -qadam: Matematika
Quyidagi tenglamalar dasturga har bir ob'ekt kesishgan chiziqlar va har bir kesishish haqidagi ma'lumotlarni aniqlash imkonini beradi. Men bu tenglamalarni asosiy sferik koordinata tenglamalari va 2D aylanish tenglamalaridan oldim:
r = masofa, t = teta (gorizontal burchak), p = phi (vertikal burchak), A = Y o'qi atrofida aylanish (vertikal aylanish), B = Z o'qi atrofida aylanish (gorizontal aylanish)
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
yorug'lik = Klight/r*(Kx yoki Ky yoki 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 -qadam: Dastur
Umid qilamanki, bu 3D tomoshabin prototipi sizga 3D virtual haqiqat ishini tushunishga yordam berdi. Ko'proq takomillashtirish va kodlash bilan, bu tomoshabin, albatta, 3D o'yinlarini ishlab chiqishda foydalanish imkoniyatiga ega.
Tavsiya:
To'g'ridan-to'g'ri raqamli sintez (DDS) chipli MIDI tomonidan boshqariladigan qadam dvigateli: 3 qadam
To'g'ridan-to'g'ri raqamli sintez (DDS) chipli MIDI tomonidan boshqariladigan qadamli dvigatel: Siz hech qachon mini-loyihaga aylanishingiz kerak degan yomon fikrga keldingizmi? Xo'sh, men AD9833 to'g'ridan -to'g'ri raqamli sintez (DDS) moduli yordamida musiqa yaratishga qaratilgan Arduino Due uchun chizgan eskiz bilan o'ynab yurardim … va bir paytlar men o'yladim
Arduino uchun qadam tezligini boshqarish menyusi: 6 qadam
Arduino uchun qadam tezligini boshqarish menyusi: Bu SpeedStepper kutubxonasi qadam dvigatelining tezligini nazorat qilish uchun AccelStepper kutubxonasining qayta yozilishi. SpeedStepper kutubxonasi sizga belgilangan dvigatel tezligini o'zgartirishga imkon beradi, so'ngra xuddi shu algoritm yordamida yangi belgilangan tezlikka tezlashadi/sekinlashadi
Qanday qilib qadam taymerini yasash mumkin?: 3 qadam (rasmlar bilan)
Qanday qilib qadam taymerini yasash mumkin ?: Men ko'plab sport turlarida yaxshi qatnashardim: yurish, yugurish, velosiped haydash, badminton o'ynash va hokazo. Men tez orada sayohat qilishni yaxshi ko'raman. Xo'sh, qorin qornimga qarang …… Xo'sh, baribir, men mashg'ulotlarni qaytadan boshlashga qaror qildim. Qanday uskunani tayyorlashim kerak?
Filmning salbiy tomoshabin va konvertori: 8 qadam (rasmlar bilan)
Filmni salbiy tomoshabin va konvertor: Men eski film negativlarini tezda ko'rish va yozib olish imkoniyatiga ega bo'ldim. Menda bir nechta yuzlab masalalar bor edi … Men aqlli telefonim uchun turli xil ilovalar borligini tan olaman, lekin men qoniqarli natijalarga erisha olmadim, shuning uchun men shunday qilaman
Steampunk Voltaik ark tomoshabin (aqldan ozgan olimlar uchun ajralmas): 6 qadam (rasmlar bilan)
Steampunk Voltaik ark tomoshabin (aqldan ozgan olimlar uchun ajralmas): Aziz do'stlar, izdoshlar va DIY ixlosmandlari! "Steampunk Oriental Night Light-Nur-al-Andalus" loyihasining ta'rifi oxirida e'lon qilganimdek, bir necha kun oldin , bu erda ikkinchi loyiha (texnik jihatdan egizak akasi) keladi