Metlivi ब्लॉग

किसी कैरेक्टर के शरीर को हिलाते समय IK फ़ुट टार्गेट्स को अपनी जगह पर कैसे रखें

IK पैरों को अपनी जगह पर रखने के लिए, कैरेक्टर के बॉडी कंट्रोल को हिलाते समय हर फ़ुट टार्गेट की विश्व स्थिति स्थिर रखें। लेग सॉल्वर को गतिशील शरीर और स्थिर टार्गेट के बीच के जोड़ों को समायोजित करने दें। यदि किसी टार्गेट को शरीर से गति विरासत में मिलती है, तो IK सॉल्व से पहले उस ट्रांसफ़ॉर्म संबंध को अलग करें या उसकी भरपाई करें।

यह गाइड उन क्रिएटर्स के लिए है जो किसी रिग किए गए वर्चुअल कैरेक्टर को इस तरह पोज़ देना चाहते हैं कि उसका शरीर ऊपर-नीचे हो, झुके या खिसके, जबकि दोनों पैर अपनी जगह पर रहें। नीचे दिया गया वर्कफ़्लो, ट्रांसफ़ॉर्म और IK के प्रलेखित व्यवहार को एक व्यावहारिक निदान क्रम के साथ जोड़ता है; Unity और Godot की शब्दावली ठोस संदर्भ देती है।

29 अक्टूबर 2026पढ़ने में 7 मिनटलेखक: Metlivi Editorial Team
खंड 1

फ़ुट टार्गेट्स शरीर के साथ क्यों हिलते हैं?

किसी टार्गेट के स्थानीय निर्देशांक अपरिवर्तित रह सकते हैं, फिर भी वह दृश्य में हिल सकता है। स्थानीय ट्रांसफ़ॉर्म किसी ऑब्जेक्ट की स्थिति उसके पैरेंट के सापेक्ष बताते हैं, इसलिए किसी पूर्वज को हिलाने से चाइल्ड का विश्व ट्रांसफ़ॉर्म भी बदल जाता है। Godot इस अंतर को transform और global_transform के ज़रिए दर्ज करता है। 3D ट्रांसफ़ॉर्म का उपयोग — Godot Engine

फ़ुट टार्गेट कंट्रोल दिखाएँ और शरीर को थोड़ा बगल में हिलाएँ। दिखाई देने वाले पैरों से अलग टार्गेट्स पर नज़र रखें। अगर कोई टार्गेट शरीर के साथ हिलता है, तो उसके पूर्वजों की जाँच करें: हो सकता है वह पेल्विस, बॉडी कंट्रोल या किसी अन्य गतिशील समूह के नीचे हो।

सेटअप का आकलन केवल स्थानीय स्थिति वाले फ़ील्ड देखकर न करें। हिलाने से पहले और बाद में टार्गेट की विश्व स्थिति दर्ज करें। इससे दो उपयोगी सवालों के जवाब अलग-अलग मिलते हैं: क्या टार्गेट अपनी निर्धारित जगह से हट गया, या पैर स्थिर टार्गेट का अनुसरण करने में विफल रहा?

खंड 2

बॉडी और फ़ुट कंट्रोल को कैसे व्यवस्थित करें?

बॉडी की गति और अपनी जगह पर टिके फ़ुट टार्गेट्स के लिए अलग-अलग कंट्रोल शाखाएँ रखें। एक व्यावहारिक व्यवस्था में स्केलेटन और बॉडी कंट्रोल एक शाखा में होते हैं, जबकि बाएँ और दाएँ फ़ुट टार्गेट्स स्थिर सीन कंट्रोल के नीचे दूसरी शाखा में होते हैं। ज़रूरी बात यह है कि जिस बॉडी कंट्रोल को आप हिलाते हैं, वह टार्गेट शाखा को न हिलाए।

एक सामान्य कैरेक्टर कंट्रोल में दोनों शाखाएँ फिर भी हो सकती हैं, बशर्ते आप उसके नीचे के शरीर को ही हिलाएँ। लेकिन उस पूरे कंट्रोल को हिलाने से दोनों शाखाएँ हिलेंगी। कंट्रोल चुनने से पहले तय करें कि आपके काम का मतलब “स्थिर पैरों के ऊपर शरीर को खिसकाना” है या “पूरे कैरेक्टर को दूसरी जगह ले जाना”।

