HW 02.pdf

‫گرافیک کامپیوتري‬
‫تمرین شمارهي ‪۲‬‬
‫تاریخ تحویل‪ ۲۲ :‬فروردین ‪۳۱۳۱‬‬
‫اهداف‬
‫‪‬‬
‫آشنایی با ‪Modern OpenGL‬‬
‫‪‬‬
‫آشنایی با ‪Model/View/Projection‬‬
‫‪‬‬
‫آشنایی با انیمیشن در ‪OpenGL‬‬
‫توضیح مقدماتی‬
‫در این تمرین باید اتاق مربوط به تمرین قبل را تماماً با کمک )‪ Modern OpenGL (3.3+‬مجددا طراحی کنید‪ ،‬حیاط ساده امّا نسبتاً بزرگی‬
‫را براي آن طراحی کنید و آن را شبیه محیط یک بازي کنید‪.‬‬
‫شرح تمرین‬
‫در این تمرین باید فضاي یک اتاق کوچک و ساده را با کمک ‪ OpenGL‬طراحی کنید‪ .‬ویژگیهاي اتاق به شرح زیر است‪:‬‬
‫‪.۳‬‬
‫ویژگیهاي اتاق تماما همان ویژگیهاي اتاق تمرین قبل باشد‪ ،‬به استثناي اینکه نیازي به قوري روي میز نیست‪.‬‬
‫‪.۲‬‬
‫در و پنجره ها باید قابلیت باز شدن و بسته شدن داشته باشند‪ .‬باز و بسته شدن باید داراي انیمیشن باشد‪.‬‬
‫‪ .۲.۳‬هنگامی که در فاصلهي مناسبی از در یا پنجره قرار میگیرید باید در یا پنجرهي مذکور تغییر رنگ دهد (کمی آبیتر یا سبزتر شود‬
‫که بازیکن متوجه شود میتواند با در یا پنجره تعامل برقرار کند)‪.‬‬
‫‪ .۲.۲‬بر روي صفحه عبارت ”‪ “Press Enter to Open‬یا ”‪ “Press Enter to Close‬نمایش داده شود و بازیکن بتواند با فشرده‬
‫کلید ‪ Enter‬در یا پنجره را باز یا بسته کند‪.‬‬
‫‪.۱‬‬
‫‪۳‬‬
‫در این تمرین باید ن ماي دید اول شخص را پیاده سازي کنید‪.‬‬
‫‪۲‬‬
‫‪ .۱.۳‬با حرکت ‪ Mouse‬به چپ و راست نگاه بازیکن با سرعت مناسبی به چپ یا راست گردش کند‪.‬‬
‫‪ .۱.۲‬با حرکت ‪ Mouse‬به باال و پایین نگاه بازیکن با سرعت مناسبی به باال و پایین گردش کند‪.‬‬
‫‪ .۱.۱‬با کلیدهاي ‪ W, A, S, D‬بازیکن با سرعت راه رفتن عادي به ترتیب به سمت جلو‪ ،‬چپ‪ ،‬عقب‪ ،‬پایین و راست حرکت کند‪.‬‬
‫‪ .۱.3‬با نگه داشتن کلید ‪ SHIFT‬سرعت بازیکن از راه رفتن به دویدن تبدیل شود‪.‬‬
‫‪ .۱.3‬با کلید ‪ SPACE‬بازیکن پرش انجام دهد‪ .‬توجه داشته باشید که انیمیشن طبیعی پریدن را در نظر بگیرید‪ ،‬به این صورت که هنگام‬
‫جدا شدن از زمین سرعت زیاد‪ ،‬با رسیدن به نفطه ي اوج صفر و هنگام پایین آمدن هم سرعت افزایش مییابد‪ .‬پس براي پریدن از‬
‫‪1‬‬
‫یک تابع درجه دو (مانند دنیاي واقعی‪ )∆𝑥 = 𝑔𝑡 2 + 𝑣0 𝑡 ،‬استفاده کنید‪.‬‬
‫‪2‬‬
‫‪ .۱.3‬با نگه داشتن کلید ‪ CTRL‬بازیکن به حالت نشسته در آید (در حالت نشسته امکان راه رفتن وجود دارد‪ ،‬مانند بسیاري از بازيها)‬
‫‪۳‬به راهنمایی انتهایی مراجعه کنید‪.‬‬
‫‪۲‬براي اطالعات بیشتر در مورد دید اول شخص به )‪ http://en.wikipedia.org/wiki/First-person_(video_games‬مراجعه کنید‪.‬‬
‫گرافیک کامپیوتري‬
‫تمرین شمارهي ‪۲‬‬
‫تاریخ تحویل‪ ۲۲ :‬فروردین ‪۳۱۳۱‬‬
‫قسمت اختیاری و نمرهی اضافی‬
‫موارد زیر اختیاري بوده و در تمرین شما نمرهي اضافی (حداکثر ‪۲۲‬درصد نمرهي کل) خواهد داشت‪:‬‬
‫‪‬‬
‫هنگامی که بازیکن وارد حیاط میشود تعدادي شئ (به شکل کره یا مکعب یا هر شکل دلخواه) به صورت تصادفی در محیط ظاهر‬
‫شود و بازیکن با جمع آوري آنها امتیاز به دست آورد‪ .‬هر شئ بعد از جمعآوري باید ناپدید گردد‪ .‬مجموع امتیاز در گوشهي باال سمت‬
‫راست تصویر و زمان در گوشه ي باال سمت چپ به صورت شمارش معکوس نمایش داده شود و هنگامی که زمان پایان مییابد بر‬
‫اساس میزان امتیازي که بازیکن کسب کرده در مرکز تصویر به صورت بزرگ نتیجهي برد یا باخت بازیکن مشخص شود و بتوان بازي‬
‫را دوباره شروع کرد‪.‬‬
‫نکات مهم‬
‫‪‬‬
‫براي اشیائی که رسم میکنید تعداد مناسب ‪ Quad‬یا ‪ Triangle‬در نظر بگیرید‪ .‬براي مثال قسمت قابل رویت دیوارها را فقط با یک‬
‫مستطیل رسم نکنید و مثلثبندي کنید‪ .‬عدم رعایت این مورد موجب کسر نمره خواهد شد‪.‬‬
‫‪‬‬
‫درایور کارت گرافیک خود را به روز رسانی کنید تا هنگام اجراي کدها دچار مشکل نشوید‪.‬‬
‫‪‬‬
‫براي بارگذاري ‪Shader‬ها میتوانید از فایلهاي ‪ GLSLShader.h‬و ‪ GLSLShader.h‬که ضمیمه شدهاست استفاده کنید یا‬
‫خودتان ‪Shader‬را مدیریت کنید‪.‬‬
‫‪‬‬
‫میتوانید از دو فایل ‪ Shader‬که به تمرین ضمیمه شده به عنوان ‪ Shader‬استفاده کنید‪ .‬به نام ‪Attribute‬ها و ‪Uniforim‬ها‬
‫توجه داشته باشید‪.‬‬
‫‪‬‬
‫حتماً از سیستم ‪ RGBA‬براي رنگها استفاده کنید‪.‬‬
‫راهنمایی‬
‫‪‬‬
‫براي نمایش متن بر روي صفحه‪ ،‬مانند قسمت ‪ ۲.۲‬یا بخش نمرهي اضافی کافیست عبارت ‪ OpenGL HUD‬را جست و جو کنید و‬
‫روشها و مثالهاي مختلفی را مشاهده کنید‪.‬‬
‫‪‬‬
‫براي نمایش انیمیشن و متن میتوانید از این منبع استفاده کنید‪:‬‬
‫‪‬‬
‫‪o http://faculty.ycp.edu/~dbabcock/PastCourses/cs370/labs/lab09.html‬‬
‫در این تمرین تمامی چرخشها و انتقالها بر عهدهي شماست‪ ،‬پس میتوانید از کتابخانهي ‪ GLM‬استفاده کنید‪ .‬براي آسانشدن کار‬
‫میتوانید خودتان پشته )‪ (stack‬را براي ‪ Model, View, Projection‬جداگانه پیادهسازي کنید‪.‬‬
‫‪‬‬
‫براي یادگیري و دیدن مثالهاي ‪ Modern OpenGL‬میتوانید از منابع زیر استفاده کنید‪:‬‬
‫‪o‬‬
‫‪Muhammad Mobeen Movania, OpenGL Development Cookbook, 2013, Pact Pub.‬‬
‫‪ ‬این کتاب با عنوان ‪ book1.rar‬با رمز عبور شماره درس در قسمت منابع قرار میگیرد‪.‬‬
‫‪o‬‬
‫‪o‬‬
‫‪o‬‬
‫‪http://duriansoftware.com/joe/An-intro-to-modern-OpenGL.-Table-of-Contents.html‬‬
‫‪http://www.arcsynthesis.org/gltut‬‬
‫‪http://www.opengl-tutorial.org‬‬
‫تمرین شمارهي ‪۲‬‬
‫‪‬‬
‫گرافیک کامپیوتري‬
‫تاریخ تحویل‪ ۲۲ :‬فروردین ‪۳۱۳۱‬‬
‫براي آشنایی بیشتر با زبان ‪Shader‬ها )‪( (GLSL‬در این تمرین تقریبا نیازي نیست‪ ،‬اما در تمرینات بعدي نیاز خواهد شد) از کتاب‬
‫زیر استفاده کنید‪:‬‬
‫‪o‬‬
‫‪David Wolff, OpenGL 4.0 Shading Language Cookbook, 2011, Pact Pub.‬‬
‫‪ ‬این کتاب با عنوان ‪ book2.rar‬با رمز عبور شماره درس در قسمت منابع قرار میگیرد‪.‬‬
‫نحوهی ارسال تمرین‬
‫تمرین را به صورت گروههاي دو نفره انجام دهید‪ .‬در صورت داشتن هرگونه پرسشی در مورد تمرینها با ایمیل ‪[email protected]‬‬
‫تماس بگیرید‪.‬‬
‫محتویات درون پوشهي پروژهي تمرینهاي خود را در یک فایل ‪ zip‬قرار دهید و به آدرس ایمیل ‪ [email protected]‬ارسال کنید‪.‬‬
‫براي نامگذاري فایل و عنوان ایمیل از فرمت ‪( HW2_STDID1_STDID2‬براي مثال ‪ )HW2_88123456_89123456‬استفاده کنید‪.‬‬
‫مهلت نهایی براي ارسال تمرین ساعت ‪ ۲۱:3۳‬روز جمعه ‪ ۲۲‬فروردین ماه میباشد‪.‬‬
‫مقررات‬
‫‪‬‬
‫در انجام تمرینها اخالق آکادمیک را رعایت کنید‪.‬‬
‫‪‬‬
‫تمرینها را تا ساعت ‪ ۲۱:3۳‬روز اعالم شده ارسال کنید‪.‬‬
‫‪‬‬
‫در کل تمرینها میتوانید از مجموع ‪ ۲‬روز دیرکرد در ارسال استفاده کنید‪ .‬پس از آن به ازاي هر روز دیرکرد ‪ ۳۲‬درصد از نمرهي‬
‫تمرین را از دست میدهید‪.‬‬
‫‪‬‬
‫باید بر همهي قسمتهاي کد خود مخصوصاً قسمتهایی که از منابع دیگري استفاده کردید مسلط باشید‪.‬‬
‫‪‬‬
‫همهي تمرین ها داراي تحویل حضوري هستند‪ ،‬بنابراین الزم است هر دو عضو گروه بر همهي قسمتهاي کد مسلط باشند‪.‬‬