الشبكة العربية لمطوري الألعاب

خبير  أحمد عزالدين مشاركة 1

السلام عليكم

اعتذر ان كان هذا السؤال في القسم غير المناسب ويمكنكم نقله

الان لدي مثال بسيط يقوم بتحميل ملف مجسم x file ويحاول تطبيق الدوران علي بعض ال nodes/frames الفرعية من هذا المجسم
المجسم عبارة عن سيارة مكونة من عدة عقد nodes حيث هنا في هذا المثال تم اضافة pivot frames لفصل المشاكل الناتجة من من تطبيق اكثر من دوران علي نفس ال node
للتوضيح لدينا العقد الاساسية للسيارة وهي تمثل هيكل السيارة والمصابيح الامامية وايضا عقدة تمثل العجل الامامي وعقدة تمثل العجل الخلفي
لكن تم اضافة عقدة اخري مع مجسم العجل الامامي للسيارة لاتاحة عمل دوران steering بحيث لا يتسبب بمشاكل في الدوران حول محور اكس
يعني اذا اردنا اضافة تأثير الدوران حول محور اكس وكذلك المحور y في مصفوفة دوران واحدة فان ذلك سيسبب مشكلة خصوصا اذا اردنا الدوران بطريقة مختلفة لكل نوع دوران - يعني اذا اردنا تطبيق الدوران locally حول المحور x ولكن اردنا الدوران حول y لكن بالنسبة للمتجه up للعقدة الاب parent

اعتذر ان كان الشرح غير واضح
ما احاول تطبيقه في النهاية هو عمل دوران للعجل الامامي والخلفي للسيارة بحيث يحاكي كأن السيارة تسير ولكن عند الضغط علي زري اليمين واليسار
في لوحة المفاتيح فأريد تطبيق دوران steering كأن السيارة ستتجه يمينا او يسارا
حاولت استخدام ملف اكس ماخوذ اصلا من ملفات ال Dx SDK وحاولت التعديل عليه في اداة ال Mod Tool وهي اداة مبسطة جدا من ال XSI
لكن تظهر عدة مشاكل ربما بسبب الاداة ولكن هذه المشاكل تم حلها فبعد ان صدرت الملف من داخل اداة التصميم قمت بفتح
 الملف يدويا بال Visual studio لاجد الملف x وكوده منظم بطريقة يسهل متابعتها لكن الغريب هو الاتي
المفروض ان مجسم السيارة الاساسي (هيكل السيارة) له احداثي في الفراغ وايضا عقد عجل السيارة لابد ان يكون لها احداثي ايضا ولكنه
 relative to parent frame of refernce يعني اذا تحركت السيارة لابد من ان يتحرك العجل معها
ولكني دائما اجد احداثيات مصفوفة العجل هي مصفوفة الوحدة وهذا غير منطقي ولم اجد سبب لذلك
فالمفروض انه اذا كان كل المجسمات في الملف اكس لديها مصفوفة الوحدة فلابد ان ترسم من نفس المكان ولكن هذا لا يحدث

لقد ارفقت المشروع وهو يعمل لكن الدوران فيه غير صحيح
وبه ايضا الملف x يمكنكم اخذ نسخة احتياطية منه ومحاولة فتحه في ال XSI or ModTool لمحاولة اكتشاف الخطأ
المفروض ان يكون الملف كلاتي:


Xof 0303txt 0032 

Frame Root  
{ 
  FrameTransformMatrix 
  { 
    1.000000, 0.000000,  0.000000, 0.000000, 
    0.000000, 1.000000,  0.000000, 0.000000, 
    0.000000, 0.000000,  1.000000, 0.000000, 
   50.000000, 0.000000, 50.000000, 1.000000;; 
  } 

  Mesh CarBody { mesh data would go in here } 

  Frame Wheel1      // Child frame of Root 
  { 
    FrameTransformMatrix 
    { 
     1.000000,  0.000000, 0.000000,  0.000000,  
     0.000000,  1.000000, 0.000000,  0.000000, 
     0.000000,  0.000000, 1.000000,  0.000000, 
    -10.000000, 0.000000, 10.000000, 1.000000;; 
    } 

    Mesh Wheel1 { mesh data would go in here } 

    Frame Hub      // Child frame of Wheel 1 
    { 
      FrameTransformMatrix 
      { 
       1.000000, 0.000000, 0.000000, 0.000000, 
       0.000000, 1.000000, 0.000000, 0.000000, 
       0.000000, 0.000000, 1.000000, 0.000000, 
      -5.000000, 0.000000, 0.000000, 1.000000;; 
    } 

      Mesh Hub { Hub mesh data goes here } 

    } // end child frame Hub 

  } // end child frame Wheel 1 

  Frame Wheel2      // Child frame of Root  
  { 
    FrameTransformMatrix 
    { 
     1.000000, 0.000000, 0.000000,   0.000000, 
     0.000000, 1.000000, 0.000000,   0.000000, 
     0.000000, 0.000000, 1.000000,   0.000000, 
     10.000000, 0.000000, 10.000000, 1.000000;; 
   } 

   Mesh Wheel2 { mesh data would go in here} 

  } // end child Wheel 2 

  Frame Wheel3        // Child frame of Root 
  { 
    FrameTransformMatrix 
    { 
     1.000000, 0.000000,   0.000000, 0.000000, 
     0.000000, 1.000000,   0.000000, 0.000000, 
     0.000000, 0.000000,   1.000000, 0.000000, 
   -10.000000, 0.000000, -10.000000, 1.000000;; 
    } 

    Mesh Wheel3 { mesh data would go in here} 

  } // end child frame wheel 3 

  Frame Wheel4        // Child frame of Root 
  { 
    FrameTransformMatrix 
    { 
     1.000000,  0.000000,   0.000000,  0.000000, 
     0.000000,  1.000000,   0.000000,  0.000000, 
     0.000000,  0.000000,   1.000000,  0.000000, 
     10.000000, 0.000000, -10.000000,  1.000000;; 
    } 

    Mesh Whee4 { mesh data would go in here} 

  }// end child frame wheel 4 

} // end root frame