जहाँ ऐप अलग-अलग ट्रांसफ़ॉर्म इनहेरिटेंस की सुविधा देता है, वहाँ यह एक और विकल्प हो सकता है। उदाहरण के लिए, Godot का Node3D.top_level किसी नोड को अपने पैरेंट के ट्रांसफ़ॉर्म विरासत में लेने से रोकता है। यह ट्रांसफ़ॉर्म की एक प्रलेखित सुविधा है; यह अपने आप IK सॉल्वर को कॉन्फ़िगर नहीं करती। Node3D — Godot Engine

किसी टार्गेट का पैरेंट या इनहेरिटेंस मोड बदलते समय उसकी मौजूदा विश्व मुद्रा बनाए रखें। पहले उसकी विश्व स्थिति और ओरिएंटेशन दर्ज करें, फिर संबंध बदलें और उसके बाद वही मुद्रा बहाल करें। शरीर को दोबारा हिलाने से पहले नतीजे की पुष्टि करें।

खंड 3

अगर टार्गेट को किसी गतिशील पैरेंट के नीचे ही रखना हो तो?

अपनी जगह पर टिके विश्व मुद्रा का स्वतंत्र रिकॉर्ड रखें और पैरेंट के मौजूदा ट्रांसफ़ॉर्म से टार्गेट की आवश्यक स्थानीय मुद्रा की गणना करें। स्थिति के लिए संबंध यह है: टार्गेट की स्थानीय स्थिति = वर्तमान पैरेंट के विश्व ट्रांसफ़ॉर्म का व्युत्क्रम × टार्गेट की सहेजी गई विश्व स्थिति। Unity में विश्व से स्थानीय निर्देशांक में बदलने के लिए InverseTransformPoint उपलब्ध है। Transform.InverseTransformPoint — Unity

केवल उदाहरण के लिए, एक ऐसा मामला लें जहाँ सिर्फ़ ट्रांसलेशन हो। टार्गेट विश्व X = 1.0 पर टिका है और उसका पैरेंट X = 0.0 से शुरू होता है। इसलिए उसका स्थानीय X 1.0 है। पैरेंट को X = 0.3 पर ले जाएँ, तो विश्व X = 1.0 पर बने रहने के लिए टार्गेट का स्थानीय X 0.7 होना चाहिए। स्थानीय X को 1.0 पर छोड़ने से टार्गेट विश्व X = 1.3 पर चला जाएगा।

यह घटाव केवल सरल उदाहरण पर लागू होता है। घुमाए या स्केल किए गए पैरेंट के लिए पूरा ट्रांसफ़ॉर्म रूपांतरण आवश्यक है। Unity का TransformPoint स्थानीय स्थिति को विश्व स्पेस में बदलता है और इसमें स्पष्ट रूप से स्केल शामिल होता है। इसलिए स्थिति रूपांतरण के लिए दिशा संबंधी ऑपरेशन के बजाय पॉइंट ऑपरेशन का उपयोग करना चाहिए। Transform.TransformPoint — Unity

पैर के अपनी जगह पर टिकने की अवस्था में प्रवेश करते ही उसकी मुद्रा सहेजें। शरीर के हिलने के दौरान इसी सहेजी गई वैल्यू का उपयोग करें। टार्गेट के गति विरासत में लेने के बाद उसे फिर से सहेजने से उसका खिसकना ही नया संदर्भ बन जाएगा। अगर ओरिएंटेशन भी स्थिर रखना है, तो टार्गेट की स्थिति के साथ उसका ओरिएंटेशन भी सहेजें और रूपांतरित करें।

खंड 4

टार्गेट्स का अनुसरण करने के लिए लेग IK को कैसे कॉन्फ़िगर करें?

बड़े पोज़ बदलाव की जाँच करने से पहले सॉल्वर की चेन असाइनमेंट जाँचें। Unity Animation Rigging 1.4.1 में Two Bone IK, Root, Mid और Tip ट्रांसफ़ॉर्म, एक Target और वैकल्पिक Hint का उपयोग करता है। दो खंडों वाले साधारण कैरेक्टर पैर में ये क्रमशः जाँघ का जोड़, घुटने का जोड़ और टखने का जोड़ होते हैं। Hint मुड़ने की दिशा नियंत्रित करता है। Two Bone IK — Unity Animation Rigging

