Мазмұны:

3D қарау құралы: 4 қадам
3D қарау құралы: 4 қадам

Бейне: 3D қарау құралы: 4 қадам

Бейне: 3D қарау құралы: 4 қадам
Бейне: Бұл видеоны көрсеніз сіз өз атың ұмытып қаласын 2024, Шілде
Anonim
3D қарау құралы
3D қарау құралы

Сәлеметсіз бе! Бағдарламалауға деген қызығушылығымды қанағаттандыру үшін және сіздің қажеттіліктеріңізді қанағаттандыруға көмектесу үшін мен сізге JavaScript -те кодталған 3D қарау құралын көрсеткім келеді. Егер сіз 3D ойындары туралы түсінігіңізді арттырғыңыз келсе немесе өзіңіздің 3D ойыныңызды жасағыңыз келсе, бұл 3D қарау құралының прототипі сізге өте ыңғайлы.

1 -қадам: Теория

Теория
Теория

Бұл 3D көрерменнің теориясын түсіну үшін сіз айналаңызға қалай қарайтындығыңызды тексере аласыз (бұл тек бір маңызды жарық көзінің болуына көмектеседі). Назар аударыңыз:

  1. Сізден алыста орналасқан объектілер көру аймағының аз бөлігін алады.
  2. Жарық көзінен алыста орналасқан нысандар күңгірт болып көрінеді.
  3. Беттер жарық көзіне параллель (аз перпендикуляр) болған сайын, олар қою түсті болып көрінеді.

Мен көру нүктесін бір нүктеден (көз алмасына ұқсас) тұратын көптеген сызықтармен ұсынуды шештім. Бағаналы шар тәрізді, көру өрісінің әрбір бөлігінің бірдей ұсынылуын қамтамасыз ету үшін сызықтарды біркелкі орналастыру қажет. Жоғарыдағы суретте, шариктен шығатын сызықтар доптың ортасынан алыстаған сайын олардың қалай кеңейетінін байқаңыз. Бұл бағдарламаның 1 бақылауды жүзеге асыруын елестетуге көмектеседі, өйткені объектілер орталық нүктеден алыстаған сайын желілердің тығыздығы төмендейді.

Сызықтар бағдарламадағы негізгі көру бірлігі болып табылады және олардың әрқайсысы дисплейдегі пиксельмен салыстырылады. Сызық объектімен қиылысқанда, оның сәйкес пиксельі жарық көзінен қашықтығы мен жарық көзінен бұрышына қарай боялған.

2 -қадам: Іске асыру теориясы

Іске асыру теориясы
Іске асыру теориясы

Бағдарламаны жеңілдету үшін жарық көзі орталық нүктемен бірдей (көз алмасы: карта қаралатын және сызықтар шыққан нүкте). Жарықты сіздің бетіңіздің жанында ұстауға ұқсас, бұл көлеңкелерді жояды және әр пиксельдің жарықтығын әлдеқайда оңай есептеуге мүмкіндік береді.

Бағдарлама сонымен қатар сфералық координаттарды қолданады, оның бастапқы нүктесінде көру нүктесі болады. Бұл сызықтарды оңай шығаруға мүмкіндік береді (әрқайсысында бірегей тетасы бар: көлденең бұрыш және phi: тік бұрыш) және есептеулердің негізін құрайды. Тетасы бірдей жолдар бір қатардағы пиксельдермен салыстырылады. Пикселдердің әр қатарында сәйкес бұрыштардың фисі жоғарылайды.

Математиканы жеңілдету үшін 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 ойындарын әзірлеуде қолданылуы мүмкін.

Ұсынылған: