تبليغاتX
OpenGL & Computer graphics
با سلام خدمت دوستان و خوانندگان وبلاگ OpenGL & Computer Graphics :

مدتها بود که به دوستان قول داده بودم که آموزش های بلندر را ترجمه و در وبلاگ قرار دهم. خوشحالم که این خبر را به همه دوستان اعلام کنم از این به بعد آموزش های بلندر نیز به جمع آموزشهای مایا و اوپن جی ال ما اضافه شد. البته این کار با کمک دوستانی حاصل شده که به من در ترجمه و تالیف و آپدیت وبلاگ کمک میکنند. جا دارد تا همنجا از تنی چند از دوستان تشکر کنم. دوستانی که واقعا این وبلاگ را متعلق به خودشان میدانند و برای رشد و بهبود آن کمک میکنند.آقای محمد عباسی که آموزش های Maya و قسمتی از آموزش های OpenGL حاصل کار این دوست عزیزم میباشد.آقای ایمان شرف الدین که قرار است در ترجمه آموزش های Blender به من کمک کنند. آقای علی اکبر محمدی ( کوچول ) که با مطلب خوبشون ما رو شرمنده نمودند و قرار هست از این به بعد وبلاگ ما با سایت ایشون تبادل مقالات داشته باشه تا به رشد و پیشرفت هر دو کمک بشه. آقا رضا نویسنده وبلاگ it4ir.blogfa که یک مقاله در مورد حبیب زرگر پور برای وبلاگ فرستادن که بدبختانه هنوز به علت تراکم کاری وقت نکردم برای گذاشتن توی وبلاگ آماده اش کنم. و خیلی های دیگه که با تشویق هاشون و با پیشنهادات سازنده شون من را در ادامه این راه کمک کردند. واقعیت اینه که اگه کمک این دوستان نبود ( مخصوصا دوست عزیزم آقای محمد عباسی ) الان وبلاگ نمیتونست با این همه مقالات رنگارنگ در خدمت شما باشه. من ضمن تشکر از تمامی این دوستان اعلام میکنم که این وبلاگ آغوشش رو به روی تموم بچه هایی که دوست دارن و میتونن به ما کمک کنند باز کرده. تا بتونیم اینجا رو به مکانی تبدیل کنیم که با آموزش های بسیار جوابگوی تموم سلیقه ها باشه. این شما و این مقاله امروز که کار ترجمه اش هم از خودمه. 

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

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

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

 

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

                                                                                      http://www.savefile.com/files/89781   

 

 

+ نوشته شده توسط ( ساسان و محمد ) در سه شنبه بیست و هشتم شهریور 1385 و ساعت |
با سلام خدمت دوستان و همراهان وبلاگ OpenGL & Computer Graphics :

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

 

سلام من در این مقاله قصد دارم که ساخت یک پنجره ویندوز ساده را توسط ++C به شما آموزش بدهم. در این مقاله با تابع های WinMain و WndProc و دستوراتی که برای کشیدن یک پنجره لازم هست را به شما آموزش می دهم. خوب اول از همه ما احتیاج به اضافه کردن فایل سرآمد ویندوز به برنامه خود داریم البته پس از ایجاد کردن یه پروژه خالی و یه فایل cpp.

 

#include "windows.h"    // this will include windows.h for accessing to win32 API

 

خوب حالا یه کم راجع به ساختار برنامه های تحت ویندوز توضیح می دم. در برنامه ها ای که در کنسول اجرا می شوند برنامه با یه تابع ()main شروع می شد حالا در ویندوز نام آن تابع تبدیل شده هست به ()WinMain ولی یه تابع استاندارد دیگه هم در برنامه های ویندوز هست به نام WndProc که برای یک برنامه ویندوز هر دوی آنها نیاز هست خوب تابع اولی نقطه ی شروع برنامه هست ولی تابع دوم را خود سیستم عامل ویندوز صدا می زند و یک پیغام هایی را به برنامه شما می فرستد مثل موقع ای که کاربر می خواهد پنجره را ببندد. بهتر هست که با یک نگاه به نمونه ی اولیه تابع WndProc کار خود را شروع کنیم.

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

