المقالات العلمية

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

أنظمة التقاط الحركة (Mocap) أيضاً...

هذه المقالة محمية ضمن الحقوق الفكرية لشركة In|Framez Technology Corp.، ومرخصة للعرض فقط ضمن الشبكة العربية لمطوري الألعاب مع الموافقة الصريحة من المؤلف وشركة In|Framez Technology Corp.. لا يسمح بإعادة نشر هذه المقالة أو تعديلها دون الرجوع للمؤلف. يمنع النسخ والاقتباس دون ذكر المصدر والموافقة من المؤلف.

 

لماذا يجب أن تكون هذه المقالة عن الـ Mocap أيضاً؟

كل من قرأ مقالة الجرافيكس في العدد السابق يعلم لم هذه المقالة أيضاً عن الـ Mocap... أما لمن لم يقرؤها بعد، فأقول لهم أن المقالة السابقة اقتصرت على الجانب النظري لهذه الأنظمة من حيث مبدأ العمل والتجهيزات المادية والبرمجية وما إلى ذلك من هذا الحديث النظري، أما في هذه المقالة فسنعتمد مبدأ التجربة للتعلم...

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

 

كيف سيكون هذا جزءً عملياً ونحن لا نملك جهاز Mocap؟

سؤال جيد وفي وقته أيضاً... فمعظمنا لا يملك جهاز Mocap في منزله أو في حديقة داره ولا حتى في شركته -على افتراض أنه المكان الصحيح لمثل هذه الأجهزة- إضافة إلى عدم استعداد أي منا لصرف ثروة من المال في شراء جهاز Mocap من أجل متابعة مقالة ما في مجلة ما حتى ولو كانت ترونيكس!

لذلك، من حق الجميع معرفة إجابة هذا السؤال قبل الاستمرار والتورط بمتابعة سلسلة من المعلومات التقنية التي لا يمكن تنفيذها. على كلٍّ، فإن إجابة هذا السؤال تعتمد على محاكاة أو مماثلة الفكرة النظرية لأنظمة الـ Mocap عن طريق أحد برامج الكمبيوتر لاختبار مدى جودة وصلاحية النتائج التي تقدمها هذه الأنظمة قبل استثمارها بشكل فعلي.

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

 

إذن كيف سنختبر هذه الأنظمة؟

كما ذكرت سابقاً، سنقوم بمماثلة الفكرة النظرية لأنظمة الـ Mocap من خلال أحد برامج الـ 3D المعروفة (3Ds MAX, Maya, Softimage) وفي هذه المقالة سنختبر الفكرة النظرية لأنظمة الالتقاط الضوئية ضمن برنامج Softimage|XSI، ولكن بالطبع يمكن لأي شخص أن يطبقها بشكل مشابه في 3Ds MAX أو Maya.

 

تعتمد أنظمة الالتقاط الضوئية في مبدأ عملها على مجموعة وحدات لتصوير نقط الحركة المثبتة على جسم الممثل، ووحدات معالجة لاستخلاص إحداثيات هذه النقاط ضمن الفراغ من نتائج التصوير. جميع هذه العمليات تتم بشكل فوري (Real-Time) وهي أحد الأمور الهامة التي لا يمكننا (ضمن الأدوات المتاحة لدينا) تأمينها ولكن ما يهمنا كاختبار مجرد لفكرة نظرية هو أن نحصل على نتائج صحيحة.


لذلك سنقوم أولاً بتوليد معلومات الحركة ضمن برنامج الـ 3D للحصول على مجموعة من المقاطع المتحركة تحوي صور لنقط حركة وهمية مشابهة للتي ترسلها لنا وحدات التصوير في الأنظمة الضوئية. ثم سنستخدم ما يسمى بأنظمة الـ Tracking Systems المتوفرة في العديد من برامج الـ 3D لمعالجة هذه المقاطع الناتجة واستخلاص معلومات خام Raw Data يمكن استثمارها في التحكم بحركة الشخصيات تماماً كما يحدث في وحدة المعالجة الخاصة بأنظمة الالتقاط الضوئية.


