الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ما هو ال Mesh?

بدأه ame5r في 12 أغسطس 2008 · 13 رد · 3,715 مشاهدة · في قسم برمجة الألعاب و الرسوميات العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله

اردت ان اسألكم عن ال mesh ما هو؟ وكيف يتم تصميمه؟وهل حركة الشخصية تتعلق به؟

ارجو الاجابه عن هذا السؤال بسرعه لاني بدأت بتصميم لعبتي الخاصه واحتاج لمعلومات اضافيه.

ولكم مني خالص الدعاء والشكر

If Games Are Fun.....So Making Games Making Fun

#2

السلام عليك

الله يوفقك الى الامام لا تياس

الترجمة الحرفية " للميش " هي الشبكة لكن ليس المقصود بها الشبكة بل يقصد بها المجسم لان المجسم في اصله مثلثات وعند رؤيته بطريقة العرض الشبكية اذا كنت تعرف برامج التصميم يضهر على شكل شبكة

الميش هو ملف من برنامج التصميم الثلاثي الابعاد يتم استيراده و له انواع مختلفة و لكل تقنية في الاعاب النوع الذي تعامل معه

و عملية استيراد المجسم او الميش لها شكلان فالاول ان تكون مجسم صلب واحد معروف او ان تكون عددة اطر او عدة فرامات و هذه الاخيرة مع بعضها تشكل مشهد في كل فرام يتغير المجسم او الميش اللي شكل و تحجيم و تموقع و استدارة معينة و طبعا هناك عدد للفرامات او الاطر و ليس تلقائيا

و يتم عرض هذه الاطر حسب متطلبات اللعبة

ارجو ان اكون افدتك و وضح لي اين يكمن الغموض في كلامي لاني اضن انه لي تعبير ركييك نوعا ما

logo.gif
#3

لا ما شا ءالله عليك كلامك مفيد للغايه :-)

لكن اريد ان فهم اكثر:انا اعمل حالياً على برنامج اسمه cinema 4d هل هو جيد لعمل ميش للعبة ما؟وكيف يمكنني ان اجعل

الشخصيه التي صممتها ملائمه للعبة التي ابرمجها؟

وشكراً لك

تم تعديل هذه المشاركة بواسطة ame5r في 13 أغسطس 2008 في 14:58

If Games Are Fun.....So Making Games Making Fun

#4

السلام عليكم اخي الكريم

يمكنك استخدام اي برامج تصميم للمجسمات بحيث انك تنشئ المجسمات التي تريدها ومن ثم حفظها بصيغة مناسبة للعرض والاستخدام داخل كود اللعبة

وفي الاغلب هناك ادوات يمكنها تحويل صيغ المجسمات

كما ان معظم برامج التصميم الاحترافية هذه الايام تتيح لك حفظ المجسمات بأكثر من صيغة

ويمكنك طبعا ان تكتب ال parser الخاص بك لقراءة اي نوع من المجسمات

وكل هذا يعتمد علي كود اللعبة الذي تكتبه

فلو كنت تستخدم مثلا DX فان مكتبة الدايركت اكس تتعامله تلقائيا مع ملفات من نوع X

فلو كان برنامج التصميم الذي تستخدمه يدعم اخرج الملفات التي صممتها ويحفظها كنوع x file

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

ولكنه غير مناسب للاعمال الكبيرة جدا

فلذلك نجد الالعاب الكبيرة تستخدم it's own custom model formats and parser inside it's game engine

بالنسبة لبرنامج cinema4d فبصراحة لم اعمل عليه لكنه ان كان يتيح اخراج الملفات بصيغة 3ds علي الاقل فيمكنك تحويلها بسهولة

لصيغة ملفات اكس ببعض اداوات التحويل المتوفرة

ارجو ان اكون قد افدت ولو بالقليل

والسلام عليكم

Ahmed Ezz

Software Engineer

ezzelden.ahmed@yahoo.com

http://ahmedezz.110mb.com/

انما عمرك بأعمالك ، فكم تريد أن تعيش؟

#5

شكراً جزيلاًُ لك لكن سؤالي الرئيسي هو: كيفية جعل الشخصيه تتحرك كما اريد انا , اي ان ترفع يدها او رجلها او تحرك رأسها, ومثل هذه الحركات؟

