تبليغاتX
Iranian Technology
 
آموزش برنامه نویسی
 
 
آموزش ویژوال بیسیک و ... برای دیدن تمامی مطالب به آرشیو ماهانه مراجعه کنید
 

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

بهتره اول نمونه برنامش رو دانلود کنید تا من به توضیح کدهای اون بپردازم.

اینم نمونه برنامش : دانلود

 

در نمونه برنامه ای که نوشتم از نورپردازی و مه استفاده شده که شما نورپردازی رو بلد هستید . اما مه یا Foging :

 

بعد از باز کردن نمونه برنامه ، مدول FogingLighting رو باز کنید . در این مدول ما کدهای مربوط به کار نورپردازی و اضافه کردن مه رو نوشتیم . در ابتدای این مدول ابتدا یک آرایه 4 عضوی به نام mfColor رو اعلان کردیم که برای نگهداری رنگ مه هست.

اگه توجه کنید می بینید که یه تابع به اسم SetupFoging رو تعریف کردیم که وظیفه ی درست کردن و مدیریت مه رو داره . کد تابع SetupFoging به این صورته :

 

Public Sub SetupFoging ()             'x

 

            mfColor(0) = 0.5

            mfColor(1) = 0.5

            mfColor(2) = 0.5

            mfColor(3) = 1

 

            glFogi  fogMode , GL_LINEAR

            glFogfv  fogColor , mfColor(0)             'x

            glFogf   fogDensity , 0.2

            glFogf fogStart , 2

            glFogf fogEnd , 5

            glEnable  glcFog

 

End Sub

 

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

مقدار دهی آرایه ی mfColor مشخص کننده ی به ترتیب رنگهای قرمز (R) و سبز (G) و آبی (B) و مقدار آلفا (A) هستند . باید توجه کنید که مه با دود فرق داره و وقتی که شما رنگی رو برای مه مشخص می کنید به این صورته که وقتی جسمی در داخل مه قرار بگیره هر چی به مرکز مه نزدیکتر بشه رنگش متمایل تر به رنگی میشه که ما مشخص کردیم . بنابراین باید رنگ پشت زمینه با رنگی که مشخص می کنیم تطابق داشته باشه . برای این کار باید در تابع InitGL رنگ پشت زمینه رو مثل رنگ مه ست کنیم. برای این کار در تابع InitGL باید بنویسید :

 

glClearColor  0.5 , 0.5 , 0.5 , 1

 

در خط پنجم تابع SetupFoging حالت مه رو مشخص می کنیم . حالات مختلف مه عبارتند از EXP و EXP2 و LINEAR که ما در اینجا از حالت LINEAR استفاده کردیم . شما می تونید از حالت های دیگه هم استفاده کنید . در خط 6 هم آرایه ی رنگی که مقدار دهی کردیم رو به OpenGL اعلان می کنیم . در خط بعد غلظت مه رو مشخص می کنیم که در اینجا مه مقدار 0.2 رو استفاده کردیم . در خط بعد مشخص می کنیم که مه ما از چه عمقی شروع بشه و در خط بعد هم در چه عمقی مه تموم بشه .

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

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

در نمونه برنامه ای که نوشتم به وسیله ی دکمه های PageUp و PageDown می تونید مختصات Z شی که یک کره هست رو تغییر بدین و ببینید که در عمق های مختلف شی ما چه تغییراتی می کنه.

 

در صورتی که نظرا زیاد نباشه پست بعدی رو نمی گذارم . OK ؟

به خاطر اینکه توی این پست نظر ندادین از آموزش های کاربردی خبری نیست. اگه آموزش های کاربردی و ترفندهای ویژوال بیسیک می خواین باید نظر بدین و سؤال بپرسین .

آموزش OpenGL بعدی مربوط به چاپ کاراکتر ها و متن به صورت سه بعدی و حرکت دادن اونهاست . پس برای اینکه زودتر این آموزش رو بزارم تا میتونید نظر بدین .

 |+| نوشته شده در  سه شنبه بیست و پنجم تیر 1387ساعت 16:14  توسط علی  | 
 
  بالا  

Free Counter