تقوم أنظمة الـ Tracking بتحديد موقع أي بقعة لونية في مجموعة الصور في الفراغ ثنائي البعد (2D Space). لذلك نحن بحاجة إلى تنفيذ عمليات الـ Tracking أكثر من مرة من عدة جهات مختلفة لاستنتاج مواقع هذه النقط في الفراغ ثلاثي البعد (3D Space) حيث في الحالات النموذجية نحن بحاجة لمعالجة مسقطين متعامدين لتحديد مواقع نقط الحركة في الفراغ وهذا ما سنقوم به في هذا العمل.


ماذا بقي لدينا؟ ... الفكرة ليست واضحة تماماً؟... لا بأس يمكننا أن نبدأ ولا تقلقوا فستتضح الأمور أثناء التنفيذ العملي.

 

توليد مقاطع الحركة

سنقوم الآن بتوليد معلومات الحركة كالتي تصورها لنا وحدات التصوير في الأجهزة الحقيقية، وذلك من خلال بناء وتصوير جسم بسيط متحرك ضمن أحد برامج الـ 3D، حيث سيلعب هذا الجسم دور أحد حساسات الحركة التي تثبت على جسد الممثل.


باستخدام البرنامج المفضل لديك، قم بإنشاء كرة وأعطها لون مميز عن الخلفية (أحمر مثلاً) ثم أضف لها حركة عشوائية في الفراغ.


كرة متحركة على مسار عشوائي مع كاميرتان متعمتدان لتصويرها

أضف بعد ذلك كاميراتان ووضّعهما بشكل متعامد فيما بينهما، بحيث يتم تصوير الكرة من مسقطين مختلفين، ولا تنسى أن تتأكد من ظهور الكرة بشكل مستمر أثناء فترة تحركها. يفضل أن تكون الكاميرات المستخدمة ذات إسقاط متعامد Ortho وليس منظوري Perspective وذلك للتخلص من مشكلة التشويه التي تحدث بسبب عدسة الكاميرا والتي قد تضطرك في الحالات الدقيقة إلى القيام بعمليات تصحيح حسابية للإحداثيات النهائية المستخلصة من نتائج التصوير لهذه الكاميرات.

 
بقي أن نقوم بتخريج (Render/Caprture) ما تصوره الكاميرتان على شكل مجموعة من الكوادر المتتابعة (Sequenced Frames) لكل كاميرا على حدة، لاستخدامها فيما بعد في استنتاج إحداثيات المنطقة المطلوبة في الفراغ من خلال هذه الصور فقط تماماً كما يحدث في وحدة المعالجة في أجهزة الـ Mocap.

 

XSI FX, Maya Live وغير ذلك من هذا الهراء...

كما ذكرنا في بداية المقالة سنقوم باستخدام أحد أنظمة الـ Tracking الموجودة في برامج الـ 3D مثل Softimage|XSI و Maya لمعالجة الصور الناتجة لدينا واستنتاج إحداثيات النقطة المتحركة في الفراغ.


ولكن قبل أن نبدأ باستخدامها لا بأس بالإطلاع قليلاً على مبدأ عملها وسبب تواجدها في مثل هذه البرامج. بغض النظر عن تسميتها المختلفة في البرامج مثل XSI FX|Tracking ، MayaLive إلا أن مبدأ عملها متشابه تماماً، ويتلخص في متابعة بقعة أو مجموعة لونية خلال مجموعة من الكوادر المتتابعة ضمن الفراغ ثنائي البعد 2D Space.


