Mundarija:

3D tomoshabin: 4 qadam
3D tomoshabin: 4 qadam

Video: 3D tomoshabin: 4 qadam

Video: 3D tomoshabin: 4 qadam
Video: AYOL NECHA YOSHIDA ALOQAGA O'CH BO'LADI. MAXFIY MALUMOT.. 2024, Iyul
Anonim
3D tomoshabin
3D tomoshabin

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

Nazariya
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:

  1. Sizdan uzoqroq bo'lgan ob'ektlar ko'rish maydonining kichik qismini egallaydi.
  2. Yorug'lik manbasidan uzoqroq bo'lgan ob'ektlar quyuqroq rangda ko'rinadi.
  3. 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

Amalga oshirish nazariyasi
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

Dastur
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: