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

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

يأخذك هذا الدليل خلال عملية إعداد 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. قم بتنزيل مكون Standard Lip Sync Extension plugin الإضافي من جوجل درايف
  2. استخرج المجلد من الأرشيف الذي تم تنزيله إلى مجلد Plugins الخاص بمشروعك (قم بإنشاء هذا المجلد إذا لم يكن موجودًا)
  3. تأكد من إعداد مشروعك كمشروع C++ (حتى إذا لم يكن لديك أي كود C++)
  4. أعد بناء مشروعك
ملاحظة
  • هذا التمديد مطلوب فقط إذا كنت تريد استخدام النموذج القياسي. إذا كنت تحتاج فقط إلى النموذج الواقعي، يمكنك تخطي هذه الخطوة.
  • لمزيد من المعلومات حول كيفية بناء المكونات الإضافية يدويًا، راجع برنامج Building Plugins tutorial التعليمي

المكونات الإضافية الأخرى

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

التهيئة الخاصة بالمنصة

تهيئة Android / Meta Quest

إذا كنت تستهدف منصات Android أو Meta Quest وواجهت أخطاء في بناء المشروع مع هذا المكوّن الإضافي، فستحتاج إلى تعطيل بنية Android x86_64 (x64) في إعدادات مشروعك:

  1. انتقل إلى Edit > Project Settings
  2. انتقل إلى Platforms > Android
  3. ضمن Platforms - Android، قسم Build، ابحث عن Support x86_64 [aka x64] وتأكد من أنه معطل، كما هو موضح أدناه

تعطيل بنية Android x64

هذا لأن المكوّن الإضافي يدعم حاليًا فقط بنى arm64-v8a و armeabi-v7a لمنصات Android / Meta Quest.

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

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

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

Content/MetaHumans/Common/Face/Face_AnimBP

Face Animation Blueprint

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

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

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

مهم: يمكن تنفيذ مزج 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 من مُولِّد Viseme الخاص بك في وقت التشغيل (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. اضبط إعداد الطبقة:
    • أضف 1 عنصر إلى مصفوفة 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
    • عقدة المزج الطبقي → وضع 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 خيارات تهيئة خاصة بها:

الخاصيةالافتراضيالوصف
سرعة الاستيفاء25تتحكم في سرعة انتقال حركات الشفاه بين رسوميات الضحك. القيم الأعلى تؤدي إلى انتقالات أسرع وأكثر حدة.
وقت الإعادة0.2المدة بالثواني التي يتم بعدها إعادة تعيين الضحك. هذا مفيد لمنع استمرار الضحك بعد توقف الصوت.
أقصى وزن للضحك0.7يقوم بتقليص أقصى شدة لرسومية الضحك (0.0 - 1.0).

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

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

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

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

مشكلة توافق Unreal Engine 5.2

إذا كنت تستخدم Unreal Engine 5.2، فقد لا يعمل النموذج الواقعي (Realistic Model) بشكل صحيح بسبب خلل في مكتبة إعادة التشكيل (resampling library) الخاصة بـ UE. لمستخدمي UE 5.2 الذين يحتاجون إلى وظيفة مزامنة شفاه (Lip Sync) موثوقة، يرجى استخدام النموذج القياسي (Standard Model) بدلاً من ذلك.

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

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