मुख्य कंटेंट तक स्किप करें

प्लगइन का उपयोग कैसे करें

यह गाइड आपको अपने MetaHuman कैरेक्टर्स के लिए Runtime MetaHuman Lip Sync सेट अप करने की प्रक्रिया के माध्यम से चलती है।

नोट: 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. स्टैंडर्ड लिप सिंक एक्सटेंशन प्लगइन को Google Drive से डाउनलोड करें
  2. डाउनलोड की गई आर्काइव से फ़ोल्डर को अपने प्रोजेक्ट के Plugins फ़ोल्डर में निकालें (यदि यह फ़ोल्डर मौजूद नहीं है तो इसे बनाएं)
  3. सुनिश्चित करें कि आपका प्रोजेक्ट एक C++ प्रोजेक्ट के रूप में सेट अप है (भले ही आपके पास कोई C++ कोड न हो)
  4. अपने प्रोजेक्ट को रीबिल्ड करें
note
  • यह एक्सटेंशन केवल तभी आवश्यक है यदि आप स्टैंडर्ड मॉडल का उपयोग करना चाहते हैं। यदि आपको केवल यथार्थवादी मॉडल की आवश्यकता है, तो आप इस चरण को छोड़ सकते हैं।
  • प्लगइन्स को मैन्युअल रूप से बनाने के तरीके के बारे में अधिक जानकारी के लिए, बिल्डिंग प्लगइन्स ट्यूटोरियल देखें

अतिरिक्त प्लगइन्स

  • यदि आप ऑडियो कैप्चर (जैसे, माइक्रोफोन इनपुट) का उपयोग करने की योजना बना रहे हैं, तो Runtime Audio Importer प्लगइन इंस्टॉल करें।
  • यदि आप मेरे प्लगइन्स के साथ टेक्स्ट-टू-स्पीच कार्यक्षमता का उपयोग करने की योजना बना रहे हैं (आपके पास अपना कस्टम TTS या अन्य ऑडियो इनपुट हो सकता है), तो Runtime Audio Importer प्लगइन के अतिरिक्त, निम्नलिखित भी इंस्टॉल करें:

प्लेटफ़ॉर्म-विशिष्ट कॉन्फ़िगरेशन

Android / Meta Quest कॉन्फ़िगरेशन

यदि आप Android या Meta Quest प्लेटफ़ॉर्म्स को टारगेट कर रहे हैं और इस प्लगइन के साथ बिल्ड एरर्स आ रही हैं, तो आपको अपनी प्रोजेक्ट सेटिंग्स में x86_64 (x64) Android आर्किटेक्चर को डिसेबल करना होगा:

  1. Edit > Project Settings पर जाएँ
  2. Platforms > Android पर नेविगेट करें
  3. Platforms - Android, Build सेक्शन के अंतर्गत, Support x86_64 [aka x64] ढूंढें और सुनिश्चित करें कि यह डिसेबल है, जैसा कि नीचे दिखाया गया है

Disable x64 Android Architecture

ऐसा इसलिए है क्योंकि प्लगइन वर्तमान में Android / Meta Quest प्लेटफ़ॉर्म्स के लिए केवल arm64-v8a और armeabi-v7a आर्किटेक्चर्स को सपोर्ट करता है।

सेटअप प्रक्रिया

चरण 1: फेस एनीमेशन Blueprint का पता लगाएँ और उसे संशोधित करें

आपको एक एनीमेशन Blueprint को संशोधित करने की आवश्यकता है जो आपके MetaHuman कैरेक्टर के फेशियल एनीमेशन्स के लिए उपयोग किया जाएगा। डिफ़ॉल्ट MetaHuman फेस एनीमेशन Blueprint यहाँ स्थित है:

Content/MetaHumans/Common/Face/Face_AnimBP

फेस एनीमेशन ब्लूप्रिंट

आपके पास लिप सिंक कार्यक्षमता को लागू करने के लिए कई विकल्प हैं:

डिफ़ॉल्ट Face_AnimBP को सीधे खोलें और अपने संशोधन करें। किसी भी परिवर्तन का प्रभाव इस एनीमेशन ब्लूप्रिंट का उपयोग करने वाले सभी MetaHuman कैरेक्टरों पर पड़ेगा।

नोट: यह दृष्टिकोण सुविधाजनक है लेकिन डिफ़ॉल्ट एनीमेशन ब्लूप्रिंट का उपयोग करने वाले सभी कैरेक्टरों को प्रभावित करेगा।

महत्वपूर्ण: Runtime MetaHuman Lip Sync blending को किसी भी Animation Blueprint asset में लागू किया जा सकता है जिसमें default MetaHuman के Face_Archetype_Skeleton में मौजूद facial bones वाले pose तक पहुंच हो। आप उपरोक्त विकल्पों तक सीमित नहीं हैं - ये सिर्फ सामान्य implementation approaches हैं।

Step 2: Event Graph setup

