انتقل إلى المحتوى الرئيسي

كيفية استخدام الإضافة

يأخذك هذا الدليل خلال عملية إعداد Runtime MetaHuman Lip Sync لشخصيات MetaHuman الخاصة بك.

ملاحظة: تعمل Runtime MetaHuman Lip Sync مع كل من شخصيات MetaHuman والشخصيات المخصصة. تدعم الإضافة أنواعًا مختلفة من الشخصيات بما في ذلك:

  • الشخصيات التجارية الشهيرة (Daz Genesis 8/9, Reallusion CC3/CC4, Mixamo, ReadyPlayerMe، إلخ)
  • الشخصيات ذات أشكال المزج القائمة على FACS
  • النماذج التي تستخدم معايير أشكال المزج ARKit
  • الشخصيات ذات مجموعات الفونيمات Preston Blair
  • أنظمة الفونيمات الخاصة بـ 3ds Max
  • أي شخصية ذات أهداف تشكيل مخصصة للتعبيرات الوجهية

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

المتطلبات الأساسية

قبل البدء، تأكد من:

  1. تم تمكين إضافة MetaHuman في مشروعك (ملاحظة: بدءًا من UE 5.6، لم تعد هذه الخطوة مطلوبة حيث تم دمج وظائف MetaHuman مباشرة في المحرك)
  2. لديك شخصية MetaHuman واحدة على الأقل تم تنزيلها ومتاحة في مشروعك
  3. تم تثبيت إضافة Runtime MetaHuman Lip Sync

إضافة النموذج القياسي الموسعة

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

  1. قم بتنزيل إضافة Lip Sync Extension القياسية من Google Drive
  2. استخرج المجلد من الأرشيف الذي تم تنزيله إلى مجلد Plugins الخاص بمشروعك (قم بإنشاء هذا المجلد إذا لم يكن موجودًا)
  3. تأكد من أن مشروعك تم إعداده كمشروع C++ (حتى إذا لم يكن لديك أي كود C++)
  4. أعد بناء مشروعك
ملاحظة
  • هذه الإضافة الموسعة مطلوبة فقط إذا كنت تريد استخدام النموذج القياسي. إذا كنت تحتاج فقط إلى النموذج الواقعي، يمكنك تخطي هذه الخطوة.
  • للحصول على مزيد من المعلومات حول كيفية بناء الإضافات يدويًا، راجع برنامج Building Plugins التعليمي

الإضافات الإضافية

  • إذا كنت تخطط لاستخدام التقاط الصوت (على سبيل المثال، إدخال الميكروفون)، فقم بتثبيت ملحق Runtime Audio Importer.
  • إذا كنت تخطط لاستخدام وظيفة تحويل النص إلى كلام مع ملحقاتي (قد يكون لديك نظام تحويل نص إلى كلام مخصص خاص بك أو إدخال صوتي آخر)، فبالإضافة إلى ملحق Runtime Audio Importer، قم أيضًا بتثبيت:

عملية الإعداد

الخطوة 1: تحديد وتعديل مخطط التحريك للوجه

تحتاج إلى تعديل مخطط التحريك الذي سيتم استخدامه لتعبيرات وجه شخصية MetaHuman الخاصة بك. مخطط التحريك الافتراضي لوجه MetaHuman موجود في:

Content/MetaHumans/Common/Face/Face_AnimBP

Face Animation Blueprint

لديك عدة خيارات لتنفيذ وظيفة مزامنة الشفاه (Lip Sync):

افتح Face_AnimBP الافتراضي مباشرة وقم بإجراء التعديلات الخاصة بك. أي تغييرات ستؤثر على جميع شخصيات MetaHuman التي تستخدم مخطط الحركة (Animation Blueprint) هذا.

ملاحظة: هذه الطريقة مريحة ولكنها ستؤثر على جميع الشخصيات التي تستخدم مخطط الحركة الافتراضي.

مهم: يمكن تنفيذ مزج Runtime MetaHuman Lip Sync في أي أصل رسم بياني للرسوم المتحركة لديه إمكانية الوصول إلى وضع يحتوي على عظام الوجه الموجودة في Face_Archetype_Skeleton الافتراضي لـ MetaHuman. أنت لست مقيدًا بالخيارات أعلاه - هذه مجرد طرق تنفيذ شائعة.

الخطوة 2: إعداد الرسم البياني للأحداث

افتح الرسم البياني للرسوم المتحركة للوجه الخاص بك وانتقل إلى Event Graph. ستحتاج إلى إنشاء مُنشئ سيعالج بيانات الصوت ويولد رسومًا متحركة لمزامنة الشفاه.

  1. أضف عقدة Event Blueprint Begin Play إذا لم تكن موجودة بالفعل
  2. أضف عقدة Create Runtime Viseme Generator ووصّلها بحدث Begin Play
  3. احفظ الناتج كمتغير (على سبيل المثال "VisemeGenerator") لاستخدامه في أجزاء أخرى من الرسم البياني

إنشاء مُنشئ Viseme في وقت التشغيل

الخطوة 3: إعداد معالجة إدخال الصوت

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

تقوم هذه الطريقة بمزامنة الشفاه في الوقت الحقيقي أثناء التحدث في الميكروفون:

  1. أنشئ Capturable Sound Wave باستخدام Runtime Audio Importer
  2. قبل البدء في تسجيل الصوت، قم بالربط مع المفوض OnPopulateAudioData
  3. في الدالة المرتبطة، استدعِ ProcessAudioData من مُولد الفيسيمات (Runtime Viseme Generator) الخاص بك
  4. ابدأ في تسجيل الصوت من الميكروفون

عُقد قابلة للنسخ.

مزامنة الشفاه أثناء تسجيل الصوت

الخطوة 4: إعداد Anim Graph

بعد إعداد Event Graph، انتقل إلى Anim Graph لتوصيل المولد برسم الحركة للشخصية:

Lip Sync

  1. حدد الوضعية التي تحتوي على وجه MetaHuman (عادة من Use cached pose 'Body Pose')
  2. أضف عقدة Blend Runtime MetaHuman Lip Sync
  3. وصل الوضعية بـ Source Pose الخاصة بعقدة Blend Runtime MetaHuman Lip Sync
  4. وصل متغير RuntimeVisemeGenerator الخاص بك بـ Viseme Generator pin
  5. وصل مخرج عقدة Blend Runtime MetaHuman Lip Sync بـ Result pin الخاصة بـ Output Pose

Blend Runtime MetaHuman Lip Sync

عند اكتشاف مزامنة الشفاه في الصوت، سيقوم شخصيتك بالتحريك الديناميكي وفقًا لذلك:

Lip Sync

تحريك الضحك

يمكنك أيضًا إضافة تحريكات للضحك ستستجيب ديناميكيًا للضحك المكتشف في الصوت:

  1. أضف عقدة Blend Runtime MetaHuman Laughter
  2. وصل متغير RuntimeVisemeGenerator الخاص بك بـ Viseme Generator pin
  3. إذا كنت تستخدم مزامنة الشفاه بالفعل:
    • وصل المخرج من عقدة Blend Runtime MetaHuman Lip Sync إلى Source Pose الخاصة بعقدة Blend Runtime MetaHuman Laughter
    • وصل مخرج عقدة Blend Runtime MetaHuman Laughter إلى Result pin الخاصة بـ Output Pose
  4. إذا كنت تستخدم الضحك فقط بدون مزامنة الشفاه:
    • وصل وضعية المصدر الخاصة بك مباشرة إلى Source Pose الخاصة بعقدة Blend Runtime MetaHuman Laughter
    • وصل المخرج إلى Result pin

Blend Runtime MetaHuman Laughter

عند اكتشاف الضحك في الصوت، سيقوم شخصيتك بالتحريك الديناميكي وفقًا لذلك:

Laughter

الدمج مع تحريكات الوجه والجسم

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

  1. أضف عقدة Layered blend per bone بين رسوميات الجسم والمخرج النهائي. تأكد من أن Use Attached Parent مضبوط على true.
  2. قم بتكوين إعداد الطبقات:
    • أضف عنصرًا واحدًا إلى مصفوفة Layer Setup
    • أضف 3 عناصر إلى Branch Filters للطبقة، بأسماء العظام التالية Bone Name:
      • FACIAL_C_FacialRoot
      • FACIAL_C_Neck2Root
      • FACIAL_C_Neck1Root
  3. مهم لرسوميات الوجه المخصصة: في Curve Blend Option، اختر "Use Max Value". هذا يسمح لرسوميات الوجه المخصصة (التعابير، المشاعر، إلخ) بأن يتم تركيبها بشكل صحيح فوق مزامنة الشفاه.
  4. قم بعمل التوصيلات:
    • الرسوميات الحالية (مثل BodyPose) → مدخل Base Pose
    • مخرج رسوميات الوجه (من عقد مزامنة الشفاه و/أو الضحك) → مدخل Blend Poses 0
    • عقدة Layered blend per bone → وضع Result النهائي

Layered Blend Per Bone