http://www.rogepost.com/dn/91ph/Window_Creating.rar

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

 

+ نوشته شده توسط ( ساسان و محمد ) در شنبه بیست و پنجم شهریور 1385 و ساعت |
با عرض سلام خدمت دوستان و خوانندگان وبلاگ OpenGL & Computer Graphics :

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

درس اول : با محيط  مايا آشنا بشيد

 

بدون هيچ مقدمه اي شيرجه ميزنيم تو مايا. لباسهاتون رو در بياريد و دو بار روي آيكون مايا كليك كنيد.احتمالا يه پنجره اي شبيه شكل زير براتون باز ميشه.

نسخه اي كه من از روش مينويسم 4.5 هستش. الان مايا 8 هم تو بازاره. تو چند فصل اول كه پايه نرم افزار رو ياد ميگيريم ميتونيد از آخرين نسخه موجود استفاده كنيم.

قبل از توضيح قسمتهاي مختلف يه نكته هستش كه بايد بگم.مايا رو بهتره به صورت unlimited نصب كنيد تا تمام امكانات موجود روي نرم افزار روي سيستم نصب بشه.

 

 

در اين درس با محيط مايا آشنا ميشيد.سعي نكنيد تمام كارهايي كه ميكنيد رو بفهميد.مهم اينه كه بتونيد اون كارها رو انجام بديد. تو اين تمرين ياد ميگيريد چطور يه شكل ساده بسازيد.يه نماي دوربين تعريف كنيد و بعد در آخر يه رندر از صحنه ميگيريم.

براي شروع يه سري تنظيمات رو بايد انجام بديد. در زير اونا رو آورديم.

 

چند خطي تئوري :

Main menu

تمام امكانات نرم افزار در اين منوها در دسترس هست.اين منوها به دو دسته تقسيم ميشن. دسته اول منوهاي ثابت هستن كه از  file شروع و تا window ادامه داره.دسته دوم منوهايي هستن كه به انتخاب شما تغيير ميكنن.انتخابهاي شما چي هستن.انتخابهاي شما 4 مورد هستش.بايد از بخش

status line ( به شكل اول مراجعه كنيد) منوهاي مورد نظرتون رو انتخاب كنيد. اين انتخابها عبارتند ازdynamic , modeling , animation , rendering البته دو مورد live , fur هم هستن. شما با انتخاب يكي از اين موارد منوهاي window به بعد رو تعيين ميكنيد.

 

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

 

دوستان علاقمند میتوانند نسخه PDF این مقاله را از این آدرس دریافت نمایند.

 http://www.rogepost.com/dn/16tj/Maya_Lesson_01.pdf

منبع : قسمت Help نرم افزار مایا

مترجم : محمد عباسی ( سلطان )

کلیه حقوق این مقاله به وبلاگ www.OpenGL.Blogfa.com و مترجمین آن تعلق دارد. لعنت به کسانی که بدون نام بردن از منبع ترجمه کننده آن را در وبلاگ یا سایت خود قرار میدهند. بدیهی است که دوستان میتوانند با نام منبع و مترجم مطالب را در وبلاگ یا سایت خود منتشر نمایند

 

+ نوشته شده توسط ( ساسان و محمد ) در جمعه بیست و چهارم شهریور 1385 و ساعت |
با سلام خدمت دوستان و خوانندگان وبلاگ OpenGL & Computer Graphics :

OpenAL چیست ؟

 