توفــِّر لنا هذه الأنظمة طرق مختلفة للتحكم ومعايرة عملية المتابعة بحيث نحصل على نتائج مستقرة ودقيقة في نفس الوقت، حيث تكمن الاختلافات بين البرامج في هذه التسهيلات والميزات التي توفرها. فمثلاً يوفر لنا النظام الموجود في الـ Maya والمسمى Live نظام Tracking متكامل مخصص لمطابقة الكاميرات الافتراضية ضمن البرنامج مع الكاميرا الحقيقية المستخدمة في المقطع المعالج. بينما نظام الـ Tracking الموجود فيما يسمى الـ XSI|FX فيتشابه مع النظام الموجود في الـ Maya من حيث توفير حل كامل ومتقدم للـ Tracking ولكنه لا يقدم أية تسهيلات باتجاه تطبيق معين، لذلك يعتبر نظام أكثر شمولية من ناحية التطبيقات التي تعتمد الـ Tracking في مبدأ عملها ولكنه يحتاج بالطبع إلى المزيد من الجهد الإضافي لاستثمار المعلومات الناتجة في التطبيق المطلوب.


لذلك وبسبب الطبيعة النظرية (التجريدية) للتطبيق المستخدم في هذه المقالة سأقوم باستخدام الـ XSI|FX من أجل تنفيذ عمليات الـ Tracking والتي بالطبع يمكننا بشيء من الجهد تنفيذها بشكل مشابه في الـ Maya.

 

المزيد عن أنظمة الـ Tracking ولكن في الـ XSI

يمكننا الآن أن نبدأ بمعالجة مقاطع الحركة التي ولدناها سابقاً باستخدام نظام الـ Tracking الموجود في الـ XSI ولكني قبل أن أبدأ أريد أن أنوه إلى أني لن أخوض بالتفاصيل التقنية للبرنامج، بل سأعتمد على الصور التوضيحية إضافة إلى معرفة القارئ بأساسيات البرنامج، فالمقالة بالمحصلة ليست درس تعليمي عن الـ XSI بقدر ما هي تسليط للضوء على استخدام أحد المزايا الموجودة ضمنه وتسخيرها لاختبار فكرتنا النظرية عن الـ Mocap.

أبدأ فوراً في الـ *XSI بفتح نافذة الـ FX|Tree ، FX|Viewer و الـ FX|Operator أو يمكنك الاعتماد على واجهة الـ compositing الجاهزة من قائمة الـ Layout.


واجهة الـ compositing الجاهزة في الـ XSI

يعتمد الـ XSI في معظم أجزاءه على مفهوم المخططات الشجرية المؤلفة من عقد والتي يمكن تركيبها فيما بينها باحتمالات لا نهائية للحصول على النتائج المطلوبة، ونظام الـ compositing الذي سنستخدمه ليس استثناء.

قم بإنشاء شجرة FX Tree بسيطة. ابدأ بعقدة input ثم اربطها بعقدة Tracking.

افتح نافذة الخصائص للعقدة (input) واختر ملفات الكاميرا الجبهية المولدة سابقاً.


نافذة الخصائص للعقدة (input)

قم الآن بتحديد البقعة التي سيتم متابعتها وذلك بفتح نافذة الخصائص لعقدة الـ (tracking) وتحديد مجالات المتابعة في الـ FX|Viewer.


تحديد مجالات المتابعة في الـ FX|Viewer

إلى هنا نحن جاهزون لجعل الـ XSI يقوم بتحليل الكوادر وملاحقة البقعة التي حددتها، ولكن قبل ذلك تأكد من تحديد المجال الزمني في الـ XSI ليطابق المجال الزمني للكوادر المراد تحليلها.

 

اضغط الآن زر الـ tracking في نافذة الخصائص واترك XSI ليقوم بعمله.

 

بعد الانتهاء من هذه المرحلة سيولد لنا XSI النتائج على شكل منحنيات تابعية (function curves) أو اختصاراً (fcurves) يمكننا استخدامها لتحريك أي شيء ضمن البرنامج. للاطلاع على هذه المنحنيات، انتقل إلى صفحة الـ Track1 في نافذة الخصائص لعقدة الـ tracking، وافتح الـ Animation Editor لأي من البارامترات الموجودة في هذه الصفحة. ستظهر لك المنحنيات التابعية لكل مركبة حركة كما في الشكل.