لماذا يعمل هذا: تقوم عوامل تصفية الفرع بعزل عظام رسوميات الوجه، مما يسمح لمزامنة الشفاه والضحك بالدمج حصريًا مع حركات الوجه مع الحفاظ على رسوميات الجسم الأصلية. خيار دمج المنحنيات "Use Max Value" يأخذ القيمة القصوى من كل منحنى بدلاً من دمجها بشكل إضافي، مما يسمح لرسوميات الوجه المخصصة (مثل التعابير والمشاعر) بالدمج بشكل صحيح مع مزامنة الشفاه دون تعارض. هذا يتطابق مع هيكل هيكل الوجه MetaHuman للتكامل الطبيعي.

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

ضبط سلوك مزامنة الشفاه بدقة

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

التحكم في بروز اللسان

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

  1. بعد عقدة Blend Runtime MetaHuman Lip Sync أو عقدة Blend Realistic MetaHuman Lip Sync الخاصة بك، أضف عقدة Modify Curve
  2. انقر بزر الماوس الأيمن على عقدة Modify Curve وحدد Add Curve Pin
  3. أضف دبوس منحنى بالاسم CTRL_expressions_tongueOut
  4. عيّن خاصية Apply Mode للعقدة إلى Scale
  5. اضبط معلمة Value للتحكم في مد اللسان (على سبيل المثال، 0.8 لتقليل البروز بنسبة 20%)

التحكم في فتح الفك

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

  1. بعد عقدة مزج مزامنة الشفاه الخاصة بك، أضف عقدة Modify Curve
  2. انقر بزر الماوس الأيمن على عقدة Modify Curve وحدد Add Curve Pin
  3. أضف دبوس منحنى بالاسم CTRL_expressions_jawOpen
  4. عيّن خاصية Apply Mode للعقدة إلى Scale
  5. اضبط معلمة Value للتحكم في نطاق فتح الفك (على سبيل المثال، 0.9 لتقليل حركة الفك بنسبة 10%)

التهيئة

تهيئة مزامنة الشفاه

تمتلك عقدة Blend Runtime MetaHuman Lip Sync خيارات تهيئة في لوحة الخصائص الخاصة بها:

الخاصيةالافتراضيالوصف
Interpolation Speed25يتحكم في سرعة انتقال حركات الشفاه بين وحدات الفونيمات المرئية. القيم الأعلى تؤدي إلى انتقالات أسرع وأكثر فجائية.
Reset Time0.2المدة بالثواني التي بعدها يتم إعادة تعيين مزامنة الشفاه. هذا مفيد لمنع استمرار مزامنة الشفاه بعد توقف الصوت.

تهيئة الضحك

تمتلك عقدة Blend Runtime MetaHuman Laughter خيارات التهيئة الخاصة بها:

الخاصيةالافتراضيالوصف
Interpolation Speed25يتحكم في سرعة انتقال حركات الشفاه بين رسوميات الضحك المتحركة. القيم الأعلى تؤدي إلى انتقالات أسرع وأكثر فجائية.
Reset Time0.2المدة بالثواني التي بعدها يتم إعادة تعيين الضحك. هذا مفيد لمنع استمرار الضحك بعد توقف الصوت.
Max Laughter Weight0.7يقوم بتقليص أقصى شدة لرسمية الضحك المتحركة (0.0 - 1.0).

الاختيار بين نماذج مزامنة الشفاه

عند اتخاذ قرار بشأن نموذج مزامنة الشفاه الذي ستستخدمه في مشروعك، ضع في الاعتبار هذه العوامل:

الاعتبارالنموذج القياسيالنموذج الواقعي
التوافق مع الشخصياتشخصيات MetaHumans وجميع أنواع الشخصيات المخصصةشخصيات MetaHumans فقط
الجودة البصريةمزامنة شفاه جيدة مع أداء فعالواقعية محسنة مع حركات فم أكثر طبيعية
الأداءمُحسّن لجميع المنصات بما في ذلك الهاتف المحمول/الواقع الافتراضيمتطلبات موارد أعلى قليلاً
حالات الاستخدامالتطبيقات العامة، الألعاب، الواقع الافتراضي/المعزز، الهاتف المحمولالتجارب السينمائية، تفاعلات الشخصيات عن قرب

التوافق مع إصدار المحرك

مشكلة التوافق مع UE 5.2

إذا كنت تستخدم Unreal Engine 5.2، فقد لا يعمل النموذج الواقعي بشكل صحيح بسبب خلل في مكتبة إعادة التشكيل في UE. لمستخدمي UE 5.2 الذين يحتاجون إلى وظيفة مزامنة شفاه موثوقة، يرجى استخدام النموذج القياسي بدلاً من ذلك.

هذه المشكلة خاصة بـ UE 5.2 ولا تؤثر على إصدارات المحرك الأخرى.

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