السلام عليكم
لدي سؤال تعبت في محاولة العثور على إجابة عليه وهو
كيف أستطيع معرفة الإطار الحالي(frame)للـAnimated Mesh أو skinned mesh أرجو المساعدة
السلام عليكم
لدي سؤال تعبت في محاولة العثور على إجابة عليه وهو
كيف أستطيع معرفة الإطار الحالي(frame)للـAnimated Mesh أو skinned mesh أرجو المساعدة
هل سؤالي صعب لهذه الدرجة
سأوضح السؤال أكثر أو ماذا أريد بالضبط بصراحة أنا لدي مجسم متحرك(animated) لكن تواجهني مشكلة وهي أن حركة هذا المجسم تتكرر إلى مالا نهاية وأنا أريدها أن تتحرك مره واحدة فقط لا غير
أرجو أن أجد إجابة
السلام عليكم, :)
كيف حالك؟
السؤال مبهم ويحتاج إلى تفاصيل تقنية, لا اعتقد إن بإمكان أحد ان يجيبك إن لم تقدم معلومات مفصلة.
ما هي لغة البرمجة؟ مكتبة الرسوميات المستخدمة؟ نوع ملف الـ mesh؟ وكيف تنفذ الحركة؟ والبرنامج المستخدم لعمل الحركة؟ كيفية التصدير؟ إلخ.
ولكن لا تنتظر إجابه مني :D
تم تعديل هذه المشاركة بواسطة SandHawk في 6 مارس 2009 في 16:52
لغة البرمجة:c++
المكتبة المستخدمة:DirectX 9
نوع الملف:x-file
اقتباسوكيف تنفذ الحركة؟ والبرنامج المستخدم لعمل الحركة؟ كيفية التصدير؟
كل شيء يعمل بشكل صحيح ,
ربما لم تفهمني سأعطيك مثال(لدي مجسم جندي لديه حركة إطلاق النار ولكنها تتكرر إلى مالا نهاية عند تنفيذها وأنا أريدها أن تتكرر مره واحدة فقط عند الضغط على زر معين)
أرجو أن تكون قد فهمت ما أعنيه
طيب، ماذا تستخدم لتحميل الملف والحركة وتشغيلهما؟ :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
اسف لأنني لم أرد عليك مبكرا بسبب المشاكل مع الشبكة
بالنسبة لكلامك فأنا بصراحة لم أفهم جيدا ما تعنيه ولكن سأخبرك بشيء
بالنسبة للمجسم المتحرك(animated mesh) فأنا أستخد عائلة D3DXAnimation الخاصة بالدايركت إكس
وأما بالنسبة لحرك المجسم فأنا عندما قمت بتصدير المجسم إلى ملف دايركت إكس فقد وضعت الإطار0-50 المشي,و51-60 الركض,61-إطلاق النار
crazy Programm2007er كتب:اسف لأنني لم أرد عليك مبكرا بسبب المشاكل مع الشبكةبالنسبة لكلامك فأنا بصراحة لم أفهم جيدا ما تعنيه ولكن سأخبرك بشيء
بالنسبة للمجسم المتحرك(animated mesh) فأنا أستخد عائلة D3DXAnimation الخاصة بالدايركت إكس
وأما بالنسبة لحرك المجسم فأنا عندما قمت بتصدير المجسم إلى ملف دايركت إكس فقد وضعت الإطار0-50 المشي,و51-60 الركض,61-إطلاق النار
أي مصدّر يقدم دعم توزيع الأطر لملف X لا بد إنه يستخدم الـ templates التي ذكرتها في ردّي السابق, يجب عليك أن تقوم بقراءة الـ templates وبياناتها بنفسك من الملف وتولي عملية التقسيم بنفسك أيضاً.
نظام حركة الشخصيات الذي يأتي مع Direct3D مصمم بطريقة تجعله بلا فائدة تقريباً, حيث إنك ستضطر إلى كتابة كل العمليات التي تعتبر معقدة بنفسك, وكل ما يقدم لك Direct3D هو هيكل عمل تستخدمه, كذلك فإن نوع ملفات X أصلاً قد أكل عليه الدهر وشرب (أو بكلمة واحدة legacy :D), وليس هنالك بديل, وهي من أصلها لم تصمم لتقدم أي دعم للمزايا المتقدمة التي تعتبر إعتيادية جداً اليوم.
نصيحتي لك, إن لم تكن مجبراً على إستخدام X, إبحث عن حل آخر.
أقدم لك طريقين:
حسناً, ذلك ما أستطيع تقديمه من مساعدة, أتمنى أن يكون ذو فائدة :)
اقتباسيبدو الأمر كالحلم اليس كذلك؟
صحيح ,وأنا أشكرك على مجهودك
تحت التجربة