فهرست مطالب:

نمایشگر سه بعدی: 4 مرحله
نمایشگر سه بعدی: 4 مرحله

تصویری: نمایشگر سه بعدی: 4 مرحله

تصویری: نمایشگر سه بعدی: 4 مرحله
تصویری: نه کاری که نمیدونستی گوشیت انجام میده | 9 کاربرد مخفی گوشی 2024, جولای
Anonim
نمایشگر سه بعدی
نمایشگر سه بعدی

سلام! برای برآوردن علاقه من به برنامه نویسی و امیدوارم بتوانم رضایت شما را برآورده کنم ، می خواهم یک Viewer 3D را که در جاوا اسکریپت کدگذاری کرده ام به شما نشان دهم. اگر می خواهید درک خود را از بازی های سه بعدی بیشتر کنید یا حتی بازی سه بعدی خود را ایجاد کنید ، این نمونه اولیه نماینده 3D برای شما مناسب است.

مرحله 1: نظریه

نظریه
نظریه

برای درک نظریه این بیننده سه بعدی ، می توانید به سادگی نحوه مشاهده محیط اطراف خود را بررسی کنید (داشتن تنها یک منبع نور مهم کمک می کند). توجه کنید که:

  1. اجسامی که از شما دورتر هستند بخش کوچکتری از میدان دید شما را اشغال می کنند.
  2. اجسامی که از منبع نور دورتر هستند رنگ تیره تری به نظر می رسند.
  3. با افزایش موازی سطوح (کمتر عمود) با منبع نور ، رنگ آنها تیره تر به نظر می رسد.

من تصمیم گرفتم یک میدان دید را با مجموعه ای از خطوط ناشی از یک نقطه واحد (مشابه کره چشم) نشان دهم. مانند یک توپ سنبله ، خطوط باید به طور مساوی از هم فاصله داشته باشند تا اطمینان حاصل شود که هر قسمت از میدان بینایی به طور برابر نمایش داده شده است. در تصویر بالا ، توجه کنید که خطوط ناشی از توپ سنبله با فاصله گرفتن بیشتر از مرکز توپ چگونه فاصله بیشتری پیدا می کنند. این امر به تجسم اجرای برنامه مشاهده 1 کمک می کند زیرا تراکم خطوط کاهش می یابد زیرا اجسام از نقطه مرکزی دورتر می شوند.

خطوط واحد اصلی دید در برنامه هستند و هر کدام بر روی پیکسل روی صفحه نمایش ترسیم می شوند. وقتی خطی از یک جسم عبور می کند ، پیکسل مربوطه بر اساس فاصله آن از منبع نور و زاویه آن از منبع نور رنگ آمیزی می شود.

مرحله 2: تئوری پیاده سازی

تئوری پیاده سازی
تئوری پیاده سازی

برای ساده سازی برنامه ، منبع نور همان نقطه مرکزی است (کره چشم: نقطه ای که نقشه از آن مشاهده می شود و خطوط از آنجا نشأت می گیرند). با نگه داشتن نور در کنار صورت ، این کار سایه ها را از بین می برد و اجازه می دهد تا روشنایی هر پیکسل بسیار راحت تر محاسبه شود.

این برنامه همچنین از مختصات کروی استفاده می کند و نقطه مرکزی دید در مبدا است. این امر باعث می شود خطوط به راحتی تولید شوند (هر کدام دارای یک تتا منحصر به فرد: زاویه افقی و phi: زاویه عمودی) ، و اساس محاسبات را فراهم می کند. خطوطی با تتا یکسان در پیکسل های یک ردیف ترسیم می شوند. phis زوایای متناظر در هر ردیف پیکسل افزایش می یابد.

برای ساده سازی ریاضی ، نقشه سه بعدی از صفحات با متغیر مشترک (x ، y یا z مشترک) تشکیل شده است ، در حالی که دو متغیر غیر متداول دیگر در محدوده ای محدود شده و تعریف هر صفحه را کامل می کند.

برای مشاهده اطراف با ماوس ، معادلات برنامه در یک چرخش عمودی و افقی در حین تبدیل بین سیستم های مختصات کروی و xyz نقش دارد. این امر باعث ایجاد پیش چرخش در مجموعه خطوط بینایی "توپ سنبله" می شود.

مرحله سوم: ریاضی

معادلات زیر برنامه را قادر می سازد که تعیین کند کدام خط ها هر شی را قطع می کنند و اطلاعات مربوط به هر تقاطع. من این معادلات را از معادلات مختصات کروی اساسی و معادلات چرخش دو بعدی استخراج کردم:

r = فاصله ، t = theta (زاویه افقی) ، p = phi (زاویه عمودی) ، A = چرخش در محور Y (چرخش عمودی) ، B = چرخش در محور Z (چرخش افقی)

Kx = (sin (p)*cos (t)*cos (A)+cos (p)*sin (A))*cos (B) -inin (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: برنامه

برنامه
برنامه

امیدوارم این نمونه اولیه نمایشگر سه بعدی به شما در درک عملکرد واقعیت های مجازی سه بعدی کمک کرده باشد. این برنامه بیننده با کمال و کدگذاری بیشتر مطمئناً می تواند در توسعه بازی های سه بعدی مورد استفاده قرار گیرد.

توصیه شده: