موضوع: تأثير gimbal lock وانواع الدوران .

ردود: 8 | زيارات: 2408
  1. #1

    تأثير gimbal lock وانواع الدوران .

    بسم الله الرحمان الرحيم .
    هذا موضوع من المواضيع الحساسة جدا في عالمي التحريك والريجنج في جميع برامج الثري دي في التدوير .
    موضوع الدوران ومشاكله يعتبر من الاشياء التي يجهلها كثير جدا من المحركين وبعضهم يتجاهلها ولايريد ان يخوض فيها ويلجئ الى حلول بسيطة لمعالجة المشاكل التي تواجه في ذالك وهناك الكثير من من تواجهه مشاكل التحريك في الدوارن ولا يفهم سبب ذالك وقد يعتقد ان هناك خطأ في تحريكه او مشكلة في البرنامج ولكن الأمر بحاجة الى فهم ودراسة لتستطيع التعامل مع مشاكل الدوران بشكل صحيح ومفهوم .
    اولا اود ان انوه الى هته المشاكل تحصل فقط في الدوران في الثري دي الأنتقال والتحجيم ليس فيهما المشكلة .الدوران وطريقة حساب البرنامج لدوران المجسمات داخل البرامج يشكل تحديا كبيرا للمبرمجين وللمستخدمين على حد سواء من ما ادى عمل بحوث وايجاد طرق عديدة في التدوير لحل المشاكل ولكن للأسف لا يوجد الحل السحري الذي يقضي على كل المشاكل .
    اولا علينا ان نعرف ان هناك نوعين من التدوير او على الأقل لنفترض ذالك فهناك انواع اخرى اكثر تعقيدا لا تهمنا .هناك ال Eular rotation وهناك ال Quaternion Rotations ونجده هذا الاخير في الماكس تحت تسمية ال TCB controllers الأقدم والأشهر هو الأويلر او قد تنطق يولر ولكنها مشهورة بالأويلر اما الطريقة الثانية فهي الأحدث وهي الطريقة المستعملة في غالبية محركات الألعاب لأنها تحل مشاكل التدوير في الطريقة الأولى .

    ال Eular rotation وهي طريقة التدوير التي تعتمد على اولويات التدوير orientation order وطبعا كل هته الأشياء توجد في جميع البرامج .فكرة اولويات التدوير تختصر في ان البرنامج لا يحسب محاور الدوران الثلاثة مرة واحدة كما نعتقد فهو يحسب محور قبل الأخر بترتيب تحدده انت في كل فريم .لاحضو اننا نجد خاصية اولويات التدوير في الأتريبيوت اديتور .



    بحيث يمكن ان تحدد له أي محور يحسب قبل الاخر، افتراضيا هي xyz ويمكن تعديلها حسب الحاجة كما سنرى ولكن التعديل يكون غالبا من اعمال من يقوم بالريجنج لأنه هو من يعلم مذا يجب ان يفعل ومذا يجب ان يوفر سنتكلم عن ذالك لاحقا .
    اذا قمنا باخذ بوكس مثلا ووضعنا القيم مثلا 10 في محور الأكس و 20 في الواي و 30 في الزاد .سيتموضع في مكان معين .اعد المحاولة ولكن من خلال ترتيب مختلف ابدأ بمحور الزاد مثلا ثم الواي ثم الأكس ستجد ان المجسم تموضع مرة اخرى في نفس المكان .لهذا قلنا سلفا ان هته المشكلة لا توجد في الأنتقال فقط في التدوير .
    الأن جرب نفس ما فعلته ولكن مع الدوران ستجد انك في كل مرة تغيير فيها ترتيب اعطائك للأوامر سيتغير شكل دوران المجسم في الأخير وستحصل في كل مرة على نتيجة مختلفة .ههها هنا فهمنا لمذا مهمة اولويات التدوير
    اعتقد ان كلنا مررنا بحالات نقوم بها بعمل حركة دوران معينة ومفهومة لدينا وواضحة ونجد ان النتيجة غريبة وغير منطقية كما سنرى مع الطائرة ذالك بسبب اكبر مشكلة موجودة في هته الطريقة من الدوران وهو تأثير الجيمبل لوك gimbal lock effect .اعتقد الكثر سمع عن هذا ولكن ماهو .
    تعتمد فكرته على وجود محور يحرك المحورين الأخرين والثاني يحرك المحور الثالث والثالث لا يحرك أي محور اخر وهذا محدد حسب اولويات الدوران .مثلا عندما تكون اولويات الدوران xyz يكون الزاد هو من يحرك كلا المحورين والواي يحرك الكس والأكس لا يحرك شيئ .لكن مذا يمكن ان ينتج لنا هذا يمكن ان ينتج لنا نتيجة خطيرة وهي ان لا نجد محور نحرك عليه .اذا اخذت مثلا الأكس وحركته 90 درجة ونحن نعلم ان الأكس حسب الترتيب الافتراضي لا يقود أي محور اخر فسيدور منفردا وسيكون متطابقا تماما مع محور الواي أي انك ستحصل على نفس النتيجة اذا عملت دوران في الواي او الأكس وفي نفس الوقت ستفقد محورا للحركة كاملا ولن يكون بامكانك ان تدور في ذالك الأتجاه لاحضو الصورة .لاحضو كيف ان الزاد والواي متطابقان ولا يوجد محور يدور الذراع الى الأمام .



    طبعا نحن هنا في وضعية الجيمبول لوك التي نختارها من خلال الضغط على حرف e زائد الفأرة اليسرى او من صندوق الأدوات .



    لكن سيقول احدنا لمذا كل هته المشكلة انا طول عمري اعمل في ال world coordinate او في ال local coordinate ولم اجد أي مشكلة في المحاور .حسننا نقول له ان تلك طرق جيدة لأخفاء المشكلة ولكنها لا تنهيها تلك طرق مجهزة لمن لا يعمل في التحريك ولا يهمه التحريك بل فقط يحرك ما يريد لكن ان كنت تعمل في التحريك فسيهمك كثيرا لأن ذالك سنجر عنه امور كثيرة .
    فقط ضعو في اذهانكم ان هتين الطريقتين ليسا طرق من طرق التدوير بل هما طريقة للتعامل مع الأويلر .
    فلنأخذ مثلا على التحريك بالطرقة local coordinate حتى نرى مشكلته .نريد ان نجعل هته الطائرة تدور في محور الأكس أي الموازي للشبكة 90 درجة ثم تدور في محور الواي 90 درجة اخرى بحيث يكون دوران منطقي الى اليمين ثم حول محورها .
    اولا بهذا الشكل .



    الى هته الوضعية .



    شاهدو الفيديو للحركة الأولى وكيف هي منطقية ومنتضمة .ولاحض في صندوق الانوات التشانل بوكس ان هناك القيمة 90 في محور دوران الأكس فقط.



    ثم نريد الطائرة ان تدور الى هته الوضعية .



    طبعا اول ما نلاحضه اننا ادرنا الطائرة فقط في محور الزاد ولكن تعدلة قيمتي الواي والأكس كلاهما اصبحت فيهما قيم غريبة .هذا لأنه كما قلنا سابقا ان هناك تحكم في محور الذي له الولوية في المحاور التابعة له وبالتالي أي تأثير عليه سيؤثر عليهم حتما .وهذا سينتج لنا ازمة لأنه سيقوم بعمل حسابات ونتائج غير مفهومة وغير متوقعة .لاحضو دوران الطائرة .



    دعونا نجرب مثال اخر عملي بكركتر هته المرة .نريده ان يعمل ما يشبه تحية هتلر تكون ذراعه موازية للأرض ثم ينزلها الى اسفل .اولا نحرك الذراع الى مكانها الذي ستبدأ منه ونضع مفاتيح كما في الصورة .



    ثم الوضعية الثانية ونضع مفاتيح ايضا طبعا التوقع الأول ان اليد ستنزل من الأمام الى اسفل في خط مستقيم ولكن ستفاجئ ان حركتها ليست كما توقعت .





    ولاحض ايضا الكيرفات وكيف ان جميع المحاور بها قيم وهنا مشكلة الأويلر الكبيرة مع ال world coordinate و ال local coordinate هي مشكلة كيرفات فالمحرك يكون عاجزا تماما عن تعديل الكيرفات بما يناسب ما يريد ان يحصل عليه من نعومة الحركة فالكيرفات تكون غير منطقية وغير مفهومة بالمرة فدوران شيئ يحدده كيرفان او ثلاثة أي انه لن يكون بانكانك ان تحدد النتيجة التي يمكن ان تحصل عليها من تعديل الكيرفات بشكل منطقي مفهوم كما في الأنتقال . هنا ياتي هدف العمل في نضام ال gimbal lock فهو خال من هذا الخلل ونتائجه منطقية ولا يوجد أي حركات غير مفهومة .كل شيئ يكون تحت سيطرة المحرك والكيرفات تكون منطقية ولا يوجد قيم الا في الكيرفات الموجدة فيها قيم وبشكل مفهوم .مثلا لاحضو الكيرفات ولاحضو النتيجة .





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






    الطريقة الثانية في التدوير وهي طريقة لا تهمنا ولكن على سبيل المعلومة فقط هي ال Quaternion Rotations وفكرتها رياضية ذكية تتلخص في اضافة محور دوران جديد يسمى محور ال twist او محور الألتفاف يسمى بال up vector .مثلا تخيلو الطائرة السابقة لديها محاور دوران عادية ولكن لديها محور رابع محور ال w وهو يشبه محور التتبع ككونسترين مثل الذي نعمله للعين مع متحكم كي تبقى تتبع المحكم ونحرك دورانها من خلال تحريكه .نفس الفكرة في المحور الرابع في هذا النضام وهذا يعطي للحركة نتائج دقيقة جدا فهي لا تعتمد على اولويات التدوير بل كل القيم تحسب في وقت واحد والنتائج تكون مضبوطة .هته الطريقة تستعمل في اللعاب لضبط مثلا حركة توجيه الطائرات .ولكنها غير مستعملة لأنها لا يوجد بها جراف اديتور ولا كيرفات حركة كما انها طريقة تدوير معقدة وصعبة الفهم والتحليل .

    ملاحضة محاور ال xyz قد تجدونها باسماء مختلفة pitch .yaw .roll



    لكن لحسن حضنا ان الميا بها ختصية تعالج ذالك المشكل الى حد كبير بحث تحول العمل الذي انجز في الوكل الى الأويلر من خلال هته الخاصية .



    هته الفيديوهات لمن لم تعمل عنده صيغة الموف .
    http://www.maxforums.net/uploaded/33578/1239495758.rar
    بعض المراجع المساعدة .

    http://en.wikipedia.org/wiki/Gimbal_lock#Example
    http://fliponline.blogspot.com/2007/...ignore-it.html
    http://en.wikipedia.org/wiki/Roll_(flight)
    http://www.everything2.net/title/Gimbal%2520Lock









  2. #2
    طالب / مدرسة الأنيميشن
    صور رمزية Master.S
    تاريخ التسجيل
    May 2008
    ردود
    1,599
    ما شاء الله عليك أخي فيصل درس قمة في الروعة
    سيتم متابعة القرائة غدا ان شاء الله
    شكرا لك
    اللهم صلي علي سيدنا محمد وعلي آله وصحبه أجمعين
    *ان اريد الا الاصلاح ما استطعت وما توفيقي الا بالله عليه توكلت واليه انيب *
    سبحان الله وبحمد الله أكبر
    يوسف الهدلي

  3. #3
    شكرا أستاذ فيصل على الشرح المفيد ونأمل أن يكون بداية سلسلة لدروس الريجينج في مايا
    ولكن ما أريد أن أفهمه هل هذا الفرق يؤثر على عملنا في كراكترات أنيميشن منتور أم أنها مجهزة بحل لجميع المشاكل

  4. #4
    مشكور جدا استاذ فيصل بس الفيديوهات الى على المنتدى مش شغاله

  5. #5
    طالب / مدرسة الأنيميشن
    صور رمزية أنس أبو بكر
    تاريخ التسجيل
    Oct 2007
    المنطقة
    المملكة العربية السعودية
    العمر
    30
    ردود
    4,869
    هل لك مدونة خاصة تكتب فيها المواضيع؟؟

    افضل ان تجمع ما كتبت وتضعه في مدونتك الخاصة حتى المواضيع المترجمة.
    مدونتي

    لاحول ولا قوة إلا بالله

  6. #6
    شكرا لك اخي ضام ربما افكر في ذالك عند الحاجة اليه .

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

  7. #7
    شكرا لك اخي ضام ربما افكر في ذالك عند الحاجة اليه .

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

  8. #8
    اخوي فيصل جزاك الله خير على الموضوع القيم لي عوده للقرائه بتمعن ان شاء الله

Bookmarks

قوانين الموضوعات

  • لا يمكنك اضافة موضوع جديد
  • لا يمكنك اضافة ردود
  • لا يمكنك اضافة مرفقات
  • لا يمكنك تعديل مشاركاتك
  •  
  • كود BB مفعّل
  • رموز الحالة مفعّل
  • كود [IMG] مفعّل
  • [VIDEO] code is مفعّل
  • كود HTML معطل