تحريك وتجهيز الروبوت في Valley of the Ancient

إرميا جرانت، مدير الإنتاج الفني للمؤثرات الحركية في (Epic Games)، ستتناول مشاركة المدونة هذه والتنفيذ والأدوات المستخدمة لتجهيز وتحريك “The Ancient One”، الروبوت الضخم الذي تمت رؤيته في نهاية مشروع (UE5 Early Access project, Valley of the Ancient).

تم إنشاء (The Ancient One) بالتعاون الوثيق مع شركة (Aaron Sims Creative)، وقد تم تصميمه لدفع حدود بعض أنظمة المؤثرات الحركية من خلال الاستفادة من (Nanite) والتحريك بنسبة 100 بالمئة في (Unreal Engine 5 Early Acces).

بناء المخطط (Blueprint)

عند تصور The Ancient One، علمنا أننا سنستخدم (Nanite) لدفع التفاصيل الهندسية على المخلوق، وقدم هذا العديد من اعتبارات التصميم وسير العمل، وبدلاً من الاعتماد على الشبكات الهيكلية (Skeletal Meshes) والتقشير التقليدي، تم تصميم الروبوت ليكون مفصلاً بشكل صارم بشبكات نانيت (Nanite) عالية الدقة متصلة بالهيكل العظمي عبر مخطط (Blueprint)، وهذا يعني أن كل عنصر مفصلي يحتاج إلى أن يكون شبكة فريدة من نوعها، تتطلب تنظيماً محدداً جيداً.

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

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

ومن خلال اتباع هذا النهج، تمكنا من استنباط كيفية ربط الهندسة بالهيكل بسرعة باستخدام تابع صغير في (BP_AncientOne)، وهذا يعني أيضاً أن التابع نفسه ستتبع تلقائياً الهندسة والعظام الجديدة عند إضافتها.

يتكرر تابع (AttachMeshesToRig) ببساطة من خلال جميع العناصر الفرعية لمكون (BodyParts) في (BP) وتستخدم إرفاق مكون بالمكون، ولإضافة هندسة جديدة إلى منصة الحفر، تم استيراد الموقع الجغرافي إلى (UE)، ثم سحبه ضمن مكون (BodyParts).

بناء المخطط (Blueprint)

الهيكل العظمي (Skeleton)

تم اشتقاق الهيكل نفسه من الهيكل (MetaHuman)، مستفيداً من نفس التسلسل الهرمي الأساسي بأصابع أقل وإزالة العظام التصحيحية مثل التقلبات (AncientOne_skeleton_Skeleton).

وتم تعديل الهيكل إلى النسبة المناسبة في (Maya) وتم تقشيره إلى مكعب بسيط لإنشاء شبكة هيكلية في أنريل (Unreal) يمكننا ربط شبكات (Nanite) بها.

واستخدام الهيكل العظمي (MetaHuman) كقاعدة يعني أننا كنا قادرين على استخدام (MetaHuman Control Rig) على الفور لبدء المؤثرات الحركية في (UE).

وللسماح بتكرار أسهل للشخصية دون التأثير بشكل كبير على المؤثرات الحركية أو الهيكل العظمي، تم تصميم الروبوت ليكون بنفس نسبة (MetaHuman) ثم تم توسيعه في المحرك، ولقد وفر هذا قدراً كبيراً من المرونة عند الشعور بمقياس البيئة والتفاعلات الشخصية.

الهيكل العظمي (Skeleton)

منصة التحكم (Control Rig)

في (UE5 Early Access)، لا يمكننا حالياً تصور الشبكات الثابتة أو شبكات (Nanite) في محرر منصة التحكم (Control Rig)، ونظراً لأن منصة التحكم (Control Rig) تقوم دائماً بالتقييم، فقد اختبرنا الحفارة عن طريق وضعها في المستوى وإجراء تغييرات في منصة التحكم، حيث يتم تحديث تغييرات منصة الحفر ونشرها عن طريق التجميع، مما يتيح لنا تصور واختبار أداء الحفارة على 50 مليون شبكة مثلثية في الزمن الحقيقي.

منصة التحكم (Control Rig)منصة التحكم (Control Rig)

لإنشاء منصة التحكم (Control Rig) للروبوت، بدأنا مع منصة التحكم (Control Rig) من مشروع (MetaHuman) (AncientOne_Body_CtrlRig) وقمنا بإجراء بعض التعديلات.

