تبليغاتX
ساخت بازیهای سه بعدی رایانه ای

سلام دوستان خوبم.
همونطور که قول داده بودم، امروز، قسمت دوم مقاله ورود به دنیای سه بعدی کامپیوتر رو براتون روی وبلاگ گذاشتم.
امروز کمی بیشتر وارد درون کارت گرافیکی میشیم.
اکثر ماها می دونیم CPU چیه و تقریباً چیکار می کنه. ولی شاید کمتر کسی اسم GPU رو شنیده باشه.
با اینکه توی کامپیوتر تقریباً اکثر ما ها هست و الان داره روی کارت گرافیکی ما فعاليت می کنه.
اگه دلتون خواست بیشتر بدونین در مورد GPU می تونین از این سایت استفاده کنین :

http://en.wikipedia.org/wiki/Graphics_processing_unit

 

بهتره یه سری به تاریخچه کارت گرافیکی بزنیم :
کامپیوتر های اولیه که بوحود اومده بودند برای پردازش تصاویر در اونها و انتقال آنها به Monitor ، سخت افزارهایی روی برد کامپیوتر تعبیه شده بود که معادل کارت های گرافیکی امروز بود. ولی اونها فقط می تونستند تصاویری رو که بهشون ارسال می شه به مونیتور انتقال بدن و نمایش بدن، در واقع عمل Buffering اطلاعات مربوط به صفحه نمایش رو انجام می دادند. یعنی یه محدوده ای از حافظه بهشون داده می شد و اون سخت افزار عیناً اون اطلاعات رو می زاشت روی صفحه مونیتور. اینکار رو به خوبی انجام می دادند. البته کمی سرعتشون کم بود اما نه به اندازه ای که چشم متوجه بشه.
برای اینکه تصاویر متعددی پشت سر هم نمایش داده بشه و ما بتونیم روی مونیتور اطلاعات خودمون رو طوری ببینیم که هيچ گونه کندی رو متوجه نشیم، این سخت افزار لازم بود تا رابط بین پردازنده داخلی سیستم و نمايشگر (Monitor) باشه.
بعدها که دنیای جدید کامپیوتر های امروزی (تقریباً بعد از سال 1995) وارد بازار شدنددیگه کارت گرافیکی ها فقط برای انتقال داده از پردازنده به صفحه نمایش طراحی نشده بودند. و اين زمان بود که شتاب دهنده های سه بعدی وارد بازار شدند. و این شروع دنیای سه بعدی ویژوال سریع، برای کامپیوتر ها بود.
حالا ببینیم این شتاب دهنده های سه بعدی که روی کارت گرافیکی نصب شده اند به غیر از انتقال اطلاعات به روی صفحه نمايش مونیتور چه کار دیگه ای می تونند انجام بدند.
قبل از وجود این شتاب دهنده ها اگه ما می خواستیم یه محیط سه بعدی رو شبیه سازی بکنیم به طوری که مثلا یه توپ رو طوری طراحی کنیم که اگه ماوس رو بگیری و بکشی توپ هم از مرکز بچرخه و حالتی رو شبیه سازی کنیم که انگار توپ حول یکی از محور ها دوران می کنه، باید در زبان هایی مثل C++ اینکار رو انجام می دادیم که کلی هم مشکل بود و الانم هست.
ولی بعد از ورود شتاب دهنده های سه بعدیکه روی کارت گرافیکی بود اوضاع کمی فرق کرد. همونطور که می دونیم CPU بلده دو تا عدد رو جمع کنه با تفریق کنه و ... خلاصه اعمالی هست که می تونه انجام بده و از لحاظ سخت افزاری روی اون تعبیه شده.
درست شبیه این اتفاق ها توی کارت گرافیکی هم می افته الان دیگه کارت های گرافیکی برای خودشون توانایی هایی دارن. مثلا می تونه دو تا متغيير از نوع ماتریس های 64 در 64 رو بگیره و اونها رو باهم ضرب برداری یا جمع و ... بکنه. این اعمال با سرعت خیلی بالایی در GPU انجام می شه. و به دلیل همین کارها و توانایی های به این قسمت GPU یا همون واحد پردازش گرافیکی گفته می شه.
توانایی های زیادی داره و می تونیم از جمله اونها به موارد زیر اشاره کنیم.
می تونیم توی کارت گرافیکی با نور ها و اجسام به نحو خیلی جالبی برخورد کنیم.
جالب ترین امکانی که شاید کمتر کسی در هنگام خرید کارت گرافیکی به اون توجه می کنه Shader ها هستن. که الان توی بازار فکر می کنم کارت های گرافیکی با پشتیبانی از Shader2.X وجود داره کارت من XFX5500 هستش که از shader 1.1 ساپورت می کنه.
من وقتی برای اولین بار با
Shader ها مواجه شدم و با نحوه کار اونها آشنا شدم، خیلی ذوق زده شدم.
در مورد Shader ها بعداً کلی بحث خواهیم کرد.
حالا تقریباً بطور کلی با GPU آشنا شدیم و فهمیدیم که چی هست و کجا هست . چیکار می کنه.
همونطور که می بینین توی این مقاله زیاد به شکل تخصصی در مورد GPU توضيح داده نشد.. سعی می کنم تا مطالب بطور کلی و قابل درک برای هممون باشن تا دید ها رو اصلاح کنیم نه اینکه واقعاً بخوایم یه GPU طراحی کنیم. البته اگر از دوستان کسی بود که خواست بیشتر بدونه من کاملاً خوشحال می شم اطلاعاتم رو در اختیارش بزارم..
بعداً اگر عمری باقی بود، حتماً بحث تخصصی تر هم در اين زمینه خواهیم داشت.