पहली जाँच के लिए, कंस्ट्रेंट इन्फ़्लुएंस और टार्गेट पोज़िशन इन्फ़्लुएंस को पूरा रखें। टार्गेट रोटेशन इन्फ़्लुएंस की अलग से जाँच करें। Unity इन्हें अलग-अलग वेट के रूप में देता है, इसलिए स्थिति का अनुसरण और ओरिएंटेशन का मिलान स्वतंत्र रूप से जाँचा जा सकता है। इसका Maintain Target Offset विकल्प Tip और Target के बीच स्थिति या रोटेशन का शुरुआती अंतर बनाए रखता है। Two Bone IK — Unity Animation Rigging

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

Hint या पोल कंट्रोल से घुटने का इच्छित मोड़ तय करें, फिर शरीर को थोड़ा हिलाएँ। पूरी जाँच के दौरान Hint की स्थिति स्पष्ट रखें; टार्गेट, शरीर और मोड़ कंट्रोल को एक साथ बदलने से अनपेक्षित नतीजे का कारण पहचानना कठिन हो जाता है।

खंड 5

दोनों पैर अपनी जगह पर रहते हुए शरीर कितनी दूर तक हिल सकता है?

स्थिर टार्गेट होने से शरीर की हर स्थिति तक पहुँचना संभव नहीं हो जाता। बिना खिंचाव वाले, अप्रतिबंधित जोड़ों के आदर्श दो-खंडीय चेन में ज्यामिति के अनुसार, पैर की जड़ और टार्गेट के बीच की दूरी |ऊपरी खंड की लंबाई − निचले खंड की लंबाई| और ऊपरी खंड की लंबाई + निचले खंड की लंबाई के बीच होनी चाहिए। वास्तविक जोड़ों की सीमाएँ इस दायरे को कम कर सकती हैं।

उदाहरण के लिए, मान लें कि कैरेक्टर के दोनों खंडों की लंबाई 0.45 सीन यूनिट है; तब अधिकतम ज्यामितीय पहुँच 0.90 यूनिट होगी। अगर कूल्हा टखने के टार्गेट से 0.80 यूनिट ऊपर और क्षैतिज रूप से 0.30 यूनिट दूर है, तो उनके बीच की दूरी √(0.80² + 0.30²) है, यानी लगभग 0.854 यूनिट। यह आदर्श दायरे में आता है। क्षैतिज दूरी 0.50 यूनिट करने पर दूरी लगभग 0.943 यूनिट हो जाती है, जो उस दायरे से बाहर है।

इस गणना से पहुँच की समस्या और ट्रांसफ़ॉर्म की समस्या में अंतर करें। अगर टार्गेट स्थिर है, लेकिन चेन उस तक नहीं पहुँच सकती, तो शरीर की गति कम करें या दोनों पैरों के अनुसार शरीर की स्थिति बदलें। हर पैर का अलग आकलन करें: बगल में खिसकने से एक टार्गेट पास और दूसरा दूर हो सकता है।

पहली काम करने वाली मुद्रा में दोनों पैरों को थोड़ा मुड़ा हुआ रखें और सीमित गति आज़माएँ। प्रत्येक पैर अपनी पहुँच की सीमा के करीब कहाँ पहुँचता है, यह जाँचने के बाद ही शरीर की गति का दायरा बढ़ाएँ। इस दायरे को रिग के अनुसार तय करें; किसी दूसरे कैरेक्टर से विस्थापन की वैल्यू सीधे न अपनाएँ।

खंड 6

सिर्फ़ टखना नहीं, पूरे पैर को अपनी जगह पर कैसे रखें?

अपने रिग में तय करें कि “अपनी जगह पर टिके” होने का क्या मतलब है। स्थिर टखना टार्गेट से जोड़ की स्थिति तय होती है, लेकिन पैर के ओरिएंटेशन को भी निर्धारित करना ज़रूरी है। तलवे का संपर्क बिंदु और टखने का पिवट अलग-अलग संदर्भ बिंदु हैं; कंट्रोल रखते समय उनके डिज़ाइन किए गए ऑफ़सेट को बनाए रखें।