أولاً، قمنا بتحديث التسلسل الهرمي لمنصة الحفر (Rig Hierarchy) ومعاينة الشبكة (Preview Mesh) إلى الهندسة الجديدة.

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

تحتوي منصة التحكم على ثلاثة أوضاع (حدث الإعداد (Setup Event)، والحل للأمام (Forward Solve)، والحل للخلف (Backward Solve))، في منصة (MetaHuman)، يكيف حدث الإعداد جميع عناصر التحكم مع التسلسل الهرمي لمنصة الحفر المستوردة، مما يتيح لنا إعادة استخدام هذه المنصة.

ويقوم بذلك عن طريق قراءة القيم الأولية للعظام وتعيين (Control Offset Transform)، ووضع عناصر التحكم في المواقع المناسبة للهيكل العظمي.

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

وتفترض منصة (MetaHuman Control Rig) شخصية متناظرة، لذلك تم إجراء بعض التعديلات لتغيير هذا بالنسبة للروبوت غير المتماثل.

وفي الرسم البياني لحدث الإعداد، قمنا بتكرار قسم الإعداد الأيسر، وملأنا الحقول بالمعلومات المناسبة، وربطناها بالرسم البياني.

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

منصة التحكم (Control Rig)

وبالإضافة إلى التغييرات التي تم إجراؤها على منصة (MetaHuman Control Rig) الأساسية، تمت أيضاً إضافة عناصر تحكم للوحات الدروع التي قد نرغب في تحريكها مباشرة.

وكان أحد الطلبات المحددة من قبل فريق المؤثرات الحركية هو ضبط السلاح الافتراضي على (IK) بدلاً من (FK)، وتم تحقيق ذلك بسهولة شديدة عن طريق تغيير قيم أولية (Bool) على عناصر تحكم (IK, FK) المنطقية، مثل (arm_l_fk_ik_switch) و (leg_l_fk_ik_switch).

يحتوي (Ancient One) على الكثير من الآليات والحركة الداخلية التي أردنا قيادتها من الناحية الإجرائية، وتقليل مقدار العمل على المؤثرات الحركية وتمكيننا من اختبار سير عمل المؤثرات الحركية الإجرائية في سياق المؤثرات الحركية السينمائية إلى اللعب.

وبدلاً من توسيع منصة (MetaHuman) لإضافة العناصر المدفوعة تلقائياً للشخصية، قمنا بتقسيم جميع الآليات الميكانيكية المدفوعة إجرائياً إلى منصة تحكم منفصلة (AncientOne_Mechanics_CtrlRig)، وتتم إضافة منصة التحكم هذا إلى مخطط الرسوم المتحركة بعد العملية الذي تم تعيينه لإعداد (Post Process Anim BP) في تفاصيل أصول الشبكة الهيكلية (AncientOne_Post_AnimBP).

ويتم تقييم مخططات المؤثرات الحركية للعملية اللاحقة بعد معالجة كل شيء آخر، بما في ذلك تسلسلات المستوى أو آلات الحالة، وهذا يعني أنه سواء تم تحريك المنصة في (Sequencer) أو تشغيل حركة إطلاق النار، فإن جميع المؤثرات الحركية الإجرائية ستطلق.

يقدم (Unreal 5 Early Access) توابع في منصة التحكم، وهذا جعل من السهل جداً تقسيم السلوك وإعادة استخدامه في أجزاء مختلفة من الحفارة، على سبيل المثال، المكابس على أكتاف وصدر الروبوت.

بالنظر إلى تابع (clavicle_pistons)، يمكننا أن نرى كيف يتم تنظيمها، يتم تمرير مجموعتين من العناصر، واحدة لعظام البداية والأخرى لعظام نهاية المكابس.

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

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

منصة التحكم 3

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

وبالنظر إلى تابع آخر (core_gears)، يمكننا أن نرى حالة استخدام أخرى للرسوم البيانية للتحكم في منصة التلاعب، وهنا، لدينا حركة إجرائية لإنشاء تذبذب يشبه الساعة للتروس الأساسية والأقراص.

وتخلق عقدة الوقت المتراكم (Accumulated Time) وقت لاستخدام العقد الأخرى وتغذيتها، مما يؤدي إلى الدوران أو التغذية الجيبية لإنشاء بعض التذبذبات.

