seyed hossein Tafakh
seyed hossein Tafakh
خواندن ۵ دقیقه·۳ سال پیش

از حرکت روی یک خط تا روش کار عکس های سه بعدی


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

یکی از چیزایی که من خیلی دوست دارم هندسه هست .
من عاشق نگاه کردن به دیتا به شکل مسائل هندسی هستم، چیزی که دارم دربارش مینویسم یک نگرش به دیتا هست بر پایه ریاضی .

فکر کنید یک خط داریم و یک موجود داریم که روی این خط حرکت میکنه.
برای راحتی اسمش رو میزاریم جلی :


خب اینم جلی . بزارید یه خط بکشیم:

اینی که میبینید جلی هست توی یه دنیای یک بعدی و برای حرکت توی دنیاش فقط میتونه جلو بره یا بیاد عقب و وقتی حرکت میکنه یکی جابیجا میشه

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

----به این موضوع میگن کانولوشن توی ریاضی . بزارید جلی رو یک خونه حرکت بدیم.

حالا جلی میدونه که خونه x+1 یه دشمن توش هست.



اتفاق جالبی توی دنیای یک بعدی نمیفته ، بیاید یک بعد اضافه کنیم.

چیزی که از قبل داشتیم x بود الان y رو اضافه میکنیم.

برای بالا و پایین رفتن نیاز هست به اندازه y بریم بالا یا پایین و برای چپ و راست رفتن نیاز هست x تا جابجا بشیم . برای مثال:
y=y+1
x=x+1
این حرکت زیر رو تعریف میکنه:

و برای کانلوشن و خوندن اطلاعات اطرافش اینجوری میشه :

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

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

این درواقع همون سیستم x , y دوره راهنمایی هست .همونجور که قبلا یاد گرفتیم همیشه لازم نیست که یک عدد رفت جلو یا یه عدد رفت عقب و میشه کمی هم جابجا شد ، مثلا فقط 25% مقدار از یک قدم کامل . حالا دیگه فقط لازمه موقعیت نقطه رو ذخیره کنیم برای این کار هم نیاز به یک نقطه مرجع داریم که همهی نقاط رو بشه از اون مشخص کرد . مثل عکس زیر :

حالا یه مشکل پیش میاد اینکه جلی فقط میتونه خونه های کنارش رو ببینه و این به درد ما نمیخوره چون نمیتونه محلول رو ببینه پس نگاهش رو عوض میکنیم و میایم دورش یه دایره میکشیم تا جلی بتونه به معنای واقعی توی دنیای دو بعدی نگاه کنه :

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



سه بعدی:
اگر متصور بشیم با خوردن اون اکسیر جلی میتونه یه بعد دیگه به خودش اضافه کنه اون وقت میرسیم به یه جهان سه بعدی و یکم داستان اینجا سخت میشه ، چون قبل از این همش رو تو مدرسه یاد گرفتیم .
بیاید متصور بشیم که الان جلی توی یه دنیای سه بعدی هست و نیاز هست خودش رو تعریف کنه ، اولین چیزی که بهش نیاز داره عدد بعد سوم برای موقعیتش هست . میتونیم از نماد z استفاده کنیم و عدد یک رو بهش بدیم.

تصویر بالا یک کره هست که نشون دهنده موقعیت جلی هست اگر برد دیدش یک باشه.

اما کلی این داستان از نظر مهندسی باگ داره ، یکیش اینکه جلی موجود تک بعدی هست و حجم نداره و فقط یک نقطست ، دوم اینکه اگر حجم هم داشته باشه چطور نشونش بدیم؟! ، خود اینکه چطور باید نشون داده بشه یک مساله مهم هست چون بعضی از این اشکال سه بعدی توی ریاضیات تعریف میشن کاملا هم منطقی بنظر میان اما نمیشه توی دنیای واقعی کشیدشون و به شدت سخت میشه،

برای حل این موضوع توی دنیای ریاضی مهندس ها میان و یه کلک میزنن و یک مثلث تشکیل میده و هر مثلث رو یک واحد از یک شکل در نظر میگیرن و اینجوری جلوی خیلی از باگ ها رو میگیرن و مسئله رو حل میکنن

هر مثلث یک واحد تشکیل دهنده
هر مثلث یک واحد تشکیل دهنده

این نگاه به مسئله سه بعدی به ما موتورهای بازی سازی رو داد و کمکمون کرد بتونیم جلوه های ویژه بسازیم برای فیلمهامون اما توی یک مسئله به شدت عقب نگهمون داشته و اون دنیای VR , AR هست چون انجام محساباتی مثل بازگشت نور حاصل از برخورد به هر مثلث شاید توی دنیای تمام دیجیتال راحت باشه اما پیاده سازی اون توی دنیای واقعی به مراتب سخت تر هست چون باید منبع نور شناخته بشه و داینامیک محاسبه بشه و این به شدت سخت هست

ولی روشی هست که داره اروم وارد میشه به دنیای سه بعدی و اون نگاه کردن به هر ذره به شکل یک پیکسل هست و ساخت اون حجم سه بعدی از پیکسل های مختلف ساخته میشه.

در کل این تکنولوژی دوباره در حال ترند شدن هست و الان یکی از داغترین مباحث دنیای کامپیوتر هست و افرادی مثل دکتر Michael Bronstein در حال کار کردن توی این زمینه هستند ، حتما کاراشون رو ببنید.

ممنون که خوندین این مطلب رو ، اگر سوالی داشتید توی نظرات بنویسید ، من مشکلی ندارم برای جواب دادن ، حتما جواب میدم .

تکنولوژیکامپیوتردانش
شاید از این پست‌ها خوشتان بیاید