एक उपयोगी जाँच यह है कि टखने की स्थिति स्थिर रखें और सिर्फ़ शरीर को घुमाएँ। एड़ी और पंजे को देखें। अगर वे टखने के चारों ओर हिलते हैं, तो पैर के ओरिएंटेशन कंट्रोल और अलग पंजा कंट्रोल की जाँच करें। इस जाँच से दिखाई देने वाला संपर्क, टार्गेट की स्थिति से अलग होकर देखा जा सकता है।

अपनी जगह पर टिके रहने का निर्धारित ओरिएंटेशन, स्थिति के साथ सहेजें। शरीर की गति के दौरान दोनों की तुलना सहेजी गई मुद्रा से करें। Godot का ट्रांसफ़ॉर्म दस्तावेज़ बताता है कि ट्रांसफ़ॉर्म में एक ओरिजिन और एक बेसिस शामिल होते हैं, जो ओरिएंटेशन और स्केल दर्शाते हैं। पूरी मुद्रा को समझने के लिए यह उपयोगी संदर्भ है। 3D ट्रांसफ़ॉर्म का उपयोग — Godot Engine

खंड 7

फिसलने की समस्या का क्रमबद्ध तरीके से निदान कैसे करें?

ऊपर बताए गए ट्रांसफ़ॉर्म और सॉल्वर के व्यवहार पर आधारित व्यावहारिक निदान के लिए यह क्रम अपनाएँ। समस्या दोहराने वाली शरीर की सबसे छोटी गति से शुरू करें और हर बार एक ही स्थिति बदलें।

अवलोकन पहले जाँचें अगला कदम
टार्गेट शरीर के साथ हिलता है गतिशील पूर्वज और विरासत में मिले ट्रांसफ़ॉर्म कंट्रोल शाखाएँ अलग करें या सहेजी गई विश्व मुद्रा बहाल करें
टार्गेट स्थिर है, लेकिन टखना उससे चूकता है चेन असाइनमेंट, पोज़िशन इन्फ़्लुएंस और पहुँच सेटअप की पुष्टि करें, फिर शरीर की गति कम करें
टखना स्थिर है, लेकिन एड़ी या पंजा हिलता है पैर का ओरिएंटेशन और संपर्क ऑफ़सेट अपनी जगह पर टिके रहने का निर्धारित ओरिएंटेशन बहाल करें
घुटने का मोड़ अप्रत्याशित रूप से बदलता है Hint या पोल की स्थिति शरीर को थोड़ा हिलाकर मोड़ कंट्रोल जाँचें
ड्रैग करने और प्लेबैक के दौरान नतीजा अलग है कौन-सा सिस्टम किस कंट्रोल को और कब लिखता है प्लेबैक के दौरान मूल्यांकित ट्रांसफ़ॉर्म देखें

एनिमेटेड या प्रक्रियात्मक सेटअप में स्पष्ट निर्भरता क्रम अपनाएँ: पहले बॉडी पोज़ तय करें, फिर सहेजे गए टार्गेट बहाल करें या रूपांतरित करें, और उसके बाद लेग IK का मूल्यांकन करें। पुष्टि करें कि आपका ऐप इन ऑपरेशनों को किस क्रम में शेड्यूल करता है। केवल कॉलबैक के नाम से यह साबित नहीं होता कि उसी मूल्यांकन में सॉल्वर को अपडेट किया गया टार्गेट मिलता है।

अंत में एक छोटा लूप जाँचें: शरीर को बगल में हिलाएँ, नीचे करें, थोड़ा घुमाएँ और शुरुआती मुद्रा में लौटाएँ। हर टार्गेट की विश्व मुद्रा की तुलना पूरी प्रक्रिया में उसके सहेजे गए संदर्भ से करें। टार्गेट स्थिर रहने लगें, तो बाकी समायोजन विशिष्ट हो जाते हैं: शरीर की पहुँच योग्य गति, घुटनों की एकसमान दिशा और इच्छित संपर्क बनाए रखने के लिए पैर का ओरिएंटेशन।

खंड 8

स्रोत

संबंधित लेख

इस विषय को आगे पढ़ें