ولتوفير مستوى أعلى من التحكم في هذا السلوك، كشفنا عن متغير (gear_weight) الذي نقوم بإدخاله في قيمة السرعة لعقدة الوقت المتراكم (Accumulated Time)، مما يمكننا من تعطيل السلوك أو مزجه من خلال مخطط (Blueprints)، وفي هذه الحالة بالذات، نستخدم هذا المتغير لمزج حركة التروس بمجرد هزيمة (The Ancient One).

منصة التحكم 4

المؤثرات الحركية في التسلسل (Animating in Sequencer)

عند تطوير (The Valley of the Ancient)، كان الهدف دائماً هو تحريك أكبر قدر من أداء (The Ancient One) في (UE5 EA)، وتم إجراء العديد من التحسينات مؤخراً على (Sequencer)، أداة المؤثرات الحركية غير الخطية (nonlinear animation) من (Unreal Engine)، وقد منحنا هذا المشروع الفرصة لمعرفة إلى أي مدى يمكننا دفعه.

ولبدء إنشاء المؤثرات الحركية للروبوت، بدأنا بإنشاء تسلسل المستوى في المستوى وإضافة (BP_AncientOne) إليه، والشيء المهم الذي يجب ملاحظته هو أن الروبوت يتم وضعه وقياس حجمه في البيئة عبر تحويل الممثل في لوحة تفاصيل العالم، وليس منصة التحكم.

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

والآن بعد أن تم إعداد تسلسل المستوى، أصبحنا قادرين على بدء المؤثرات الحركية، ويمكن إضافة منصة التحكم في المؤثرات الحركية للجسم إلى (Sequencer) عن طريق النقر فوق (+Track) على (BP_AncientOne) والانتقال إلى (Control Rig -> Asset-Based Control Rig -> AncientOne_Body_CtrlRig).

وستؤدي إضافة مسار منصة التحكم (Control Rig) إلى تبديل وضع (Level Editor) تلقائياً إلى وضع المؤثرات الحركية (Animation).

ويمكن القيام بذلك يدوياً عن طريق النقر فوق “رمز الرجل الراكض” في شريط الأدوات (toolbar) أعلى منفذ العرض (viewport)، وسيؤدي توسيع المسار في تسلسل المستوى إلى الكشف عن قائمة من عناصر التحكم التي يمكن تمييزها ويمكننا الآن أيضاً رؤية عناصر التحكم في منفذ العرض (viewport) التي يمكن التلاعب بها وتحريكها.

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

ويمكن العثور على هذه التسلسلات في المجلد: (/AncientBattle/Characters/AncientOne/Animations/SourceSequences/).

ويؤدي فتح (SEQ_Robot_Fire Level Sequence) إلى تحميل الروبوت في الموقع المناسب في العالم، ونحن قادرون على تعديل تسلسل المستوى هذا لضبط المؤثرات الحركية لإطلاق النار لدينا.

ملاحظة: سيؤدي فتح أي من تسلسلات المصدر في مستوى جديد إلى تحميل الروبوت حيث سيتم توليده في المستوى الرئيسي، وليس في الأصل، ويتم تمييز تحويل الإزاحة هذا في تسلسل المستوى.

والجديد في (UE5 EA) هو بعض الأدوات المساعدة للمؤثرات الحركية الموجودة في رف الأدوات في نافذة (Animation Mode).

ومن هنا يمكنك تغيير وضع منفذ العرض (viewport) بسرعة إلى تحديد عناصر التحكم فقط (Select Only Controls)، مما يسهل كثيراً تحديد عناصر التحكم في محرر المستوى مع تجنب كائنات العالم الأخرى.

وبالإضافة إلى ذلك، هذا هو المكان الذي يمكنك فيه الوصول إلى مكتبة (Pose) الجديدة وأداة (Tween) وأداة (Snapper).

هذا وأصبحت مكتبة (Pose)، على وجه الخصوص، مفيدة أثناء تطوير المشروع، وتمكن رسامو المؤثرات الحركية من إنشاء أوضاع (Control Rig) لاستخدامها لاحقاً، مثل وضع اليد ووضعية الجسم بالكامل مثل وضع الخمول.

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

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

المؤثرات الحركية في التسلسل (Animating in Sequencer)

