مقتطف من مشاركتي هنا: https://www.reddit.com/r/godot/comments/199l8qf/people_were_annoyed_that_i_said_aaa_procedural/

طيب، الأول هعمل تعريفات وترجمة ومختصرات:

Procedural Animation:

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

زي مثلا وضع اليد على حائط:

المصدر: Reddit Link

أو تغيير وضع الأقدام علشان تلائم الأرض وتعرجاتها:

المصدر: Godot Engine Tutorial

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

Stride Warping هو تعديل لمدى طول خطوة الشخصية علشان تتناسب مع سرعتها

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

تغيير الخطوة + تعديل اتجاه الجسم + تغيير الوقفة على الأرض + البدء/التوقف كلها جزء من نظام طوره مطور ألعاب في Epic Games، ويُسمى النظام “Distance Matching”.

هل يبدو مألوفًا؟ يبدو مثل “Motion Matching”

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

لا يمكنني أيضًا شرح كيفية عمل مطابقة الحركة حتى أتمكن من جعل هذا المنشور قصيرًا قدر الإمكان.

تحاول مطابقة المسافة القيام بشيء مختلف عن مطابقة الحركة، فهي تحاول تعديل وضع الشخصية (ضع في اعتبارك تسمية “Pose Warping”)

لذا تحاول مطابقة المسافة:

1- إصلاح الوضع الحالي للشخصية بحيث تجعل الرسوم المتحركة تتطابق مع سرعة الشخصية من خلال تعديل الخطوة، وتتكيف الشخصية مع البيئة من خلال تعديل المنحدر.

2- يعوض عن الرسوم المتحركة الاتجاهية باستخدام 2 أو 4 رسوم متحركة فقط (إلى الأمام والخلف) بشكل أساسي وتوفير اختياري (إلى اليمين واليسار)

يعوض عن طريق تعديل الاتجاه، لمعرفة كيفية عمله، راجع الفيديو الخاص بي:

قالب الحركة المتقدم في عرض Godot Engine 4

3- تحقيق بداية/توقف/تغيير اتجاه جيد 180 درجة

4- دوران جيد في المكان/دوران الحركة (دوران الحركة مرتبط أيضًا بالنقطة 3)

لمزيد من المعلومات، راجع هذه المحاضرة التي أجراها المطور نفسه:

[Nucl.ai 2016] Bringing a Hero from Paragon to Life with UE4

الآن ما هو الحالة الحالية لمشروعي حول هذا الموضوع؟

لقد قمت بتنفيذ تعديل الخطوة + المنحدر + الاتجاه، وكلها موجودة في Node واحدة بمحرك Godot تسمى

“PoseWarping” (تذكر التسمية؟)

أنت فقط تقوم بإنشاء اثنين Node SkeletonIK 3D واحدة للساق اليسرى وواحدة للساق اليمنى، ثم قم بإضافة Node “تعديل الوضع” إلى Skeleton3D.

قم بتعيين SkeletonIKs لتعديل الوضع (في Inspector)، وقم بتعيين Node الشخصية (CharacterBody3D أو RigidBody3D).

وها هو يعمل!

ماذا؟ لا حاجة لإعداد ممل؟

لا، لقد قمت بالتعامل مع كل شيء داخليًا، إذا قمت بإعداد SkeletonIK3D بشكل صحيح، وقمت بتوفير اسم عظم الورك الصحيح وعظام العمود الفقري لعقدة Pose Warping (أيضًا من خلال Inspector)، وقمت فقط بتوفير “character_velocity” من كود حركتك (في القالب الخاص بي، أقوم بتوفيره من مكون CharacterMovementComponent الخاص بي، ولكن في حالة عدم رغبة شخص ما في استخدام مكون MovementComponent

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

أو تحتاج فقط إلى تغيير طول raycast أيضًا من خلال Inspector Node Pose Warping :)

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