وشكراً سلفاً.

If Games Are Fun.....So Making Games Making Fun

#6

اخي الكريم

هناك العديد من اساليب التحريك للمجسمات

احدي هذه الطرق هي ما تسمي بال KeyFrame Animation

والتي تعتمد ان يكون تصميم الشخصية المراد تحريكها كاملة او اجزاء منها عبارة عن سلسلة من الاطارات frame hierarchy

حيث يقوم مصمم الشخصيات برسمها وتكون عبارة عن عدة اجزاء منفصلة ومترابطة مع بعضها

ثم يقوم مصمم الحركة animator بانشاء تسلسل ترابطي بين كل جزء من الشخصية المراد تحريكها

ويقوم بانشاء عنصر حركة key frame يتم وضعه كأحد عناصر الحركة التابعة لمجموعة حركة معينة Animation Set

ومجموعات الحركة ببساطة عبارة container لعدد معين من عناصر الحركة التي تصف توضعات جزء معين من الشخصية

تبعا لاسلوب حركة نريد تطبيقه علي الشخصية

مثلا: يمكننا تخيل الشخصية وهي تتحرك في عدة انماط

مثل حركتها وهي تمشي او تجري او تطلق نيران سلاح ما او تقاتل او تقفز او .....

كل من هذه الحركات يتم وصف توضعات كل جزء من اجزاء الشخصية تبعا لنوع الحركة في ال animation set الخاصة بها

فيمكن مثلا عمل animation set خاصة لحركة الجري واخري للمشي وهكذا

يتم حفظ ملف المجسم وهو يحتوي علي بيانات المجسم نفسه مع بيانات مجموعات الحركة المناسبة للعبة

ثم في الكود يتم استخدام نظام تحريك يقدم خدمات للتحريك مثل عمل play-back لاي من مجموعات الحركة المخزنة مع الشخصية مسبقا

بالطبع الموضوع اعقد مما نصفه هنا

حيث يمكننا عمل blending لمجموعات الحركة مع بعضها وكذلك لاتاحة تشغيل جزء من الحركة مع طلب المستخدم بالضغط علي زر ما

كل هذه الامور تحتاج لنظام مرن لادارة هذه الامور

بالرغم من ال D3DX Animation System يقدم الدعم لكثير من هذه الامور

بل ويتيح لنا تخصيص احد اجزاء نظام الحركة بما يناسبنا

فانه يعد قاصرا في بعض الحالات

لكنه يوفر

طريقة سهلة جدا لتشغيل الحركة البسيطة لملفات اكس التي يدعمها بشكل كامل

وهي ملفات مرنة لحفظ الكثير من البيانات

اسف ان لم يكن الشرح واضح

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

ونحن هنا لم نشر الا لنوع الحركة keyframe animation

والسلام عليكم

Ahmed Ezz

Software Engineer

ezzelden.ahmed@yahoo.com

http://ahmedezz.110mb.com/

انما عمرك بأعمالك ، فكم تريد أن تعيش؟

#7

اولاً: شكراً جزيلاً لك اخي :thumb_up:

وثانياً:خلاصة الموضوع هو انه اسهل طريقه لتحريك الشخصيه هو ان يقوم المصمم بتجزئتها ويقوم بتحريك كل جزء في الوقت الذي يريده هو,

(صححني ارجوك اذا اخطأت) ولكن هل يجب ان اقوم بتسجيل حركة اجزاء الشخصيه من برنامج التصميم او عن طريق البرمجه؟

( :happy: اسف لاني اتعبتك معي ولكني مبتدأ في برمجة الالعاب وتحريك الشخصيه هو الشيء الوحيد الذي لم افهمه)

وشكراً.

تم تعديل هذه المشاركة بواسطة ame5r في 13 أغسطس 2008 في 19:02

If Games Are Fun.....So Making Games Making Fun

#8

انت لست لست مخطأ لكنها ليست الطريقة الأسهل

فأنا شخصيا أرى طريقة عرض الفرامات الجاهزة من برنامج التصميم أسهل

حيت لا تكسر رأسك أبدا في أمر الحركة الذي لا تعنيك

