مشاهدة النسخة كاملة : مشكلة في تحريك الذراعين
mk3d
5th May 2008, 03:51 PM
مرحبا
لقد قمت بتجربة تحريك شخصية، لكن المشكلة أن الذراعان لا يدوران بالشكل المطلوب.
الصورة المتحركة المرفقة توضح المشكلة (بين فريم 35 - 40)
الذراعان يتلاقان أثناء دورانهما، حتى عندما أصحح وضعيتهما تظل الحركة غريبة كأنه علي أن أصحح كل فريم لحركة الدوران.
http://i108.photobucket.com/albums/n21/mk3d/Capture8.gif
http://i108.photobucket.com/albums/n21/mk3d/Capture9.gif
ما الحل؟
Osama
5th May 2008, 05:54 PM
أهلاً اخ mk3d
قد تكون المشكلة سببها Constraint و أن لم تكن كذلك جرب تحريك UP-VECTOR الهرم الذي يتحكم بزاوية دوران الساعد
mk3d
6th May 2008, 10:37 AM
شكراً أسامة
تحريك الـ up-vector لم يساعد كثيراً، يمكن لأن المشكلة تكمن في منطقة الـ effector التي لا يمكن التحكم بمكانه عن طريق الـ up-vector.
على فكرة أنا استخدم FK في تحريك الذراع.
sherif.nagib
6th May 2008, 11:20 AM
أخي mk3d ، هذه مشكلة Gimbal Lock الشهيرة. إعطني بعض الوقت و سأرد عليك بشرح و حل إن شاء الله.
mk3d
6th May 2008, 02:59 PM
شكراً اخ شريف، أعتقد أنني سمعت بهذه المشكلة، لكن لم أعرف لها حل.
انا بانتظار ردك...
SWORDFISH
6th May 2008, 03:16 PM
if its a gimbal lock problem....i have a solution for u and that is to assign two nulls the the object that u want to rotate the first one is to control rotating the object in X axis and the other one to control rotating in the Y axis and also u can use another third one to be rotated in the Z axis ...this way when u want to rotate the object ( in your case the hand bone)in the X axis u ro tate the X-NULL towards the X-axis only and the y for the y axis and the Z for the Z axis ....this way u will never get a gimbal lock for the axies by overlapping on eachother while rotating in shaa allah
cheers
SWORDFISH
k H a L i D
6th May 2008, 07:37 PM
أكيد حل الأخ ناصر بيحل المشكلة وبيمنع حدوثها .. بس في حلول تانية متل تغير ترتيب المحاور (xyz to yxz ,zxy ..) والتحويل بين نظامي الدوران Euler - Quaternion ..
أكيد الأخ شريف رح يشرح عنها بشكل جيد
bill
6th May 2008, 09:30 PM
السلام عليكم
أخ mk3d يمكنك حل هذه المشكلة بالطريقة التالية
قم باختيار العظمة الأولى من عظام الذراع والمسماة غالبا LBicep أو RBicep ثم اضغط الاختصار Ctrl + k لفتح خصائص الحركة
ثم اذهب إلى القائمة المنسدلة المسماة Order وغير مضمونها من XYZ إلى YZX كما هو مبين في الصورة
http://www.xsiarabia.com/vb/imagehosting/2574820a367843c5.jpg
طبعا هذه العملية يجب أن تتم قبل البدء بعملية التحريك
sherif.nagib
6th May 2008, 10:54 PM
عذراً على التأخير أخي mk3d ، كان يومي مشحوناً في العمل.
في الحقيقة الحلول التي ذكرها الإخوة ناصر و بلال هي ما كنت سأقترحه. و لكن بالإضافة لذلك لدي ملحوظة بخصوص الأنيماشن و لها علاقة بالـ Gimbal ، و هي أنني أرى أنك تستخدم عظمة الـ upper arm في التحريك و لا تستخدم عظمة الكتف على الإطلاق، و هذا ما يجعل شكل الأنيماشن غريباً و يساعد على ظهور مشكلة الـ Gimbal لأنك تدور الـ upper arm حول الـ Y في مجال كبير جداً.
جرب بنفسك رفع ذراعك دون تحريك كتفك على الإطلاق، ستجد أن عظمة الكتف هي التي تشارك بالنصيب الأكبر في تلك الحركة، و في حالة الـ Rig الذي تستخدمه ممكن أن تكون عظمة الكتف هي المسئولة عن الـ Y لوحدها و الـ upper arm مسئول عن الباقي، و هذا نفس فكرة حل الأخ ناصر. و بالطبع لا غنى عن فهم مسألة ترتيب حسابات التدوير التي ذكرها الأخ بلال.
عذراً على التأخير مرة أخرى.
mk3d
7th May 2008, 01:16 AM
شكراً للجميع على المساعدة، سأقوم بتطبيق ما ذكرتموه و أضع النتيجة هنا..
Abdulhady
8th May 2008, 02:17 AM
اخواني مشكورين على الاقتراحات
بصراحة مشلكة الـ gimbal lock هي أكثر المشاكل التي تغيظني في برنامج الـ XIS
تحويل الـ Rotation Order غير مجدي كثيراً لأنه في النهاية يصبح ما كان X سابقاً هو Z حالياً ويصبح التعديل على الحركة مربك بسبب عدم معرفة المحور المحدد بالضبط والذي تم تحريكه وكيف انتقلت الحركة إلى محور ثاني ، ثم إنه حتى بعد عمل Rotation Order والتحريك بناءا على الـ Order الجديد ستجد أن المشكلة عادت وستضطر لتقوم بإعادة الـ Order إلى ترتيب آخر مرة ثانية وهكذا
وحتى موضوع التحويل من Euler إلى Quaternion يقوم بعمل كارثة في الـ FCurve بحيث يتحول كله إلى Linear و أيضا لا يمكنك التعديل عليه ببساطة
ربما اقتراح الأخ SWORDFISH هو الذي يعطي أداء مضمون ولكنها عملية ركيكة بالفعل إذا كان كل محور يحتاج إلى Null
..... !!! في النهاية أنا لا أقترح حل ولا أعرف سوى الحلول المطروحة ولكن هل يوجد حل أفضل وعملي أكثر
sherif.nagib
8th May 2008, 04:10 AM
أخي عبد الهادي، مشكلة الـ Gimbal ليست مشكلة خاصة بـ XSI، بل هي مشكلة عامة في جميع برامج الـ 3D و لها علاقة بطريقة Euler . هناك مقال لخبير XSI الشهير Michael Isner عن المشكلة و بها حل أظنه معقد بعض الشئ، لم أقرأ المقال كي أحدد محتواها و لكني أخمن.
http://www.isner.com/tutorials/quatSpells/quaternion_spells_14.htm
مشكلة الـ Gimbal لا تقابل فناني التحريك سوى في عظمة الكتف لأنها تشريحياً عظمة من نوع Ball & Socket، أي تدور في جميع الاتجاهات. أما بقية عظام الجسم حسب علمي فتتحرك في محورين فقط. و لهذا فإن تقسيم المتحكم إلى اثنين لا يشكل الكثير من التعب لفناني التحريك.
تحويل الـ Rotation Order مجدي بالطبع ، و هام جداً حتى لعظام الجسم التي تدور في محورين فقط و ذلك لتساعدك على اختيار محورين. فالمحور الذي في المنتصف عند تحريكه يجعل الاثنان الأخران يركبان على بعض.
بمعنى.. لو الـ Rotation Order لديك في حالة ما هو XYZ ، فهذا معناه أن تدوير الـ Y سيجعل الـ X و الـ Z يركبان على بعض و يصبحان محوراً واحداً.
لذا لو لديك عظمة أو أي object تريده أن يدور في الـ X و الـ Z و لا تهتم بدورانه في الـ Y، عليك جعل الـ Y في المنتصف ، و لا يهم وقتها إن كان الترتيب XYZ أو ZYX. المهم أن تجعل المحور الذي لا تنوي تحريك (أو تنوي فصله بمتحكم مستقل) في المنتصف. و فهم هذا الأمر مهم جداً و ليس "غير مجدي" على الإطلاق.
sherif.nagib
8th May 2008, 04:19 AM
تحويل الـ Rotation Order غير مجدي كثيراً لأنه في النهاية يصبح ما كان X سابقاً هو Z حالياً ويصبح التعديل على الحركة مربك بسبب عدم معرفة المحور المحدد بالضبط والذي تم تحريكه وكيف انتقلت الحركة إلى محور ثاني ، ثم إنه حتى بعد عمل Rotation Order والتحريك بناءا على الـ Order الجديد ستجد أن المشكلة عادت وستضطر لتقوم بإعادة الـ Order إلى ترتيب آخر مرة ثانية وهكذا
ليس من المفروض أن تقوم بتغيير الـ Rotation order وسط عملية التحريك أكثر من مرة. و إنما الأمر يلزمه تخطيط من البداية و معرفة بالمحاور التي ستسخدمها للدوران قبل أن تقوم بالتحريك.
sherif.nagib
8th May 2008, 04:27 AM
السطور الثلاثة الأولى في الرد السابق اقتباس من رد الاخ عبد الهادي. أسف على الخطاً.
بالمناسبة، لماذا لم يعد ممكناً تحرير الردود الشخصية أو اقتباس ردود الأخرين في المنتدى ؟!
bill
8th May 2008, 10:25 PM
أنا أؤيد كلام الأخ شريف عملية تغيير الـ Order عملية مهمة جدا وضرورية وهذه هي الطريق المثالية في حل المشكلة
فهذه المشكلة لا تظهر إلا عند تدوير المحور المسبب بزاوية كبيرة ولا أعتقد أن أحد ما سيحتاج تحريك كل المحاور بدرجات كبيرة في آن واحد (بالنسبة لتحريك الشخصيات طبعا)
فوضع الـ Order على YXZ هو أفضل حل بالنسبة للـ Upper Arm
vBulletin v3.6.0, Copyright ©2000-2012,, Jelsoft Enterprises Ltd