OpenAL مخفف (Open Audio Library) یک API صوتی مولتی پلتفرم و ساده میباشد. هدف از طراحی OpenAL رندر موثر و کارآمد صداهای سه بعدی چند کاناله وابسته به موقعت مکانی میباشد. قالب و قرارداد های بکار رفته در این API بسیار به OpenGL شباهت دارد و از آن متاثر شده است. امروزه کتابخانه های زیادی وجود دارند که ادعای کار کردن با سخت افزارهای صوتی در سطوح پایین را دارند ( هر چند که این ادعا میتواند صحیح باشد ) اما طراحان این کتابخانه در طراحی آن مواردی را لحاظ کردند که این کتابخانه را به کتابخانه ای ممتاز تبدیل کرد. اول از همه آنها از OpenGL API تقلید کردند که یکی از بهترین API هایی است که تاکنون طراحی شده. قالب این API بسیار انعطاف پذیر است و متد های مختلف برنامه نویسی و همچنین پیاده سازی های سخت افزاری متفاوت میتوانند از این مزیت بهره برداری نمایند. افرادی که تجربه ای در استفاده از OpenGL دارند قادر هستند تا به سرعت OpenAL را فراگرفته و آن را بکارگیرند.OpenAL همچنین توانایی خلق صداهای سه بعدی محیطی را دارد چیزی که بسیاری از API های دیگر حرفی برای گفتن در مورد آن ندارند. و مورد آخر اینکه این API همچنین قادر است تا خودش را برای استفاده از قابلیتهایی همچون EAX و AC3 توسعه دهد.

 

نگاهی به تاریخچه OpenAL :

 

OpenAL در آغاز توسط شرکت Loki Software ایجاد شد تا به آنها در منتقل کردن بازیهای ویندوز به سیستم عامل لینوکس کمک کند. پس از منحل شدن شرکت Loki Software این پروژه تا مدتی توسط انجمن طرفداران اوپن سورس ( زنده باد اوپن سورس ) نگهداری میشد. اما هم اکنون این پروژه توسط شرکت Creative Labs میزبانی و توسعه داده میشود.

دوستان عزیز این تنها قسمت کوچکی از مقاله OpenAL بود شما باید برای مطالعه مقاله بصورت کامل نسخه PDF آن از این آدرس دانلود نموده و مطالعه فرمایید. از این به بعد کلیه مقالاتی که در آنها سورس برنامه و یا تصاویر زیاد به کار رفته باشد به این صورت ارائه میشود.

 http://www.rogepost.com/dn/qq28/OpenAL.rar

منبع : دانشنامه رایگان ویکی پدیا www.wikipedia.org و سایت www.Devmaster.net

مترجم : sasan_dracula_59

کلیه حقوق این مقاله به وبلاگ www.OpenGL.Blogfa.com و مترجمین آن تعلق دارد. لعنت به کسانی که بدون نام بردن از منبع ترجمه کننده آن را در وبلاگ یا سایت خود قرار میدهند. بدیهی است که دوستان میتوانند با نام منبع و مترجم مطالب را در وبلاگ یا سایت خود منتشر نمایند

 

+ نوشته شده توسط ( ساسان و محمد ) در پنجشنبه بیست و سوم شهریور 1385 و ساعت |
با سلام خدمت دوستان و خوانندگان همیشگی وبلاگ OpenGL & Computer Graphics :

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

موتور فیزیک چیست :

 

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

 

بطور کلی دو نوع از موتور فیزیک وجود دارد.نوع بلادرنگ ( Real time ) و نوع پردقت یا

( high precision ). موتور های فیزیکی پر دقت به قدرت پردازشی بیشتری محتاجند تا بتوانند محاسبات فیزیکی بسیار دقیق را انجام دهند و این نوع از موتورها غالبا توسط دانشمندان یا فیلم های متحرک کامپیوتری مورد استفاده قرار میگیرند. در بازیهای ویدئویی یا دیگر برنامه های کامپیوتری اینتراکتیو ( فعل و انفعالی ) موتورهای فیزیک مجبورند که محاسباتشان را آسان تر نموده و از میزان دقت کم نمایند تا بتوانند بموقع و سریع محاسبات را انجام داده و نسبت به حرکات بازی واکنش لازم را نشان داده و  بر روی سرعت بازی نتیجه منفی نگذارند.

 