تحتوي تسلسلات المستوى على ميزة أحدث، تم تقديمها في (4.26)، تسمى تسلسلات المؤثرات الحركية المرتبطة (Linked Animation Sequences)، حيث تمكّنك هذه الميزة من تحديث تسلسل المؤثرات الحركية الهيكلية تلقائياً في كل مرة يتم فيها حفظ تسلسل المستوى، وما يعنيه هذا هو أنه من خلال المؤثرات الحركية في التسلسل، يمكنك تلقائياً إخراج المؤثرات الحركية الخاصة بك لاستخدامها في مخططات الرسوم المتحركة، بدون أي انطلاق دائري، وكانت هذه هي الطريقة الرئيسية المستخدمة لإنشاء جميع تسلسلات المؤثرات الحركية للروبوت.

ولإنشاء تسلسل رسوم متحركة مرتبط (Linked Animation Sequence)، انقر بزر الماوس الأيمن على الممثل في التسلسل (BP_AncientOne)، واختر إنشاء تسلسل رسوم متحركة مرتبط (Create Linked Animation Sequence)، وسيطالبك هذا بموقع لحفظ تسلسل المؤثرات الحركية، وبعد إنشاء هذا الرابط، تأكد من حفظ تسلسل المستوى وتسلسل المؤثرات الحركية الجديد.

المؤثرات الحركية في التسلسل (Animating in Sequencer)

ويمكن إتمام التنقل إلى تسلسل المؤثرات الحركية المرتبط بالنقر بزر الماوس الأيمن على الممثل في التسلسل وتحديد (Open Linked Animation Sequence)، وبالمثل، يمكن الوصول إلى تسلسل المستوى الأصلي من تسلسل المؤثرات الحركية بالانتقال إلى الزر تحرير في التسلسل في محرر تسلسل المؤثرات الحركية (Animation Sequence Editor) والنقر فوق تسلسل المستوى المفتوح (Open Level Sequence).

نصيحة: لإنشاء تسلسلات مستوى إضافية لحالات المؤثرات الحركية المختلفة، قمنا فقط بتكرار أصول تسلسل المستوى (Level Sequence assets) وحذفنا إطارات المفاتيح للبدء من جديد، وإذا تم ربط تسلسل المستوى (Level Sequence) المكرر بتسلسل المؤثرات الحركية (Animation Sequence)، فتأكد من إنشاء تسلسل مؤثرات حركية مرتبط (linked Animation Sequence) جديد حتى لا تقوم بالكتابة فوق تسلسل المؤثرات الحركية (Animation Sequence) الخطأ عن طريق الخطأ.

من الفوائد الكبيرة لاستخدام منصة التحكم (Control Rig) في التسلسل (Sequencer) جنباً إلى جنب مع تسلسل المستوى المرتبط (Linked Level Sequences) مدى سهولة تحديث المؤثرات الحركية بمجرد تعديل الهيكل العظمي.

ونظراً لأن (Sequencer) يقود أدوات التحكم، وليس العظام، فسوف يستجيب لأي تغييرات في منصة التحكم، ما عليك سوى فتح تسلسل المستوى (Level Sequence) وإعادة حفظه لتحديث أصول المؤثرات الحركية، وإعادة التشغيل لأحدث تغييرات الهيكل العظمي.

تأثير IK الكامل للجسم (Full-Body IK)

سنلقي نظرة على طبقة (IK) لكامل الجسم التي تمت إضافتها لتوسيع وضبط وضعية (The Ancient One) لأنها تستهدف البطل، وتم تصميم التأثير ليكون مضافاً، مما يعزز نية الرسام وليس استبداله.

في (UE5 EA)، تم تحسين محلل (IK) لكامل الجسم ليكون أسرع وأسهل في التلاعب به، ويمكن الوصول إلى (IK) لكامل الجسم كعقدة في منصة التحكم (Control Rig)، مع هذا التأثير الخاص الموجود في (CR_AncientOne_ArmAim_CtrlRig).

