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

مقال عن ملفات MD2 - تحميل ملفات Quake2

مغلق
بدأه Abdullah.Alshammeri في 30 ديسمبر 2006 · 2 رد · 1,246 مشاهدة · في قسم برمجة الألعاب و الرسوميات العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

تحميل ملفات Quake2 باستخدام لغة السى ، السى ++ و الدايركت اكس .

هذا موضوع قديم وجدته تحت كومة من ملفات الهتمل اللي موجودة في كومة من المجلدات الليب موجودة في كومة من السيديات ,

لا اعلم متى حملته .. ولا اذكر حتى أني قرأته في يوم من الايام ..

الموضوع من كيبورد الاخ : أحمد صالح .. وهو قد كتبه في منتديات vb4arab .

بتاريخ : 1-09-2004, 03:49 PM

المشكلة أنه يبدو لي ان للموضوع بقية .. ولكن لا اعلم هل اكمله احم صالح بعد ذلك .. أنا قمت بحفظ الصفحة عندي في الجهاز ولا اعلم عن بقية الموضوع .

مقدمة:

ملفات MD2 هي ملفات لعبة Quake2 للمجسمات و مصنوعة من شركة ID Software الصادرة للعبة Doom3 مؤخراً ..

يمكنك من تنزيل لبعض هذه المجسمات من موقع http://www.polycount.co/,

نوعية الملفات : ثنائية القراءة Binary و ليست نصية Text .

Binary : لا يمكن للانسان فهم محتوياتها ; لانها تُكبس المعلومات في رموز و بالتالي نلاحظ صغر حجم الملف.

Text : يمكن للانسان فهم محتواها و لكن هذا يترتب علي زيادة حجم الملف ( اى زيادة عدد الاحرف Bytes و بالتالي زيادة حجم الملف ) .

نوعية الحركة : تستخدم نظام الاطارات KeyFrames ..

هناك نوعين لانجاز عملية الحركة

1. باستخدام اسلوب الاطارات مثل افلام الكارتون بحيث نكون صور متتالية و لكل اطار مفتاح ( لتعليمه أو لترميزه عن بقية المفاتيح Keys) .

2

. باستخدام Skeleton او هيكل عظمي " مثل جسمك " بحيث تحرك كل عظمة Bone في جسم وكل رابط Joint ( معلومة في الطب : الرابط علي سبيل المثال هو الذى يربط الرسخ بالكوع ) و كل هذا لتكون حركة ناعمة و قريبة للواقع و هي ما تستخدم في الالعاب المتقدمة الان .. هذا الاسلوب يسمي Skeletal Animation ( الحركة العظمية ) .

Ahmed2.JPG

التكوين الداخلي للملف :

نعلم ان لاي ملف له عدة معلومات تسمي Header ، هذه المعلومات إما ان تحدد نوع الملف و اصداره و لكل شركة تضع رمز يرمز لها و مثلاً نلاحظ عدد النقاط الموجودة في الملف .. إلخ من المعلومات المختلفة.

انظر الي الشكل العام لملفات MD2 .

ملاحظات :

لكل اطار يا اخي له عدد من النقط vertices .. همم لنبسطها اكثر عن طريق معرفة ان

1. اي مجسم في العالم يتكون من عدد معين من النقط

2. مجموعة النقط تكون مثلثات ( و هو الشكل الذى اتفق عليه مبرمجين الرسومات لرسم المجسمات كلها حتي في برنامج الماكس ) .

في ملفات MD2 الاطارات Frames التي و كما سبق شرحنا تستخدم في انجاز الحركة Animation تتكون من " نقاط المجسم الاصلي " لذا اعلم هذا : ان لكل اطار له عدد من النقط و اعلم انه ثابت ! لا يتغير بتغير الانيمشن .. لماذا يا احمد ؟! لا يتغير ..

لان فكرة عمل التحريك باستخدام اسلوب الاطارات يعتمد علي تحريك نقاط الجسم من وضع إلي الوضع الثاني..

[

للنظر النظرة البرمجية ..

تعريف معلومات الملفت Header التي تقع في اوله او في رأس الملف ( معلومة لغة عربية .. الرأس منتهي بداية الشىء ) لذا يسمونه Header ...

كما ذكرت ان اول معلومات سوف نحملها من الملف هي معلومات الملف ..

لذا سوف نقوم بعمل هيكل بيانات من نوع Struct التي تدعمها لغة السى ، السى ++ لنعبىء بها هذه المعلومات ..

struct stMd2Header
{
int magic; // The magic number used to identify the file.
int version; // The file version number (must be 8).
int skinWidth; // The width in pixels of our image.
int skinHeight; // The height in pixels of our image.
int frameSize; // The size in bytes the frames are.
int numSkins; // The number of skins associated with the model.
int numVertices; // The number of vertices.
int numTexCoords; // The number of texture coordinates.
int numTriangles; // The number of faces (polygons).
int numGlCommands; // The number of gl commands.
int numFrames; // The number of animated frames.
int offsetSkins; // The offset in the file for the skin data.
int offsetTexCoords;// The offset in the file for the texture data.
int offsetTriangles;// The offset in the file for the face data.
int offsetFrames; // The offset in the file for the frames data.
int offsetGlCommands;// The offset in the file for the gl commands data.
int offsetEnd; // The end of the file offset.
};

كل المتغيرات التي يحتويها هيكل البيانات هذا مفهومة عدا اول اثنين علي ما اعتقد و اي سؤال نحن في الخدمة ( يحب ان اوفر طاقتي في الاهم من ذلك في المقال ) ...

اول متغيرين الاول يدل علي الرقم السحري للملف و هو IDP2 اى شركة ID .. ID Polygon2 و الثاني رقم الاصدار و هو 8 ..

فعندما تقوم بتحميل الملف يجب ان تكشف ان كان الرقم السحري IDP2 و رقم الاصدار 8 لان هذا يدل علي نوع الملف انه MD2 ..

آه و هناك متغير اخر .. قبل اخر متغير في الهيكل .. لا داع للاهتمام به لانه يخص فئة مستخدمين OpenGL.. و المتغير الاخير يعلمنا أن كنا وصلنا لنهاية الملف اول لا ( عندما نقوم بقراءة و تحميل المعلومات في الهيكل ) .

و للمقال بقية ...

بقي لنا الكود البرمجي لقراءة الملف .. و ايضاً تعاريف عدد من هياكل البيانات التي ستفيد في عملية التحميل ...

وهذا الرد قد كتبه الاخ high volt وهو مسجل عندنا بنفس الاسم ويزور منتدانا كل ستة أشهر :D .. ( معذور والله يا هاي فولت .. الاشغال نشبة في الحلق )

اقتباس
السلام عليكم

مقاله ممتازه وتشكر عليها أخي أحمد صالح

جزاك الله كل خير

هل تنطبق الفكره على ملفات Mdl؟

------------

------------

------------

تعليقي الشخصي على الموضوع:-

أتمنى نكمل الموضوع ..على الاقل نقوم بتحميل الملفات بدون انيمشن .. فهذا اسهل ,,

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

---

md2_html.zip

تم تعديل هذه المشاركة بواسطة الشمري في 30 ديسمبر 2006 في 22:52

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#2

السلام عليكم

كل عام ونت بخير أخي عبدالله

بصراحة أتمنا إكمال الموضع

ولكن عن نفسي فأنا تعلمة عن ملفات md2

فإذا في أي سؤال إحنا في الخدمة

وأشكر لك جهودك القيمة

#3

وأنت بخير أخوي ...

MD2 سهلة .. لكن الصعوبة في الانيمشن فقط .

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

هذا الموضوع مغلق.

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