بازیهای کامپیوتری مخصوصا بازیهایی ماشینی مسابقه ای از موتورهای فیزیکی استفاده میکنند تا واقع گرایی بازی را افزایش دهند. هم اکنون نیز توسعه دهندگان موتورهای فیزیک در حال تلاشند تا خصوصیات بیشتری را به این موتورها بیفزایند تا واقعیت گرایی را افزایش دهند و البته این امر در سایه پروسسورهای پرقدرت امروزی به امری ممکن تبدیل شده است.کاراکترهای انیمیشنی که در گذشته از فیزیک استفاده میکردند تنها قادر بودند تا از rigid body dynamics (( واقعا نتوانستم ترجمه خوبی برای این اصطلاح ارائه دهم.. برای همین آن را عینا نقل نمودم. هر چند خود این اصطلاح بسیار گویا میباشد ولی بعضی مواقع ترجمه باعث صدمه خوردن به یک اصطلاح فنی میشود.  مترجم )) استفاده کنند چون به راحتی و به سرعت قابل محاسبه بودند. اما بازیها و انیمیشن های مدرن امروزی شروع به استفاده از soft body physics نموده اند. فیزیک جسم نرم Soft body physics همچنین برای افکت های ذره ای و مایعات و لباسها نیز بکار برده میشود.

 

واحد پردازش فیزیک Physics Processing Unit (PPU) :

 

در فوریه سال 2006 بالاخره اولین واحد پردازش فیزیک توسط شرکت Ageia تولید شد که مانند یک کارت گرافیکی کار میکرد و فشار پردازش فیزیکی را از دوش واحد پردازش مرکزی CPU بر میداشت. بیشترین تاثیر این محصول در زمینه سیستم ذرات particle systems بود اما در زمینه بهبود کارایی در محاسبات فیزیک جسم جامد بهبود چندانی حاصل نشد. امروزه فعایتهایی در زمینه افزودن قابلیت انجام محاسبات فیزیکی به کارت های گرافیکی در دست انجام است. و شرکتهای NVIDIA و ATI هر دو در آخرین محصولاتشان قابلیت انجام محاسبات فیزیکی از جمله فیزیک اجسام جامد را قرار داده اند.

 

در زیر اسامی تعدادی از موتورهای فیزیکی بلادرنگ را میبینید :

 

Open Dynamics Engine : یک موتور فیزیک رایگان و اوپن سورس ( زنده باد اوپن سورس )

 

Bullet : یک موتور رایگان و اوپن سورس دیگر

 

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

 

Newton Game Dynamics : یک موتور رایگان اما سورس بسته میباشد.

nV Physics SDK و Tokamak Physics

 

دوستان امیدوارم از این مقاله نیز استفاده لازم را برده باشید. چنانچه در حین مطالعه به اشکال یا اشتباهی برخوردید خوشحال میشوم آن را به من اطلاع دهید. ایمیل من sasan_dracula_59@yahoo.com میباشد. در ضمن دوستان میتوانند نسخه PDF این مقاله را از این آدرس دریافت کنند.

 

http://www.rogepost.com/dn/g1yz/Physics+engine.rar

 

 

منبع : دانشنامه رایگان ویکی پدیا     www.wikipedia.com

مترجم : sasan_dracula_59

کلیه حقوق این مقاله به وبلاگ www.OpenGL.Blogfa.com و مترجمین آن تعلق دارد. لعنت به کسانی که بدون نام بردن از منبع ترجمه کننده آن را در وبلاگ یا سایت خود قرار میدهند. بدیهی است که دوستان میتوانند با نام منبع و مترجم مطالب را در وبلاگ یا سایت خود منتشر نمایند

 