وقبل أن ننظر إلى أصل منصة التحكم (Control Rig) الذي يُنشئ التأثير، دعنا نلقي نظرة على كيفية تشغيله، يتحكم مخطط المؤثرات الحركية للروبوت (AncientOne_AnimBP)، في السلوك باستخدام آلة حالة بسيطة، ثم يمرر الوضع إلى عقدة منصة التحكم (Control Rig) قبل إخراج الوضع النهائي، ونجمع أيضاً بعض المتغيرات لتمريرها إلى عقدة منصة التحكم (Control Rig) بالإضافة إلى دفع مقدار الوزن لمزج وإيقاف عقدة منصة التحكم (Control Rig) نفسها عبر متغير (AlphaCR).

تأثير IK الكامل للجسم (Full-Body IK)

باستخدام المتغير (Alpha_CR)، يمكننا التحكم في وقت تطبيق تأثير (Full-Body) ومدى سرعة مزجه أو إيقاف تشغيله مع خصائص (Interp) لعقدة المؤثرات الحركية (Control Rig)، وتحديد العقدة والبحث في لوحة التفاصيل، يمكننا رؤية قسم (Alpha Scale Bias Clamp), والحيلة الرائعة التي نحب استخدامها هي وجود سرعات مختلفة بين سلوك المزج في مقابل سلوك المزج، ويتيح لنا ضبط زيادة سرعة (Interp) وتقليل سرعة (Interp) القيام بذلك تماماً، وتمزج منصة التحكم بسرعة ولكنه يختفي ببطء، وينعكس هذا في وصف دبوس وزن العقدة FInterp(Alpha, (10:2)).

يوفر لنا متغير (Reach Amount) قيمة تعويم سريعة من (0-1) لضبط مدى وصول الروبوت إلى بطل الرواية (Echo) عند إطلاق النار، إنها لا تعتمد على أسلوب اللعب، بل هي مجرد قيمة حددناها في (AnimBP) لتحكم إضافي في الفن القابل للتوجيه.

ويمثل متغير موقع الليزر الموضع في العالم حيث يضرب الليزر الأرض، ويتم تعيين هذه القيمة مباشرة من (BP_AncientOne) وتخبر (FBIK) في منصة التحكم بما يجب الوصول إليه.

يمكننا فتح منصة التحكم (Control Rig) عن طريق النقر المزدوج على العقدة في (AnimBP)، الرسم البياني بسيط للغاية للوهلة الأولى.

ويتم تحويل (LaserLocation) من فضاء العالم الخاص به ليكون نسبياً للروبوت، ثم يتم استخدامه لقيادة عنصر تحكم يسمى (actor_transform).

ويتم استخدام عنصر التحكم هذا لتمثيل مكان إطلاق الروبوت، من خلال تجاوز عنصر التحكم في (Set Translation)، يمكننا تحريك عنصر التحكم يدوياً لاختبار الروبوت وتصحيحه مباشرةً في محرر منصة التحكم (Control Rig).

تأثير IK الكامل للجسم (Full-Body IK)

بشكل افتراضي، ستستخدم (Control Rig IK) لكامل الجسم، لكننا قمنا بتضمين متغير (BasicIK) لتمثيل نهج مبسط، ويؤدي النقر المزدوج على عقدة (AimWithFBIK) إلى الانتقال إلى وظيفة إنشاء تأثير (IK) لكامل الجسم.

تأثير IK الكامل للجسم (Full-Body IK)

يمكن تقسيم تابع (AimWithFBIK) إلى عدة أجزاء (جمع البيانات، وضبط الوركين، وحساب مقدار الوصول، وتطبيق IK كامل الجسم، وأخيراً ضبط اتجاه اليد).

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

العقدة الأولى التي نواجهها في التابع هي عقدة الدخول (Entry node)، تليها عقدة التسلسل (Sequence node)، غالباً ما نستخدم عقد التسلسل للمساعدة في تقسيم التوابع إلى خطوات منطقية، وتحسين قابلية القراءة وسهولة تصحيح الأخطاء.

ويعالج الدبوس “A” في عقدة التسلسل جمع البيانات وضبط الوركين، ولجمع بيانات تحويل العظام، نستخدم عقدة (Get Transform) ونغذي قيمة التحويل إلى عقدة (Set Transform) لعنصر تحكم.

ويُعد إنشاء عناصر تحكم وتعيين تحويلاتها إلى تحويل العظم طريقة رائعة لتخزين الوضع المتحرك الوارد من مخطط المؤثرات الحركية لأن كل ما يحدث مرئي للغاية، ومن السهل تصحيح الأخطاء عند حدوث خطأ ما.