अपना Face Animation Blueprint खोलें और Event Graph पर स्विच करें। आपको एक generator बनाने की आवश्यकता होगी जो audio data को process करेगा और lip sync animation generate करेगा।

  1. Event Blueprint Begin Play node जोड़ें यदि यह पहले से मौजूद नहीं है
  2. Create Runtime Viseme Generator node जोड़ें और इसे Begin Play event से कनेक्ट करें
  3. आउटपुट को एक variable (जैसे "VisemeGenerator") के रूप में save करें ताकि graph के अन्य भागों में उपयोग किया जा सके

Creating Runtime Viseme Generator

चरण 3: ऑडियो इनपुट प्रोसेसिंग सेट अप करें

आपको ऑडियो इनपुट को प्रोसेस करने के लिए एक विधि सेट अप करने की आवश्यकता है। यह आपके ऑडियो स्रोत के आधार पर कई तरीकों से किया जा सकता है।

यह दृष्टिकोण माइक्रोफोन में बोलते समय रियल-टाइम में लिप सिंक करता है:

  1. Runtime Audio Importer का उपयोग करके एक Capturable Sound Wave बनाएं
  2. ऑडियो कैप्चर करना शुरू करने से पहले, OnPopulateAudioData डेलिगेट से बाइंड करें
  3. बाउंड फ़ंक्शन में, अपने Runtime Viseme Generator से ProcessAudioData को कॉल करें
  4. माइक्रोफोन से ऑडियो कैप्चर करना शुरू करें

Copyable nodes.

Lip Sync During Audio Capture

Step 4: Anim Graph setup

इवेंट ग्राफ़ सेटअप करने के बाद, जनरेटर को कैरेक्टर की एनीमेशन से कनेक्ट करने के लिए Anim Graph पर स्विच करें:

Lip Sync

  1. मेटाह्यूमन चेहरा वाले पोज़ का पता लगाएं (आमतौर पर Use cached pose 'Body Pose' से)
  2. Blend Runtime MetaHuman Lip Sync नोड जोड़ें
  3. पोज़ को Blend Runtime MetaHuman Lip Sync नोड के Source Pose से कनेक्ट करें
  4. अपने RuntimeVisemeGenerator वेरिएबल को Viseme Generator पिन से कनेक्ट करें
  5. Blend Runtime MetaHuman Lip Sync नोड के आउटपुट को Output Pose के Result पिन से कनेक्ट करें

Blend Runtime MetaHuman Lip Sync

जब ऑडियो में लिप सिंक का पता चलता है, तो आपका कैरेक्टर तदनुसार गतिशील रूप से एनिमेट होगा:

Lip Sync

हँसी एनीमेशन

आप हँसी एनीमेशन भी जोड़ सकते हैं जो ऑडियो में पाई गई हँसी पर गतिशील रूप से प्रतिक्रिया देंगे:

  1. Blend Runtime MetaHuman Laughter नोड जोड़ें
  2. अपने RuntimeVisemeGenerator वेरिएबल को Viseme Generator पिन से कनेक्ट करें
  3. यदि आप पहले से ही लिप सिंक का उपयोग कर रहे हैं:
    • Blend Runtime MetaHuman Lip Sync नोड के आउटपुट को Blend Runtime MetaHuman Laughter नोड के Source Pose से कनेक्ट करें
    • Blend Runtime MetaHuman Laughter नोड के आउटपुट को Output Pose के Result पिन से कनेक्ट करें
  4. यदि केवल हँसी का उपयोग कर रहे हैं बिना लिप सिंक के:
    • अपने स्रोत पोज़ को सीधे Blend Runtime MetaHuman Laughter नोड के Source Pose से कनेक्ट करें
    • आउटपुट को Result पिन से कनेक्ट करें

Blend Runtime MetaHuman Laughter

जब ऑडियो में हँसी का पता चलता है, तो आपका कैरेक्टर तदनुसार गतिशील रूप से एनिमेट होगा:

Laughter

फेशियल और बॉडी एनीमेशन के साथ संयोजन

मौजूदा बॉडी एनिमेशन और कस्टम फेशियल एनिमेशन (जैसे एक्सप्रेशन, इमोशन, या कोई अन्य फेशियल मूवमेंट) को ओवरराइड किए बिना उनके साथ लिप सिंक और हंसी लागू करने के लिए:

  1. अपने बॉडी एनिमेशन और फाइनल आउटपुट के बीच एक Layered blend per bone नोड जोड़ें। सुनिश्चित करें कि Use Attached Parent true है।
  2. लेयर सेटअप कॉन्फ़िगर करें:
    • Layer Setup ऐरे में 1 आइटम जोड़ें
    • लेयर के लिए Branch Filters में 3 आइटम जोड़ें, निम्नलिखित 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 नोड → फाइनल 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 पैरामीटर को एडजस्ट करें (उदाहरण के लिए, 20% कम प्रोट्रूज़न के लिए 0.8)

जॉ ओपनिंग कंट्रोल