+ نوشته شده توسط ( ساسان و محمد ) در پنجشنبه بیست و سوم شهریور 1385 و ساعت |
با سلام خدمت دوستان و خوانندگان وبلاگ OpenGL & Computer Graphics :

 

یک نگاه اجمالی :

Game engine در حقیقت مولفه نرم افزاری و اصلی هر بازی کامپیوتری و ویدئویی و هر برنامه اینتر اکتیوی است که محتوای گرافیکی بلادرنگ تولید کند. گیم انجین یکسری از تکنولوژی های اساسی را مهیا میسازد همچنین فرایند توسعه را تسهیل میکند و در بعضی مواقع بازی را قادر میسازد تا بگونه ای ساخته شود که بصورت مولتی پلتفرم و بر روی کنسول های بازی و کامپیوترهای رومیزی اجرا شود. توانایی ها و قابلیت های اساسی که توسط گیم انجین در اختار قرار میگیرد شامل یک رندر کننده برای گرافیکهای دو بعدی و سه بعدی و موتور فیزیک و کاشف برخورد (عجب ترجمه ای. اینجا منظور همان collision detection میباشد.) و صدا و پردازشگر اسکریپت و انیمیشن و هوش مصنوعی و قابلیتهای شبکه ای و یک نمودار صحنه میباشد.

 

اغلب گیم انجین های معروف و بزرگ مانند Unreal Engine 3 و Doom 3 engine و CryENGINE2 و RenderWare و Gamebryo مجموعه ای از  ابزارهای توسعه بصری بعلاوهء مولفه های نرم افزاری با قابلیت استفاده مجدد را مهیا میکنند. معمولا تمام این ابزارها در یک محیط توسعه مجتمع گردآورده میشوند تا توسعه تند و آسان بازیهای کامپیوتری را ممکن سازند. گیم انجین ها را بعضی اوقات با نام "میان افزار بازی" یا "game middleware" نیز میشناسند.

همچون دیگر راه حل های میان افزاری گیم انجین ها اغلب انتزاع پلتفرم را مهیا میسازند که اجازه میدهد بازیها بر روی طیف وسیعی از پلتفرم ها اجرا شود. میان افزار بازی اغلب بصورت معماری مولفه گرا طراحی میشوند که این امر باعث میشود بتوان بسیاری از قابلیتهای آنها را کنار گذاشت و یا با مولفه های میان افزار ویژه گسترش داد مانند Hovak برای فیزیک و FMOD برای صدا و SpeedTree برای رندرکردن. بعضی از انجین ها مانند RenderWare بصورت مجموعه ای از مولفه های ابزار متصل بهم طراحی شده است. مزیت این روش اینست که میتوان با آن موتورهای سفارشی تولید کرد که اجزایش به صورت انتخابی با یکدیگر ترکیب شده باشند.

 

بعضی از گیم انجین ها به جای کلیه قابلیتهایی که مورد نیاز یک بازی کامپیوتری است تنها قابلیت رندرینگ بلادرنگ سه بعدی را مهیا میسازند. این انجین ها به توسعه دهنده بازی اجازه میدهند که بقیه توانایی ها و قابلیت های مورد نیاز را فراهم نموده و مجموعه را تکمیل نماید که میتوان آنها را از بین اجزا میان افزار بازی های دیگر انتخاب نمود. این نوع از موتور ها اغلب با نامهای دیگری مانند موتور گرافیکی "graphics engine" یا موتور رندرسازی "rendering engine" و یا موتور سه بعدی

"3D Engine" نیز شناخته میشوند.

Axiom , Ogre , Power Rende  , Crystal Space , and Genesis3D از جمله موتورهای گرافیک هستند. گیم انجین ها و موتور های گرافیکی جدید قابلیتی دارند که به نمودار صحنه scene graph معروف است که یک نمایش سه بعدی شی گرا از دنیای سه بعدی بازی میباشد و اغلب طراحی بازی را تسهیل میکند و میتواند برای رندر موثر و با کیفیت دنیای بصری سه بعدی بکار گرفته شود.

 

