المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : [درس] ظلال الأجسام بطريقة "real-time" ببرنامج الدارك بيسك



towfieee
02-07-2008, 02:31 AM
بسم الله الرحمن الرحيم

تصدير ظلال
DarkBASIC Pro
http://towfieee.com/ST_Files/shadow.jpg

موضوع الظلال موضوع شائك لأنه يتطلب حسابات معقدة للزوايا والأبعاد. طبعاً أهم شيء في تصميم اللعبة هو التأكد من أن معظم الأجهزة ستتمكن من تشغيلها بحوالي "60=fps" حتى لا تتمكن العين المجردة من رؤية ما يحدث بين كل فريم والآخر.

الطريقة المدرجة في الموضوع اليوم ستتطلب منك معرفة كيف نتشىء مجسم مسطح وتكسيه بعد استيراد الإكساء ... وستحتاج الأوامر التالية لتحقيق هذا الهدف :


MAKE OBJECT PLAIN OBJECT NUMBER,HEIGHT,WIDTH

LOAD IMAGE FILE NAME,IMAGE NUMBER

TEXTURE OBJECT OBJECT NUMBER,IMAGE NUMBER




وبما أنك الآن أصبحت مؤهل ، سأبدأ بشرح الطريقة بالكلام ، ثم لاحقاً سأرفق قطعة الكود كاملة ....




الظل ... كفكرة هو فقط رسمة على سطح معين كالأرضية أو الجدار باللون الرمادي ولكنك لازلت تستطيع أن ترى من خلالها هذه الأرضية أو ذلك الحائط.

فإن نظرت الآن إلى لوحة المفاتيح من بين أناملك فأنت ترى رسمه تشبه أصابعك على اللوحة ولكنك لازلت ترى المفاتيح حتى ولو كان الظل فوقها.

ما سنقوم به اليوم هو وضع رسمه شفافة فوق الأرضية ستكون بمثابة الظل المتشكل من مجسم كرة بعلو الأرض بقليل.

الخطوات التالية هي كل ما نحتاجه :

1- تشكيل أرضية بأبعاد متساية 500x500
2- صنع مجسم كرة ووضعه على ارتفاق بسيط من الأرض
3- وضع مجسم مسطح شفاف وتلبيسه صورة شفافة مرسوم عليها الظل
4- سنجعل الظل يلاحق الكرة أينما ذهبت "زي ظلها ;)"

ملاحظة : صورة الظل صنعتها بالـ"G.I.M.P" ، وهي تحتوي على طبقة "Alpha"

الرابط التالي فيه الكود المستخدم مع شرح لكل خطوة بالإضافة للملف التنفيذي


Shadow (http://towfieee.com/ST_Files/real_time_shadow.rar)

PrinceOfSorrow
02-07-2008, 10:09 AM
سلام عليكم ورحمة الله وبركاته
شكرا جزيلا اخي توفيق على الدرس رائع
ولكن ككل هل تقصد انه الظل الذي استخدمته هو عباره عن صورة شفافه تتبع المجسم المختار ؟
حيث تبين لي انك قمت بتصميم الظل وبصراحة طريقة رائعه وانا شخصيا أستخدمها في الجيم ميكر ولكن عندي بعض المشاكل وهي كيف اجعله يظهر فقط على سطوح وايضا أثبته على الأرضية كصورة كظل حتى لايقفز مع المجسم !

على العموم ^^
شكرا جزيلا ومنتظرين دروسك في برنامج دارك بسك ^^

towfieee
02-07-2008, 05:01 PM
لنقل أن اسم المجسم "mojassam"ـ واسم الظل "zell" فسيكون أمر تمركز الظل كالتالي :
POSITION OBJECT zell,object position x(mojassam), 1,position object z(mojassam

فستلاحظ أن ارتفاع الظل سيبقى "1" بغض النظر عن ارتفاع المجسم، فاللحاق سيكون فقط بالإحداثيات "x و z"

The_source
02-07-2008, 05:16 PM
ممممممم......حلوه فكرة عمل plane وإكسائه
هناك طريقه أخرى لكن لم أجربها.....أعتقد من إنك تفكر تجربها أو إنها لم تنجح معاك
وهي إنه يمكن عملها بالضوء position light وتضع فيه إحداثيات الأوبجكت الرئيسي
وقبل كل شيء يجب تعديل الضوءبحيث يصبح أسفل المجسّم.......هي ممكنه تقريباً ولست متأكد منها

towfieee
02-07-2008, 07:20 PM
يمكن مثل ما قلت وضع ضوء أسود أو غامق ، وسيقوم بإعطاء ثأثير الظل. وعلى فكرة هذه هي الطريقة الموجودة في ملف المساعدة المرفق بالبرنامج. وهي ليست بالطريقة السيئة على الإطلاق.

المميز في طريقتي هو إمكانية عمل سبرايت متحرك للظل وتحريكه مع تحريك الشخصية.
ولا تنسى طريقة الهاردوير والتي يدعمها الدارك بيسك لعمل التأثير ، يفترض أن تكون دقيقة وأن يقوم كرت الشاشة بعمل الحسابات اللازمة ولكن المشكلة هو أنها تبطىء اللعبة. بالإضافة إلى أنها تؤثر سلبا على الرندر وشكله النهائي. والأمر الخاص بها هو :

set shadow shading on


http://towfieee.com/ST_Files/shadow_shading.jpg
قمت بعمل ملف تنفيذي بالمثال المتعلق بالظل بطريقة الهاردوير

Hardware Shadow (http://towfieee.com/ST_Files/Shadow_Shading.rar)

S.H.A.R.K
02-07-2008, 08:52 PM
لا بس بصراحه انت طلعت أستاذ :biggthump

بالنسبة للمثال الأول , لا مشكلة فيه

أما المثال الثاني فهو بطيء بشكل ملحوظ للغاية , هذا مع مجسمات ذات تفاصيل بسيطه , فما بالك بالأوبجيكتس المعقده :boggled:

بصراحه مشكلة بطء الدارك هذه معيقه في عملية صناعة الألعاب :02:

towfieee
02-07-2008, 09:40 PM
طبعاً المثال الثاني سيكون أبطأ لإنه تصدير ظل حقيقي ، والدارك بيسك ليس المسؤول عنه ، فمعظم إن لم يكن كل الألعاب المشهورة بجمال صورتها لا تستخدم المثال الثاني لأنه إرهاق للجهاز ويسبب بطء ، وهذا هو السبب الرئيسي وراء محاولتي إيجاد طريقة ملتوية للظل. فلربما تجد لعبة "call of duty 4" تعطي ظلال تتحرك مع تحرك اللاعب وتتعدد بتعدد الأضواء ولكنهم يستعملون المثال الأول ولكن بشكل موسع ومعقد. فهم يكسون المسطح بسبرايت متحرك ويغيرون حجم المسطح "scale object" لإعطاء مؤثرات شبه حقيقية . ولكنهم في الحقيقة يصنعون كل شيء "تحت الطاولة :) "