रियलिस्टिक लिप सिंक आपके ऑडियो कंटेंट और विजुअल आवश्यकताओं के आधार पर अत्यधिक रिस्पॉन्सिव जॉ मूवमेंट्स उत्पन्न कर सकता है। जॉ ओपनिंग इंटेंसिटी को एडजस्ट करने के लिए:

  1. अपने लिप सिंक ब्लेंड नोड के बाद, एक Modify Curve नोड जोड़ें
  2. Modify Curve नोड पर राइट-क्लिक करें और Add Curve Pin चुनें
  3. CTRL_expressions_jawOpen नाम के साथ एक कर्व पिन जोड़ें
  4. नोड के Apply Mode प्रॉपर्टी को Scale पर सेट करें
  5. जॉ ओपनिंग रेंज को नियंत्रित करने के लिए Value पैरामीटर को एडजस्ट करें (उदाहरण के लिए, जॉ मूवमेंट को 10% कम करने के लिए 0.9)

कॉन्फ़िगरेशन

लिप सिंक कॉन्फ़िगरेशन

Blend Runtime MetaHuman Lip Sync नोड में इसके प्रॉपर्टीज पैनल में कॉन्फ़िगरेशन विकल्प हैं:

प्रॉपर्टीडिफ़ॉल्टविवरण
इंटरपोलेशन स्पीड25नियंत्रित करता है कि विसेम्स के बीच लिप मूवमेंट्स कितनी तेज़ी से ट्रांज़िशन करते हैं। उच्च मान तेज़ और अधिक अचानक ट्रांज़िशन्स का परिणाम देते हैं।
रीसेट टाइम0.2सेकंड में वह अवधि जिसके बाद लिप सिंक रीसेट हो जाता है। यह ऑडियो बंद होने के बाद लिप सिंक को जारी रहने से रोकने के लिए उपयोगी है।

लाफ्टर कॉन्फ़िगरेशन

Blend Runtime MetaHuman Laughter नोड के अपने कॉन्फ़िगरेशन विकल्प हैं:

PropertyDefaultDescription
इंटरपोलेशन स्पीड25हँसी एनिमेशन के बीच होंठों की गति के संक्रमण की गति को नियंत्रित करता है। उच्च मान तेज़ और अधिक अचानक संक्रमण का परिणाम देते हैं।
रीसेट समय0.2सेकंड में वह अवधि जिसके बाद हँसी रीसेट हो जाती है। ऑडियो बंद होने के बाद हँसी को जारी रहने से रोकने के लिए यह उपयोगी है।
अधिकतम हँसी वजन0.7हँसी एनिमेशन की अधिकतम तीव्रता को स्केल करता है (0.0 - 1.0)।

लिप सिंक मॉडल के बीच चयन

अपने प्रोजेक्ट के लिए किस लिप सिंक मॉडल का उपयोग करना है, यह तय करते समय इन कारकों पर विचार करें:

विचारस्टैंडर्ड मॉडलरियलिस्टिक मॉडल
कैरेक्टर संगततामेटाह्यूमन्स और सभी कस्टम कैरेक्टर प्रकारकेवल मेटाह्यूमन्स
दृश्य गुणवत्ताकुशल प्रदर्शन के साथ अच्छी लिप सिंकअधिक प्राकृतिक मुंह की गतिविधियों के साथ बढ़ी हुई यथार्थवादिता
प्रदर्शनमोबाइल/VR सहित सभी प्लेटफॉर्म के लिए अनुकूलितथोड़ी अधिक संसाधन आवश्यकताएँ
उपयोग के मामलेसामान्य अनुप्रयोग, गेम्स, VR/AR, मोबाइलसिनेमैटिक अनुभव, क्लोज-अप कैरेक्टर इंटरैक्शन

इंजन संस्करण संगतता

UE 5.2 संगतता समस्या

यदि आप Unreal Engine 5.2 का उपयोग कर रहे हैं, तो UE के रीसैंपलिंग लाइब्रेरी में बग के कारण रियलिस्टिक मॉडल सही ढंग से काम नहीं कर सकता है। UE 5.2 उपयोगकर्ताओं के लिए जिन्हें विश्वसनीय लिप सिंक कार्यक्षमता की आवश्यकता है, कृपया इसके बजाय स्टैंडर्ड मॉडल का उपयोग करें।

यह समस्या विशेष रूप से UE 5.2 से संबंधित है और अन्य इंजन संस्करणों को प्रभावित नहीं करती है।

अधिकांश प्रोजेक्ट्स के लिए, स्टैंडर्ड मॉडल कैरेक्टर प्रकारों की सबसे व्यापक श्रृंखला का समर्थन करते हुए गुणवत्ता और प्रदर्शन का उत्कृष्ट संतुलन प्रदान करता है। रियलिस्टिक मॉडल आदर्श है जब आपको विशेष रूप से मेटाह्यूमन कैरेक्टर्स के लिए उच्चतम दृश्य निष्ठा की आवश्यकता होती है, ऐसे संदर्भों में जहां प्रदर्शन ओवरहेड कम महत्वपूर्ण होता है।