انتزاع سخت افزار :

اغلب اوقات موتور سه بعدی یا سیستم رندرکننده یک گیم انجین بر اساس API های گرافیکی همچون Direct 3D و یا OpenGL ساخته میشود که باعث استقلال نرم افزاری از GPU یا همان کارت گرافیکی میشود. از کتابخانه های سطح پایین "Low-Level" دیگری نیز همچون DirectX و SDL و OpenAL نیز بطور معمول در ساختن گیم انجین ها استفاده میشود چون آنها دسترسی مستقل از سخت افزار به دیگر سخت افزار کامپیوتر را همچون کارت صوتی و کارت شبکه و کیبورد و موس و ... را فراهم میسازند.

 

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

تاریخچه گیم انجین ها :

اصطلاح گیم انجین در میانه سالهای دهه 90 و مخصوصا در ارتباط با بازیهای FPS ایجاد شد. و شرکت id-software با بازیهایی همچون Doom و Quack آغازگر این راه بود. بعد ها نیز بازیهایی دیگری همچون Quack III و Unreal 1998 نیز با چنین فلسفه ای ایجاد شدند. بسیاری از شرکت ها میتوانستند با فروش موتور بازیهایشان یک سود مازاد و کمکی برای خود ایجاد کنند. امروزه موتورهای بازی سازی با قیمت های از ده هزار دلار تا سه ملیون و هفتصد و پنجاه هزار دلار (موتور بازی Warcraft III ) وجود دارند. کمترین مزیت و فایده ای که گیم انجین ها داشتند این بود که توسعه بازیهای کامپیوتری را آسان و سریع نمودند چیزی که در صنعت پر از رقابت بازیهای کامپیوتری یک منفعت بزرگ به شمار می آمد. امروزه بسیار بر روی گیم انجین ها و اجزا سازنده آنها کار میشود و این امر باعث شده تا بین قسمت های مانند کارهای هنری و طراحی مراحل و رندرینگ و اسکریپ نویسی شکاف عمیقی ایجاد شود به زبان ساده این امر باعث شده تا کارها تخصصی تر شود. امروزه در تیم های بزرگ توسعه بازیهای کامپیوتری و ویدئویی نسبت هنرمندان به برنامه نویسان 4 به 1 میباشد و این یک امر عادی محسوب میشود.

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

RPG Morrowind و MMORPG Dark Age of Camelot دو بازی هستند که بر اساس موتور  NetImmerse طراحی شده اند. همچنین بازی Lineage II بر اساس موتور آنریل Unreal Engine

طراحی شده است. گیم انجین هایی بزرگی که امروزه طراحی میشوند بگونه ای هستند که کنسول های بازی خانگی را نیز به خوبی پشتیبانی نمایند. بطور مثال دو بازی Grand Theft Auto و Burnout بر اساس موتور معروف RenderWare ساخته شده اند. امروزه گیم انجین ها در زمره پیچیده ترین برنامه های کامپیوتری هستند که تابحال ایجاد شده است.

 

میان افزارها :

 

امروزه بسیاری از کمپانی ها در ساخت و تولید مجموعه های نرم افزاری که با نام میان افزار "Middleware" شناخته میشوند محارت و تجربه ویژه ای کسب کرده اند. توسعه دهندگان میان افزار ها تلاش دارند تا مجموعه های نرم افزاری قدرتمندی تولید کنند که شامل تمام ملزومات مورد نیاز ساخت یک بازی کامپیوتری باشد. بسیاری از میان افزار ها قابلیت هایی مانند توابع گرافیک و صوت و فیزیک و هوش مصنوعی را تدارک میبینند که توسعه بازیها را تسهیل مینماید.Gamebryo و RenderWare دو نمونه از میان افزار های معروفی هستند که بطور بسیاری مورد استفاده قرار میگیرند.