مجموعة من المنحنيات التابعية الناتجة عملية الـ Tracking

قبل أن نبدأ باستخدام هذه المنحنيات في تحريك أي شيء، علينا أن نكرر العمليات السابقة من أجل ملفات الكاميرا الجانبية.
أصبح لدينا الآن منحنيات تابعية لتحديد حركة نقطة في الفراغ بالاعتماد على مساقط الحركة في المستوي الجانبي والأمامي وبقي لدينا أن نربطها بأي جسم لدينا ليتحرك وفقاً لها.

 
فلنجرب مكعباً صغيراً مثلاً...


اجلب مكعباً وافتح نافذة خصائص الحركة الخاصة به kine ppg. أضف لبارامتر الحركة على المحور x معادلة (expression). في نافذة تحرير المعادلات التي ستظهر لك، اكتب ما يلي لتقوم بربط حركة المكعب على المحور x مع حركة نقطة المتابعة في الـ FX|Viewer على المحور x للكاميرا الأمامية: FxTree.Tracking.Template1.Left / 10


نافذة تحرير المعادلات الخاصة ببرامتر الحركة على المحور x

لاحظ أني أضفت /10 وذلك لقسمة القيم النتاجة من عقدة الـ tracking على عشرة وجعلها صغيرة بحيث يمكن متابعة حركة المكعب بسهولة ضمن البرنامج. قم الآن بلعب الحركة لاختبار مدى صحة حركة المكعب على المحور x.

إذا كانت تجربتنا صحيحة، فيفترض أن يتحرك المكعب بشكل مشابه تماماً لحركة النقطة ضمن الـ FX|Viewer، وغالباً ستتميز النتائج بالدقة نظراً لكوننا قمنا باختبار النظام على حالة مثالية للغاية، والتي حكماً ستكون نسبة الدقة فيها مرتفعة مقارنةً بالحالات الحقيقية، حيث تتدخل الكثير من عوامل التشويه والأخطاء مثل مشاكل التشوه المنظوري لكاميرات التصوير الحقيقية، التزامن بين الكاميرات، عدم وضوح النقطة الضوئية المراد تصويرها، ظروف الإضاءة غير المناسبة، وجود عوائق تحجب ظهور بعض النقط الضوئية في أحد الكاميرات، وغيرها الكثير من المشاكل التي ستواجهك عند الاستثمار الفعلي لمثل هذا النظام البدائي. لذلك في أنظمة الـ mocap الإنتاجية يتم الاعتماد على عدد كبير جداً من الكاميرات (يصل إلى 24 كاميرا) ذات مواصفات خاصة لتصوير هدف واحد فقط مع العلم أنه نظرياً نحن بحاجة فقط إلى كاميرتين كما لاحظنا في الاختبار السابق، ولكن نظراً للعوامل السابقة وغيرها يتم الاعتماد على هذا العدد الكبير من الكاميرات ذات الموصفات الخاصة للتقليل قدر الإمكان من عوامل الخطأ الممكنة. هذا بالطبع مع الاعتماد على وحدة معالجة مستقلة لاستنتاج المنحنيات التابعية لكل نقطة بشكل اتوماتيكي وتحريك ما يماثلها ضمن البرنامج بشكل مباشر وفوري.


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


إلى هنا نكون قد تعرفنا على أنظمة الـ mocap من الناحية النظرية في العدد السابق واختبرنا مدى تعقيدها من الناحية العملية في هذا العدد، وهو بالطبع غير كاف للمهتمين بالأمر والذين يريدون المزيد من التعمق. لذلك، (وكما جرت العادة في نهاية كل مقالة) سأدرج بعض المراجع التي يمكن الاعتماد عليها للحصول على مزيد من المعلومات عن هذا الموضوع... إلى اللقاء إذن...


المراجع المفيدة

  • Motion Capture Primer by Olivier Ozoux of Softimage special projects.
  • مقالة Softimage motion capture seminars at Siggraph ‘ 96

أضف تعليقاً

Loading