حالا سوالی که پيش می آد اينه که خوب، حالا فهمیدیم GPU چیه و چيکار می کنه. چطوری باهاش کار کنیم ؟!!!
برای کار با GPU باید زبونش رو دونست. زبانهای رابط وجود دارن که کار رو برای ما آسون می کنن. چون واقعاً کار مستقیم با GPU خیلی خیلی سخته.
یکی از محيط هایی که می شه به دنیای 3D کارت گرافیکی وارد شد و براش برنامه نوشت VS.NET هست که با استفاده از DirectX sdk انجام می شه. OpenGL هم مجموعه ای از API ها رو برامون فراهم می کنه که بتونیم با کارت گرافیکی صحبت کنیم و براش برنامه بنویسیم. بهتره بدونیم که اینها چه فرقی باهم دارن و آیا به عير از اینها Solution های دیگه ای هم برای برنامه نویسی برای کارت گرافیکی هست یا نه؟
در جواب به این سوال که آیا به غیر از این راهها راه دیگه ای هم برای برنامه نویسی برای کارت گرافیکی هست یا نه، باید بگم که بله هست. ولی پرطرفدارترین و توانمندترین ها این ها هستند.

و اما اینکه چه فرقی باهم دارن؟ اول اینکه DirectX یک نرم افزاره که روی سیستم های عامل ویندور نصب می شه و یک نرم افزار شتاب دهنده سه بعدی هست که کار کارت گرافیکی رو کنترل می کنه. برای اجرای نرم افزارهای سه بعدی که با DirectX SDK نوشته شدند حتماً باید این نرم افزار نصب باشه و معمولاً روی سیستم عامل Windows خوب کار می کنه. ( من تا حالا نسخه DirectX تحت سایر سیستم عامل ها مثل Linux رو تست نکردم ببینم وجود داره یا نه. اگر کسی بدونه خوشحال می شم بگه ) . ولی برنامه هایی که با توابع API مربوط به OpenGL نوشته می شن معمولاً مستقل از سیستم عامل و نیاز به سایر نرم افزار ها کار می کنن. البته به این معنی نیست که برای اجرا به هیچ چیزی نیاز نداره. بعداً مفصل بررسی می کنیم.

هفته بعد که میام با یه مقاله عملی و کار با DirectX میام. و ورود به دنیای برنامه نویسی سه بعدی رو با DirectX تجربه خواهیم کرد.

موفق باشین. فعلاً
نظر هم که نمی دین. 

+ نوشته شده در  پنجشنبه 19 اردیبهشت1387ساعت 16:36  توسط محمد نورآئین  | 

با سلام خدمت دوستان عزیزم.
من هم اجازه می خوام قبل از هر چیز، مثل محمد عزیزم خودم رو معرفی کنم.
من، المیرا شفیعی، 21 سالمه ( که البته کم مونده 22 تمام بشم) دانشجوی رشته ریاضی دانشگاه پیام نور تبریز هستم. متاهلم و همسرم قبلاً خودشو معرفی کرده :-)
و اما هدف من از شروع به فعالیت در این وبلاگ چیه؟
خوب منم مثل همسرم، علاقه زیادی به 3D کار کردن دارم و مدتی می شه که کار کردن با 3DSMax رو شروع کردم و به نظر خودم پيشرفت خوبی داشتم. ولی اینم می دونم که راه درازی رو پيش رو دارم. راستشو بخواین اولین باری که محمد به من اسمم رو که با 3DMax کار کرده بود هدیه داد، این نرم افزار برام خیلی جالب اومد، Material ها و Light هایی که در اون بکار برده بود، به صحنه یک زیبایی فوق العاده ای بخشیده بود و بعد وقتی پیش من 3DMax رو باز کرد و شروع به کار کردن کرد و در حین کار کردنش دوست داشت چیزهایی هم به من یاد بده. این دوست داشتن محمد باعث رغبت من به سمت 3D شد و من خودم هم ازش خواستم که هر موقع وقت کرد به من یاد بده و آموزش من شروع شد. :-) و تا اينکه روز Valentine به من دو جلد کتاب 3DMax9 هدیه داد و باعث شد که قدم های من قویتر بشه. تا اینکه مشغله کاری محمد زیاد شد و من هم دوست داشتم تند تر و تند تر یاد بگیرم. این شد که برای پیشرفت سریعتر در این زمینه تصمیم گرفتم از کلاس های بیرون هم استفاده کنم و این بود شروع کار من با 3DSMax :-) خوب همه یه جوری شروع می کنن دیگه ...!!!
وقتی محمد این وبلاگ رو راه اندازی کرد از منم دعوت کرد که باهم این وبلاگ رو اداره کنیم و تمام آموخته هام رو در قالب مقاله هایی در این وبلاگ بنویسم تا هر فرد علاقمند به آموزش 3DSMax به جای دادن هزینه های کلان از این وبلاگ استفاده کنه.
من تمام تلاشم رو برای پربار بودن مطالب خواهم کرد و خوشحالم که می تونم قدمی در این زمینه برمی دارم و به دوستانم کمکی کرده و از کمک های اونا هم بهره مند می شم.
روز شنبه منتظر اولین مثاله من در این زمینه باشید و مطمئن باشید که Copy نخواهد بود.
به امید پيشرفت همگیمان در 3D

دوستدارتان : المیرا شفیعی
+ نوشته شده در  سه شنبه 17 اردیبهشت1387ساعت 23:4  توسط المیرا شفیعی  | 

سلام به همه دوستان خوبم.
این اولین شروع من برای نوشتن بصورت مستمر در مورد 3ِD و بازی سازی سه بعدی هستش. پس امیدوارم در اشتیاهاتم منو ببخشین و کمکم کنین.
مطلبی که قراره توی این وبلاگ ارائه بشه، امیدوارم برای دوستداران این صنعت (3ِD) مفید و قابل استفاده باشه. قبل از شروع مقالات دنباله دار این وبلاگ، مطلب مهمی هست که به نظر من بهتره حتماً در موردش بنویسم.
اونم آشکار شدن هدف این وبلاگه که قبلاً بطور اجمالی شرح داده شد. قصد دارم کمی بازترش کنم.
خیلی از دوستان، ممکنه این سوال به ذهنشون برسه که وقتی شروع به کاری میکنند و قدمی رو برمیدارند، قراره به کجا برن و در کل هدف چیه و  و کجاست؟!

پس بهتره قبل از هر چیزی بگم که هدف این وبلاگ چیه و کجاست و قراره کجا بریم.

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

آرزوی من اینه که همه باهم دست همدیگه رو بگیریم و همدیگه رو بکشیم بالا. دلم می هواد یاد بگیرم و یاد بگیریم که اگه من هر چیزی رو که بلدم، به خواهر و برادر هام یاد بدم، هرگز چیزی از من کم نمی شه و بلکه موفقیت اونها به همون اندازه باید خوشحالم کنه که انگار خودم به موفقیت رسیدم.

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

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

ببخشین اگه خیلی طولانی شد.

+ نوشته شده در  شنبه 14 اردیبهشت1387ساعت 10:6  توسط محمد نورآئین  | 

سلام.
چند وقت پيش وقتی توی اينترنت در مورد دانشگاه خودمون جستجو می کردم، به يه وبلاگ برخورد کردم که برام خیلی جالب بود و دیگه از اون به بعد تقریباً هر روز سر می زنم بهش. پيشنهاد می کنم حتماً یه سر بزنین.
"وبلاگ دانشجویان فناوری اطلاعات دانشگاه پیام نور تبریز " به نظر من خیلی فعاله. از اینجا هم به همه دوستام توی اون وبلاگ خسته نباشید می گم.
خلاصه موضوع فعاليتشون :
وبلاگ دانشجویان فناوری اطلاعات دانشگاه پیام نور تبریز به منظور اطلاع رسانی و هم به عنوان محلی برای آموزش و سرگرمی دانشجویان عزیز فناوری اطلاعات ، در تاریخ بیست و دوم آذر ماه سال هزاروسیصدوهشتادوشش (86/9/22 ) ایجاد شده است.
ادامه ش رو می تونین همونجا بخونین.
+ نوشته شده در  شنبه 14 اردیبهشت1387ساعت 9:43  توسط محمد نورآئین  |