بعضی از میان افزار ها تنها یک کار را انجام میدهند و بطور متقاعد کننده ای آن کار را بسیار بهتر از میان افزار های چند منظوره انجام میدهند. برای نمونه SpeedTree برای رندر کردن درختان و مراتع و جنگلها در کنسول جدید مایکروسافت یعنی Xbox 360 و همچنین بازی The Elder Scrolls IV: Oblivion متعلق به مایکروسافت استفاده میشود.

بعضی از میان افزار ها به همراه سورس کد کامل ارائه میشوند و بعضی دیگر تنها مرجع توابع API و کتابخانه کامپایل شده را در اختیار میگذارند که برای دستیابی به سورس کد کامل آنها میبایست مبلغ اضافه تری پرداخت نمود.

 

توسعه گیم انجین ها امروزه یکی از محبوب ترین پروژه ها در میان علوم کامپیوتری میباشد و افراد بسیاری از دانش جویان و علاقمندان و توسعه دهندگان بازیهای کامپیوتری به این موضوع میپردازند. از ملزومات توسعه گیم انجین ها داشتن دانش بسیار در طیف وسیعی از علوم مانند هندسه و تئوری رنگها و محاسبات میباشد. بسیاری از افراد بطور مشتاقانه و آماتوری به این رشته میپردازند و از این کار لذت میبرند ضمن اینکه محصول خود را بصورت اوپن سورس ( زنده باد اوپن سورس ) در اختیار بقیه میگذارند.Crystal Space یک گیم انجین رایگان میباشد که از محبوبیت خوبی نیز برخوردار است. این انجین رایگان بوده و در ضمن اوپن سورس میباشد و مولتی پلتفرم نیز هست.

یک محیط توسعه بازی بسیار محبوب و ارزان قیمت نیز در سال 1999 توسط Marc Overmars تولید شد که فرآیند توسعه بازیهای دوبعدی را بشدت آسان میکرد.

سخنی در مورد موتور های گرافیکی :

 

همانطور که پیشتر نیز عنوان شد موتور گرافیکی یکی از اجزای فوق العاده مهم هر گیم انجینی است. امروزه با یک سرچ کوچک در اینترنت میتوان موتور های گرافیکی بسیاری را پیدا کرد که اوپن سورس و رایگان هستند و قدرت های خوبی نیز داند و به صورت SDK عرضه میشوند.. از نمونه های خوب این انجین ها میتوان به موتورهای سه بعدی OGRE 3D و irrlicht و Panda و Delta 3D و ... را نام برد. این موتورها غالبا بصورت کتابخانه های استاتیک  یا دینامیک به همراه فایلهای هدر مورد نیاز و در اکثر مواقع به همراه سورس کامل عرضه میشوند. هر کدام از این انجین ها قادرند تا از یک یا چند زبان مختلف پشتیبانی نماید. بطور مثال موتور های OGRE و irrlicht را میتوان در زبان C/C++ استفاده کرد و از موتور Panda میتوان در زبان پایتون استفاده نمود. هر کدام از این موتورها با یکی از دو API گرافیکی رایج مانند OpenGL یا Direct3D نوشته شده اند و در بعضی موارد از هر دوی این API ها پشتیبانی میکنند مانند موتور OGRE که از هر دوی این API ها پشتیبانی میکند. در تعدادی دیگر از اینگونه موتور ها که پیشرفته تر هستند قابلیت Software Rendering نیز مهیا میباشد.

اگر طالب استفاده از این گونه موتورها هستید من موتور OGRE را به شما توصیه میکنم. که در فواصل زمانی کوتاه پیشرفت میکند و سریع اشکال زدایی میشود.

 

مثالی از چگونگی کاربرد موتوهای گرافیکی :

 

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