ame5r كتب:
(صححني ارجوك اذا اخطأت) ولكن هل يجب ان اقوم بتسجيل حركة اجزاء الشخصيه من برنامج التصميم او عن طريق البرمجه؟

الحركة لا تسجل

الذي أعرفه هو أن الحركة تدرس برمجا و إلتسهيل التعامل معها

يتم وضعها في ملفات كملفات الاعدادات هذه الملفات يفهمها محرك اللعبة أو كود لعبتك

تم تعديل هذه المشاركة بواسطة Farhat في 13 أغسطس 2008 في 22:44

logo.gif
#9

شكراً جزيلاُ لك اخي farhat لكن ماذا لو اردت ان تتحرك الشخصيه حسب رغبة المستخدم(اي ان يحركها هو بالاسهم على لوحة المفاتيح مثلا

او عن طريق الفأره)؟

If Games Are Fun.....So Making Games Making Fun

#10

السلام عليكم

اخي الكريم

يمكنك بالطبع ان تنشأ الحركة بالكود ولكن هذا غير منطقي لانه سيكون مرهق جدا ولا يصلح للمجسمات الكبيرة

فالافضل هو ان تقوم بتصميم الحركة داخل برنامج التصميم ويتم تخزين هذه الحركة داخل ملف المجسم علي هيئة قيم تبين كيفية التوضعات الجديدة لكل جزء من الشخصية

مثلا انت لما تصمم حركة القدمين لشخصية وهي تمشي فأنت داخل برنامج التصميم تضع مثلا عدة اطارات للحركة وفي كل اطار توضع توضع جديد لمكان القدمين بعمل translation

ويتم تخزين هذه البيانات علي هيئة مصفوفة للحركة او مجموعة قيم SRT (Scale - Rotation - Translation )

وتتم قراءة هذه البيانات داخل الكود تلقائيا في الاغلب مع امكانية اتاحة التعديل عليها من الكود يدويا او حتي الغاؤها واضافة غيرها لو اردت

طبعا ستحتاج لبعض الخبرة في كود التعامل مع نظام التحريك الذي تستخدمه لتتيح لنفسك امكانية تشغيل اجزاء معينة من الحركة في اوقات معينة

او تبعا للاستجابة من اللاعب

مثلا لجعل الشخصية تقوم بتشغيل مجموعة الحركة الخاصة بالقفز اذا قام اللاعب بالضغط علي الزر المحدد للقفز ( المسافة مثلا )

اولا يجب ان تكون مجموعة الحركة الخاصة بالقفز تم تخزينها مسبقا من قبل المصمم ولها اسم محدد animation set name

ثم يجب عليك ان تراعي عدة اشياء اخري اذا كانت جميع مجموعة الحركة تم تخزينها في مجموعة واحدة

all animations are stored in single animation Set

كما هو الحال مع اغلب ال exporters الموجودة مع برامج التصميم

حيث ستضطر لنقل مكان ال animation timeline position بالكود وبالتالي يجب عليك معرفة هذه القيم من المصمم

بالطبع فانني اعتقد ان الامور اعقد من ذلك بكثير

الا انه في الالعاب التي تتم في الشركات الكبيرة فأعتقد انه يتم تصميم نظام حركة كجزء من ال game engine يوفر لهم كل ما يحتاجونه

وكذلك يكون لديهم custom exporters for any models

كلمة اخيرة

يمكنك الاستفادة من المثال الذي مع الدايركت اكس

والخاص بالتحريك والمسمي SkinnedMesh

اعتقد انه فيه كل ما كنت تسأل عنه

وهو يستخدم ملف شخصية اسمها tiny.x

ويمكننا ان نتناقش في الكود معا لنتعلم ( مع العلم انني لم ادرس هذا المثال بعد )

هو بالطبع فيه كود اضافي لعملية ال skinning لكن يمكننا تجاهله

كما يمكنك فتح ملفات اكس الخاصة بالدايركت اكس باي برامج تحرير ملفات الكتابة

لتتعرف علي الهيكلية التي يتم بها تخزين الملف الان انك ستحتاج لفهم ال X file templates

بالتوفيق

والسلام عليكم

Ahmed Ezz

Software Engineer

ezzelden.ahmed@yahoo.com

http://ahmedezz.110mb.com/

انما عمرك بأعمالك ، فكم تريد أن تعيش؟

#11

ان الحركة في اللعبة محددة و مدروسة

فمثلا لتحريك شخصية نوفر الاطر او ما يقال عنهم فرامات الحركة اللازمة

و ليكن منها اربعة اطر للمشي الى الامام و اطر اخرى للخلف و اخرى لتوهيم الاستدارة و هذا يرجع لذكائك انت

و الان في برمجة لعبتك كل ما عليك هو ان تطلب (تستدعي) الفرامات اللازمة في كل حدث يقوم به اللاعب

تم تعديل هذه المشاركة بواسطة Farhat في 13 أغسطس 2008 في 22:51

logo.gif
#12
Farhat كتب:
ان الحركة في اللعبة محددة و مدروسة

فمثلا لتحريك شخصية نوفر الاطر او ما يقال عنهم فرامات الحركة اللازمة

و ليكن منها اربعة اطر للمشي الى الامام و اطر اخرى للخلف و اخرى لتوهيم الاستدارة و هذا يرجع لذكائك انت

و الان في برمجة لعبتك كل ما عليك هو ان تطلب (تستدعي) الفرامات اللازمة في كل حدث يقوم به اللاعب

تمام كلامك اخي Farhat

وبالطبع سيحتاج لمعرفة اماكن هذه الاطارات تحديدا ليقوم بطلب تشغيلها لكل حدث يقوم به اللاعب

لكن هل تطبيق هذا الكلام في الكود سيكون صعب؟

وماذا لو كانت كل اطارات الحركة مخزنة ضمن مجموعة واحدة كما هو الحال اذا تم استخدام ملفات اكس مع اغلب ادوات تصدير المجمسات؟

Ahmed Ezz

Software Engineer

ezzelden.ahmed@yahoo.com

http://ahmedezz.110mb.com/

انما عمرك بأعمالك ، فكم تريد أن تعيش؟

#13
aeamg2005 كتب:
وبالطبع سيحتاج لمعرفة اماكن هذه الاطارات تحديدا ليقوم بطلب تشغيلها لكل حدث يقوم به اللاعب

لكن هل تطبيق هذا الكلام في الكود سيكون صعب؟

وماذا لو كانت كل اطارات الحركة مخزنة ضمن مجموعة واحدة كما هو الحال اذا تم استخدام ملفات اكس مع اغلب ادوات تصدير المجمسات؟

أنا من ناحيتى الشخصية أرى أن هذه هي أمرن طريقة في عمل الحركة

عندما قلت ماذا لون انه اطر الحركة كانت في ملف واحد فكرتني

بملفات حركة المقاتل في لعبة مصارع الشوارع التى تكون في ملف واحد

و في كل مرة يتم قتصاص اللقطة المناسبة بطريقة الركات

هذا الكلام تماما ينطبق على برمجة العاب الثلاثية الابعاد

لذلك ترى ان معظم محترفي برمجة الالعاب ينصحوننا بتعلم برمجة الالعاب الثناية الابعاد اولا

و المعظم لا يراعي هذا الكلام

لذا ان انصح دوما بهذا الاسوب لان هذا الاسلوب طريقة مضمونة و سيقودك الى الاحسن بأذن الخالق

تم تعديل هذه المشاركة بواسطة Farhat في 14 أغسطس 2008 في 11:36

logo.gif
#14

اشكركم جزيل الشكر بالنسبه للاخaeamg2005 فقد كان شرحك مفصل تفصيل تام وواضح كوضوح الشمس واما الاخ farhat فكان شرحك مختصر ومفيد عاملاً بالمثل" خير الكلام ما قل ودل" , والان استطيع ان ابدأ ببرمجة لعبتنا الخاصه بعد ان توفرت لدي المعلومات اللازمه.

(على فكره انا استخدم محرك irrlicht لانه سهل وسوف اقوم باستبداله للدايركت اكس او الاوبن جي ال بعد ان افهم تماماً ميكانيكية برمجة الالعاب)

وشكراً جزيلا.ً

تم تعديل هذه المشاركة بواسطة ame5r في 14 أغسطس 2008 في 11:09

If Games Are Fun.....So Making Games Making Fun

مواضيع مشابهة