ونقوم بتخزين العديد من التحولات العظمية على عناصر التحكم، ولكن العناصر التي نستخدمها في النهاية هي (foot_l) و(foot_r) و(hand_r) وعظام التحكم.

وباتباع أزواج (Get / Set Transform) لتخزين العظام على عناصر التحكم هي عقدة (Offset Transform) وقليلاً من المنطق لتخفيف الحوض للأمام.

ويؤدي هذا بشكل أساسي إلى تزييف الروبوت الذي ينحني للأمام بينما ينطلق الليزر، وعندما ينطلق انفجار الليزر بعيداً عن الروبوت، تتضاعف كمية صغيرة من تلك الحركة في (Offset Transform).

عند تحريك عقدة التسلسل (Sequence node) إلى الدبوس B، نبدأ في تنقية البيانات لكامل الجسم (IK)، والنظرية الكامنة وراء ذلك هي أننا نريد سحب الذراع اليمنى نحو (Echo) عندما يطلق الليزر، ولكن دون سحب اليد لأسفل نحو الأرض.

ولتحقيق ذلك، نقوم بدمج موضع Z لـ (hand_r_ctrl) مع الموضعين X و Y لـ (actor_transform)، ويمكننا الآن المزج بين تحويل اليد المتحرك الوارد، المخزن في (hand_r_ctrl)، وتحويلنا الجديد الذي حسبناه للتو، ويمثل تحويل الإخراج من (Interpolate) هدفنا الجديد الذي يمثل اليد اليمنى، والتي يتم تغذيتها مباشرة في محلل (IK) لكامل الجسم.

تأثير IK الكامل للجسم (Full-Body IK)

الآن وقد تم جمع جميع البيانات وصقلها، أخيراً قمنا بإدخالها جميعاً في الحل، ومن المهم أن تأخذ الوقت الكافي للتأكد من أن أي بيانات تم جمعها نظيفة وتقديم النتائج المتوقعة قبل إدخالها في أي محلل.

تأثير IK الكامل للجسم (Full-Body IK)

بدلاً من شرح كل إعدادات الحل هنا، توجه إلى البث المباشر المسجل حديثاً (Motion Warping and Full-Body IK | Inside Unreal) في هذا الفيديو، نتعمق في الأعمال الداخلية للحل وكيف يتم استخدامه في (The Ancient One)، على مستوى عالٍ، كل ما نريد فعله هو الحفاظ على القدمين مزروعتين وتعديل بقية الجسم للانحناء نحو الصدى، مع التقدم إلى الأمام باليد اليمنى.

ومن خلال تعديل بعض إعدادات العظام على المحلول، يمكننا تحسين العظام التي يمكن أن تلتوي وتتحرك بينما يحاول القائم بالحل الوصول إلى التحولات التي قدمناها.

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

وبهذه الطريقة، نستخدم أداة الحل لنقاط قوتها ونحافظ على قابلية التوجيه الفني دون الكثير من الإحباط، بالنسبة لإعداد الهدف، نحن فقط نحدد المحور لراحة اليد ونقدم (actor_transform) كهدف.

أخبر قصصك

تدور المؤثرات الحركية حول سرد قصة، وفي (Epic)، نعمل بجد لإنشاء أدوات لرواة القصص، ونحن الآن نرى فقط ما يمكن أن يفعله (Sequencer) مع المؤثرات الحركية للشخصية، سواء كان ذلك باستخدام مفتاح يدوي (hand-keyed) أو مع التقاط الحركة (motion capture).

وباستخدام أدوات مثل منصة التحكم (Control Rig) و(Full-Body IK)، جنباً إلى جنب مع محرك وقت التشغيل، ستكون القصص التي نرويها أكثر ديناميكية ومغامرة.

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

وتم تصميم كل جزء قمنا ببنائه لتمكين الفنانين والمصممين، وقدمت منصة التحكم (Control Rig) المفاتيح والمفاتيح وكانت مجرد أداة واحدة في صندوق أدوات جيد التجهيز.

وندخل في مزيد من التفاصيل حول برنامج حل (IK) لكامل الجسم وتنفيذ الرسم البياني (جنباً إلى جنب مع الأخطاء الفادحة على طول الطريق) في البث المباشر الأخير داخل Unreal.

المصدر
هنا

مقالات ذات صلة

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني.