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

معرفة الإطار الحالي(frame)للanimated Mesh

بدأه crazy Programm2007er في 21 فبراير 2009 · 8 رد · 2,244 مشاهدة · في DirectX
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

لدي سؤال تعبت في محاولة العثور على إجابة عليه وهو

كيف أستطيع معرفة الإطار الحالي(frame)للـAnimated Mesh أو skinned mesh أرجو المساعدة

−1
#2

هل سؤالي صعب لهذه الدرجة

سأوضح السؤال أكثر أو ماذا أريد بالضبط بصراحة أنا لدي مجسم متحرك(animated) لكن تواجهني مشكلة وهي أن حركة هذا المجسم تتكرر إلى مالا نهاية وأنا أريدها أن تتحرك مره واحدة فقط لا غير

أرجو أن أجد إجابة

#4

السلام عليكم, :)

كيف حالك؟

السؤال مبهم ويحتاج إلى تفاصيل تقنية, لا اعتقد إن بإمكان أحد ان يجيبك إن لم تقدم معلومات مفصلة.

ما هي لغة البرمجة؟ مكتبة الرسوميات المستخدمة؟ نوع ملف الـ mesh؟ وكيف تنفذ الحركة؟ والبرنامج المستخدم لعمل الحركة؟ كيفية التصدير؟ إلخ.

ولكن لا تنتظر إجابه مني :D

تم تعديل هذه المشاركة بواسطة SandHawk في 6 مارس 2009 في 16:52

#5

لغة البرمجة:c++

المكتبة المستخدمة:DirectX 9

نوع الملف:x-file

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

كل شيء يعمل بشكل صحيح ,

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

أرجو أن تكون قد فهمت ما أعنيه

#6

طيب، ماذا تستخدم لتحميل الملف والحركة وتشغيلهما؟ :unsure:

سأفترض إنك تستخدم الأدوات التي يوفرها دايركت أكس (من عائلة D3DXAnimation) أي إنك تقوم بالقراءة والتحميل يدوياً :) , ملفات x لا تدعم تقسيم الحركة, أي إن خط الزمن بأكمله سيخزن في الملف كحركة واحدة, ولكن تستطيع دائماً التقسيم يدوياً عن طريق الكود, مثلاً جعل الإطر من 0 إلى 30 تمثل حركة المشي قاعدة ثابتة, و 30 إلى 50 إطلاق النار, وهكذا... ولكن قد تواجه مشاكل معينة إن إستخدمت هذه الطريقة.

الخيار الآخر هو إستخدام ميزة متقدمة تدعمها ملفات x وتسمى templates, حيث يمكنك تعريف كتل بيانات خاصة بك ليتم تخزينها كجزء من ملف x, يجب ان تستخدم هذه الطريقة اصلاً لكي تضيف الجلد (skin), ستجد مثلاً شيئاً من هذا القبيل في بداية ملف Tiny.x الموجود دائماً مع طقم تطوير DirectX:

template SkinWeights {
 <6f0d123b-bad2-4167-a0d0-80224f25fabb>
 STRING transformNodeName;
 DWORD nWeights;
 array DWORD vertexIndices[nWeights];
 array FLOAT weights[nWeights];
 Matrix4x4 matrixOffset;
}

يمكنك تعريف هيكل بيانات جديد template يحمل وصف لتقسيمات الأطر حسب الحركة, ولكن يجب عليك ان تقوم بكتابة مصدّر لملفات أكس (exporter plugin) تحت برنامج التصميم ثلاثي الأبعاد الذي تستخدمه يدعم تصدير البيانات الجديدة.

أود الإشارة إلى نقطتين:

الأولى إن مجال برمجة أنظمة الحركة ليس سهلاً, يضم عدد كبير من الطرق والخوارزميات وعدد أكبر من المشاكل.

والثانية إن معلوماتي عن انظمة الحركة قد تكون قديمة لدرجة ما, من الممكن توفر طرق أبسط لحل مشكلتك اليوم, ولكني لم أسمع عنها. :huh:

حسناً, لم أفهم تحديداً المشكلة, ولكن أتمنى أن أكون قد ساعدتك في شيء.

تم تعديل هذه المشاركة بواسطة SandHawk في 8 مارس 2009 في 20:34

#7

اسف لأنني لم أرد عليك مبكرا بسبب المشاكل مع الشبكة

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

بالنسبة للمجسم المتحرك(animated mesh) فأنا أستخد عائلة D3DXAnimation الخاصة بالدايركت إكس

وأما بالنسبة لحرك المجسم فأنا عندما قمت بتصدير المجسم إلى ملف دايركت إكس فقد وضعت الإطار0-50 المشي,و51-60 الركض,61-إطلاق النار

#8
crazy Programm2007er كتب:
اسف لأنني لم أرد عليك مبكرا بسبب المشاكل مع الشبكة

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

بالنسبة للمجسم المتحرك(animated mesh) فأنا أستخد عائلة D3DXAnimation الخاصة بالدايركت إكس

وأما بالنسبة لحرك المجسم فأنا عندما قمت بتصدير المجسم إلى ملف دايركت إكس فقد وضعت الإطار0-50 المشي,و51-60 الركض,61-إطلاق النار

أي مصدّر يقدم دعم توزيع الأطر لملف X لا بد إنه يستخدم الـ templates التي ذكرتها في ردّي السابق, يجب عليك أن تقوم بقراءة الـ templates وبياناتها بنفسك من الملف وتولي عملية التقسيم بنفسك أيضاً.

نظام حركة الشخصيات الذي يأتي مع Direct3D مصمم بطريقة تجعله بلا فائدة تقريباً, حيث إنك ستضطر إلى كتابة كل العمليات التي تعتبر معقدة بنفسك, وكل ما يقدم لك Direct3D هو هيكل عمل تستخدمه, كذلك فإن نوع ملفات X أصلاً قد أكل عليه الدهر وشرب (أو بكلمة واحدة legacy :D), وليس هنالك بديل, وهي من أصلها لم تصمم لتقدم أي دعم للمزايا المتقدمة التي تعتبر إعتيادية جداً اليوم.

نصيحتي لك, إن لم تكن مجبراً على إستخدام X, إبحث عن حل آخر.

أقدم لك طريقين:

  • ملف documentation قد يكون مفيداً جداً لفهم هيكلية ملفات X وإستخدامها (ملاحظة: الكتاب المصدر مقدم مجاناً على الإنترنت! ويبدو كتاباً جيد جداً, من هنا: http://www.xmission.com/~legalize/book/download/)
  • أقدم لك مكتبة Cal3D, تحتوي على نظام متكامل لحركة الشخصيات يدعم جميع المزايا الأساسية (مثل animation blending و facial animation), وحتى بعض المزايا الغير أساسية تماماً (مثل cloth simulation), وهي مفتوحة المصدر, وتستهدف عدة منصات, كما إنها مستخدمة في عدد من الألعاب (اعتقد إن منها تجاري), مزودة بمصدّرات لبرامج التصميم التالية: 3ds max, maya, blender, milkshape
    يبدو الأمر كالحلم اليس كذلك؟ :D
    أعتبر هذه المكتبة جوهرة مدفونة في الأعماق.

حسناً, ذلك ما أستطيع تقديمه من مساعدة, أتمنى أن يكون ذو فائدة :)

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