يجب فتح لملف باستخدام visual studio والا ستفقد عرضه بالتنسيق

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



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

ارجو التوضيح؟
وجزاكم الله خيرا
والسلام عليكم

أحمد عزالدين
طالب دراسات عليا
جامعة كالجري

خبير مدير همام البهنسي مشاركة 2

وفي 25 يوليو 2008 04:38 م، قال ahmed ezz متحمساً:

وايضا عقد عجل السيارة لابد ان يكون لها احداثي ايضا ولكنه
 relative to parent frame of refernce يعني اذا تحركت السيارة لابد من ان يتحرك العجل معها
ولكني دائما اجد احداثيات مصفوفة العجل هي مصفوفة الوحدة وهذا غير منطقي ولم اجد سبب لذلك

بالنسبة لهذه المشكلة يبدو أنك قمت بتجميد (freezing) لمصفوفات الانتقال لأجزاء السيارة بطريقة ما... والنتيجة بالطبع أن محاور الدوران لإطارات السيارة أصبحت خاطئة. 


لاحظ في الصورة المرفقة كيف أن مركز دوران الإطارات في منتصف جسم السيارة بدل من منتصف الإطار نفسه... ولكن لامشكلة في ذلك ☺  يمكنك حل الموضوع ببساطة كالآتي:
من قائمة: Transform على يمين واجهة البرنامج اختر Move Center to Vertices.
 
http://www.agdn-online.com/postfiles/post2338_547F7873.jpg



وفي 25 يوليو 2008 04:38 م، ظهر شبح ابتسامة على وجه ahmed ezz وهو يقول:

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

بصراحة قمت باختبار الملف المرفق ضمن النسخة الكاملة من البرنامج (Advanced-32) ولم تظهر عندي مشكلة تغيير الأسماء 😒 ، قد تكون هذه المشكلة من الـ MOD tool بالذات.هل يمكنك التوضيح بشكل أكثر تفصيلاً إلى ماذا تتغير هذه الأسماء؟؟؟

خبير  أحمد عزالدين مشاركة 3

السلام عليكم

كما اخبرني الاخ وساك ايضا انها لا تظهر عنده عندما استخدام الاصدارة الكاملة
لكن للعلم فان الاسماء تتغير وتصبح اسماء ال meshes كالاتي
mesh1 - mesh 2 - mesh 3 - .......
علما بأن الملف لم اعدل عليه الا قليلا ولم اغير شيئ يسبب المشكلة المذكورة

حسنا لقد قمت بالتعديل علي الملف كما ذكرت حضرتك اخي همام وتم اصلاح المشكلة
لكن ايضا يبدوا ان اداة ال Mod tool تعدل الكثير من نفسها
لا انكر انني اضضطررت لتعديل الملف يدويا مرة اخري لحذف الاطارات الزائدة وكذلك للتأكد من معمارية الملف وتظبيطها والان الملف يعمل بشكل صحيح
ارجو ان تبلغ شركة SoftImage بأن اداة ال Mod Tool حقا فيها بعض المشاكل خصوصا عند التعامل مع ملفات اكس
حيث تضيف وتغير من معمارية الملف عند تصديره بالرغم من انه قبل التصدير وداخل البرنامج يكون ذو معمارية صحيحة
وايضا الاادة تقوم بتغيير اسماء ال meshes كما ذكرت مسبقا
نرجوا ان يتم اصلاح ذلك قريبا

شكرا اخي همام
وجزاكم الله خيرا
السلام عليكم

أحمد عزالدين
طالب دراسات عليا
جامعة كالجري