Mündəricat:
Video: 3D Viewer: 4 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:48
Salam! Proqramlaşdırma marağımı təmin etmək və inşallah sizin maraqlarınızı təmin etmək üçün sizə JavaScript ilə kodladığım bir 3D Viewer göstərmək istərdim. 3D oyunları anlayışınızı daha da inkişaf etdirmək və ya hətta öz 3D oyununuzu yaratmaq istəyirsinizsə, bu 3D görüntüləyici prototip sizin üçün idealdır.
Addım 1: nəzəriyyə
Bu 3D görüntüleyicinin nəzəriyyəsini başa düşmək üçün ətrafınıza necə baxdığınızı araşdıra bilərsiniz (yalnız bir əhəmiyyətli işıq mənbəyinə sahib olmağa kömək edir). Diqqət yetirin:
- Sizdən daha uzaq olan obyektlər görmə sahənizin daha kiçik bir hissəsini tutur.
- İşıq mənbəyindən uzaq olan cisimlər daha qaranlıq görünür.
- Səthlər işıq mənbəyinə daha paralel (daha az dik) olduqda, daha qaranlıq rəngdə görünürlər.
Bir nöqtədən (göz kürəsinə bənzər) qaynaqlanan bir dəstə xətti olan bir görmə sahəsini təmsil etmək qərarına gəldim. Bir sünbül topu kimi, görmə sahəsinin hər bir hissəsinin bərabər şəkildə təmsil olunmasını təmin etmək üçün xətlərin bərabər şəkildə ayrılması lazımdır. Yuxarıdakı şəkildə, sünbül topundan gələn xətlərin topun mərkəzindən uzaqlaşdıqca necə daha çox aralığa çıxdığına diqqət yetirin. Bu, cisimlərin mərkəz nöqtəsindən uzaqlaşdıqca xətlərin sıxlığı azaldığından proqramın müşahidə 1 -in həyata keçirilməsini görselleştirmeye kömək edir.
Xəttlər, proqramdakı əsas görmə vahididir və hər biri ekranda bir piksellə müqayisə olunur. Bir xətt bir obyektlə kəsişdiyi zaman, ona uyğun olan piksel, işıq mənbəyindən uzaqlığına və işıq mənbəyinə olan bucağına görə rənglənir.
Addım 2: İcra nəzəriyyəsi
Proqramı sadələşdirmək üçün işıq mənbəyi mərkəzi nöqtə ilə eynidir (göz kürəsi: xəritənin baxıldığı və xətlərin qaynaqlandığı nöqtə). Üzünüzün yanındakı bir işığa bənzər şəkildə, bu kölgələri yox edir və hər pikselin parlaqlığını daha asan hesablamağa imkan verir.
Proqram eyni zamanda sferik koordinatlardan istifadə edir, görmə mərkəzinin başlanğıc nöqtəsindədir. Bu, xətlərin asanlıqla yaradılmasına imkan verir (hər birinin özünəməxsus tetası: üfüqi bucaq və phi: şaquli bucaq) və hesablamaların əsasını təşkil edir. Eyni teta olan xətlər, eyni cərgədəki piksellərlə müqayisə olunur. Müvafiq açıların phisləri hər bir piksel sətri boyunca artır.
Riyazi hesablamanı asanlaşdırmaq üçün, 3D xəritəsi ümumi dəyişən (ümumi x, y və ya z) olan təyyarələrdən ibarətdir, digər iki qeyri-ümumi dəyişən isə hər bir müstəvinin tərifini tamamlayaraq bir sıra daxilində məhdudlaşdırılır.
Siçan ilə ətrafa baxmaq üçün, sferik və xyz koordinat sistemləri arasında çevrilmə zamanı proqramın tənlikləri şaquli və üfüqi dönmə faktorudur. Bu, "sünbül topu" görmə xətləri üzərində bir fırlanma hazırlamaq təsirinə malikdir.
Addım 3: Riyaziyyat
Aşağıdakı tənliklər, hər bir obyektin hansı xətləri kəsdiyini və hər kəsişmə haqqında məlumatı təyin etməyə imkan verir. Bu tənlikləri əsas sferik koordinat tənliklərindən və 2D fırlanma tənliklərindən əldə etdim:
r = məsafə, t = teta (üfüqi bucaq), p = phi (şaquli açı), A = Y oxu ətrafında fırlanma (şaquli fırlanma), B = Z oxu ətrafında fırlanma (üfüqi fırlanma)
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
işıqlandırma = Klight/r*(Kx və ya Ky və ya 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)))
Addım 4: Proqram
Ümid edirəm ki, bu 3D görüntüleyicinin prototipi, 3D virtual reallıqların işini başa düşməyinizə kömək etdi. Bir az daha mükəmməlləşdirmə və kodlaşdırma ilə bu tamaşaçı, əlbəttə ki, 3D oyun inkişafında istifadə etmək potensialına malikdir.
Tövsiyə:
Arduino Avtomobil Ters Park Diqqət Sistemi - Addım -addım: 4 addım
Arduino Avtomobil Ters Park Diqqət Sistemi | Addım-addım: Bu layihədə, Arduino UNO və HC-SR04 Ultrasonik Sensoru istifadə edərək sadə bir Arduino Car Reverse Park Sensor Dövrü dizayn edəcəyəm. Bu Arduino əsaslı Avtomobil Ters siqnal sistemi Avtonom Naviqasiya, Robot Aralığı və digər diapazonlarda istifadə edilə bilər
Addım -addım PC qurulması: 9 addım
Addım -addım PC Bina: Təchizat: Təchizat: MotherboardCPU & CPU soyuducu PSU (Enerji təchizatı vahidi) Yaddaş (HDD/SSD) RAMGPU (tələb olunmur) Kassa Alətləri: Tornavida ESD bilərzik/mattermal pasta/aplikator
Arduino Uno ilə Akustik Levitasiya Addım-addım (8 addım): 8 addım
Arduino Uno ilə Akustik Levitasiya Adım Adım (8 addım): ultrasəs səs ötürücüləri L298N Dc dişi qadın adapteri kişi dc pinli Arduino UNOBreadboard Bu necə işləyir: Əvvəlcə Arduino Uno-ya kod yükləyirsiniz (rəqəmsal ilə təchiz edilmiş bir mikro nəzarətçidir) və kodu çevirmək üçün analog portlar (C ++)
Java Viewer ilə Arduino Baby Monitor: 8 Addım (Şəkillərlə birlikdə)
Java Viewer ilə Arduino Körpə Monitoru: Otaqdakı şəraiti müşahidə etmək üçün Arduino əsaslı çoxlu sensor qurğusu yaradın. Bu cihaz rütubəti, temperaturu, hərəkəti və səsi hiss edə bilir. Arduino -dan serial məlumatları alan java əsaslı bir izləyici əlavə olunur
Headup Web Cam Viewer: 7 addım
Headup Web Cam Viewer: Son bir giriş, istifadəçilərin hələ də danışdıqları adamı - Teleprompter tərzini - hələ də görə bilmədikləri halda birbaşa veb kameralarına baxmalarına imkan verən bir kommersiya sisteminə baxdı - Bu fikir mənim fikrimdir. Əsas olanı qurmaq asandır