- यह 2021 में बनाए गए Deus Ex 1 के lip-sync और blink animation को बेहतर बनाने वाले mod का विवरण है
- डेवलपर ने पाया कि मूल गेम का lip-sync implementation लॉन्च के समय से ही सही तरह काम नहीं कर रहा था
- Valve के Half-Life 2 जैसी phoneme extraction और viseme mapping की विधि Deus Ex में भी लागू होती है, इसका विश्लेषण किया गया
- Unrealscript code में गलत framerate check और blending timing की समस्याओं को ठीक करके अधिक स्वाभाविक animation लागू करने में सफलता मिली
- पूरी तरह सही implementation के लिए phoneme update frequency की समस्या का अलग से समाधान अभी भी ज़रूरी है
परिचय और पृष्ठभूमि
- यह mod Deus Ex 1 के character dialogue lip-sync और blink animation को सुधारने वाला प्रोजेक्ट है
- मूल गेम में lip-sync behavior और blink animation रिलीज़ के समय से ही असामान्य रूप से implement किए गए थे
- अपने Twitter पर पहले साझा किए गए काम को यहाँ व्यवस्थित करके प्रस्तुत किया गया है
- mod download अलग लिंक(ModDB) पर उपलब्ध है
मौजूदा lip-sync implementation की जाँच
- gameplay के दौरान lip-sync में mouth shape transition की समस्या और असामान्य animation behavior की पहचान की गई
- Chris Norden (Deus Ex डेवलपर) के interview के अनुसार शुरुआती lip-sync system काफ़ी sophisticated था, लेकिन performance कारणों से इसे सरल किया गया
- Unrealscript हिस्से में कितना implementation बचा है और क्या-क्या बदला जा सकता है, इसकी जाँच की गई
- source code उपलब्ध नहीं है, केवल script तक पहुँच संभव है
lip-sync कैसे काम करता है
- लेखक ने पहले Half-Life 2 के lip-sync system का विश्लेषण करके अनुभव हासिल किया था
- Valve audio file से phoneme निकालकर language information को
.wav file के अंत में जोड़ता है, और runtime में उसी timing के अनुसार mouth shape (viseme) बदलता है
- इस तरीके का फ़ायदा यह है कि पहले से phoneme extraction कर लेने पर runtime load कम हो जाता है
Deus Ex की संरचनात्मक समस्याएँ
- Deus Ex में phoneme information कहीं भी store नहीं होती, इसलिए संभव है कि extraction runtime में real-time हो रही हो
- Unrealscript विश्लेषण के अनुसार यह skeletal animation नहीं बल्कि vertex animation आधारित है, और इसमें कुल 7 mouth shapes और 1 blink animation ही उपलब्ध हैं
- बाहरी audio system से
nextphoneme को A, E, F, M, O, T, U या X (mouth closed state) पर सेट किया जाता है, और character script उसी के अनुसार mouth shape बदलती है
bugs और सुधार कार्य
- मूल code में framerate decision logic उलटी दिशा में काम कर रही थी, इसलिए high frame rate पर भी mouth shape तुरंत बदल जाती थी
- blending duration (
tweentime) बहुत कम (0.1 सेकंड) रखी गई थी, जिससे transition का स्वाभाविक अहसास गायब हो जाता था
- framerate check condition को ignore करके
tweentime को पर्याप्त रूप से बढ़ाकर 0.35 सेकंड किया गया
- इसके परिणामस्वरूप lip-sync transitions अधिक smooth हो गए
mouth closing और blink handling
- dialogue खत्म होने के बाद mouth बंद करते समय भी natural blending लागू हो, इसके लिए अतिरिक्त logic जोड़ा गया
- animation logic पहले केवल
bIsSpeaking को check करती थी, लेकिन इसे बदलकर lip-sync animation को हमेशा सक्रिय रहने दिया गया
- blink speed भी समायोजित की गई ताकि उपयोगकर्ता उसे लगातार notice कर सके
संरचनात्मक सीमाएँ और कमियाँ
nextphoneme की update frequency खुद अनियमित है, और यह हर tick पर update नहीं होती — यह एक संरचनात्मक सीमा है
- इसी वजह से सभी blending सही तरह लागू करने पर भी perfect lip-sync experience संभव नहीं है
- अगर updates स्थिर interval पर होतीं, तो blending speed को उसी हिसाब से optimize किया जा सकता था, लेकिन मौजूदा संरचना में यह संभव नहीं है
- NPC और player character classes में वही logic duplicate implementation के रूप में मौजूद है, जो code inefficiency भी दिखाता है
अंतिम संशोधित example code
- लेख के निचले हिस्से में सुधारे गए lip-sync function का पूरा code दिया गया है
- मुख्य सुधार: framerate decision को ignore करना,
tweentime को काफ़ी बढ़ाना, dialogue के बाद smooth mouth closing, blink frequency और speed को adjust करना
निष्कर्ष
- इस mod का उपयोग करने पर मूल संस्करण की तुलना में कहीं अधिक स्वाभाविक और बेहतर lip-sync तथा blink animation का अनुभव मिलता है
- संरचनात्मक सीमाओं के कारण पूरी तरह perfect lip-sync मुश्किल है, फिर भी फिलहाल उपलब्ध तरीकों में यह सबसे अच्छा समाधान है
अभी कोई टिप्पणी नहीं है.