فرض کنید شما موتور گرافیکی OGRE را در اختیار دارید و مایلید تا از آن استفاده نمایید. خوب این موتور در اصل بصورت یکسری کتابخانه و فایلهای هدر میباشد که شما با Include نمودن فایل های هدر در ابتدای برنامه سی++ خود و همچنین لینک کردن کتابخانه های مربوطه میتوانید از کلاسها و توابع این موتور استفاده نمایید. این کتابخانه کلاسهایی برای ساخت پنجره و لود کردن مدل ها و تکسچرها و نورپردازی و ... دارد.

 

گیم انجین ها در مقابل موتورهای واقعیت مجازی :

 

اگر خوب به پروسه ساخت گیم انجین ها در گذشته و حال بنگرید میبینید که اساسا گیم انجین ها همیشه جهت کار بر روی کامپیوترهای خانگی و کنسول های بازی ساخته میشدند در صورتی که موتورهای واقعیت مجازی "VR Engines" جهت کار بر روی سوپر کامپیوترها و ابر کامپیوترها طراحی میشدند. سیستم ورودی نیز در موتورهای واقعیت مجازی مقداری پیشرفته تر از گیم انجین هاست. همچنین از لحاظ قیمت نیز تفاوت چشمگیری بین این دو وجود دارد.

 

سخن پایانی :

 

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

 

دوستان علاقمند میتونند نسخه PDF این مقاله را از این آدرس بگیرند.

 

 http://www.rogepost.com/dn/dbbk/Game+engine.rar

 

منبع : سایت ویکی پدیا   www.wikipedia.org

مترجم :  sasan_dracula_59

کلیه حقوق این مقاله به وبلاگ www.OpenGL.Blogfa.com و مترجمین آن تعلق دارد. لعنت به کسانی که بدون نام بردن از منبع ترجمه کننده آن را در وبلاگ یا سایت خود قرار میدهند. بدیهی است که دوستان میتوانند با نام منبع و مترجم مطالب را در وبلاگ یا سایت خود منتشر نمایند

 

+ نوشته شده توسط ( ساسان و محمد ) در دوشنبه بیستم شهریور 1385 و ساعت |

مقالات آموزش OpenGL قسمت دهم. این مقاله توسط دوست عزیزم آقای محمد عباسی ترجمه و تایپ شده است. ضمن تشکر از این دوست عزیز این مقاله را به همه دوستان و علاقمندان تقدیم میکنم.

 

كشيدن خطوط در فضاي سه بعدي :

 

در درسهاي قبل با تابع GL_POINTS آشنا شديم و ديديم كه ميتونيم از اون براي كشيدن  نقطه اي در فضا استفاده كنيم.در اين درس چگونگي رسم يك خط با استفاده از دو راس ( vertex) رو در فضاي سه بعدي ياد ميگيريم. اين كار رو با استفاده از تابع GL_LINES انجام ميديم. تكه كد زير خطي را بين دو نقطه (0 , 0 , 0 ) و (50 و 50 و 50 ) براي ما رسم ميكند.

 

                                                           

 

دقت كنيد كه براي رسم هر خط بايد دو نقطه تعريف شود.

نكته : اگر تعداد نقاط تعريف شده فرد باشند تابع  GL_LINES نقطه آخر را به حساب نمي آورد.

 

در نمونه پايين تكه كدي پيچيده تر را ميبينيد و در آخر نتيجه حاصل از كد را :

 

           

 

            

  

                            

 

                                برای خواندن کل مطلب بر روی ادامه مطلب کلیک نمایید.

 

 


ادامه مطلب
+ نوشته شده توسط ( ساسان و محمد ) در شنبه هجدهم شهریور 1385 و ساعت |

با عرض سلام خدمت دوستان و خوانندگان همیشگی وبلاگ :

 

مقاله امروز قسمی دیگری از سلسله دروس OpenGL میباشد که آقای محمد عباسی زحمت ترجمه و تایپ آن را کشیده است. ضمن تشکر از این دوست عزیز آموزش امروز را به شما تقدیم میکنم.

 

تعيين سايز نقاط در OpenGL :

 

زماني كه نقطه اي را در OpenGL