Q100387: पायथन स्क्रिप्टिंग के माध्यम से कीफ़्रेम कैसे सेट करें और एनीमेशन वक्रों को कैसे समायोजित करें

सारांश

Nuke स्क्रिप्ट में एनीमेशन कुंजियाँ सेट करते समय (उदाहरण के लिए, ट्रांसफ़ॉर्म नोड या रोटो मास्क की स्थिति की कुंजी), पायथन के माध्यम से एनीमेशन वक्रों को परिभाषित करने से काफ़ी लचीलापन मिल सकता है। उपयोगकर्ता एनीमेशन कुंजियों के निर्माण और स्थिति को स्वचालित कर सकते हैं, अपनी ज़रूरतों के अनुसार ढलानों को समायोजित कर सकते हैं और पाइपलाइन में उपयोग किए जाने वाले विभिन्न उपकरणों के बीच वक्र डेटा साझा कर सकते हैं।

यह आलेख बताता है कि पायथन के उपयोग के माध्यम से एनीमेशन कुंजियाँ कैसे बनाई जाती हैं और वक्र ढलानों को कैसे अद्यतन किया जाता है, जिसमें एक परीक्षण योग्य उदाहरण स्क्रिप्ट भी शामिल है।

अधिक जानकारी

जब एनीमेशन कुंजियाँ Nuke के भीतर सेट की जाती हैं ( एनिमेटिंग पैरामीटर्स द्वारा), तो कीफ्रेम्स को कर्व एडिटर के भीतर वक्र के रूप में प्रदर्शित किया जाता है।

नीचे दिए गए स्क्रीनशॉट में, आप ColorCorrect नोड के कंट्रास्ट नॉब के लिए विभिन्न फ़्रेमों पर सेट की गई एनीमेशन कुंजियों से निर्मित वक्र को देख सकते हैं:

  • मुख्य मान वे हैं जहां उपयोगकर्ता ने कंट्रास्ट नॉब में एक नया मान जोड़ा है।
  • कर्व एडिटर XY ग्राफ का उपयोग करता है, जहां X फ्रेम रेंज को दर्शाता है और Y कंट्रास्ट नॉब मानों को दर्शाता है।
  • उपयोगकर्ता द्वारा चयनित मुख्य-फ़्रेम फ़्रेम 351 है, जिसका मान 1.16 है।
  • चयनित मुख्य-फ़्रेम अपनी स्पर्शरेखाएँ भी प्रदर्शित करता है जो ढलान को परिभाषित करती हैं। ढलान में बदलाव करने से मुख्य-फ़्रेमों के बीच वक्र आकार को अनुकूलित किया जा सकेगा जिससे वह अधिक सुचारू या स्थिर हो जाएगा।
  • चयनित वक्र एक सहज अंतर्वेशन का उपयोग कर रहा है
  • अभिव्यक्ति फ़ील्ड प्रदर्शित करता है कि इसकी अभिव्यक्ति वक्र है, इसका मतलब है कि एनीमेशन को वक्र संपादक के भीतर वक्र द्वारा नियंत्रित किया जा रहा है।

पायथन का उपयोग करके कीफ्रेम सेट करना

पायथन स्क्रिप्ट के माध्यम से कीफ्रेम एनिमेशन बनाते समय प्रत्येक कुंजी के लिए कई विशेषताओं को सेट करने की आवश्यकता होती है।

इनमें निम्नलिखित शामिल हैं:

  • x - बिंदु की क्षैतिज स्थिति (फ़्रेम मान)
  • y - बिंदु की ऊर्ध्वाधर स्थिति (घुंडी मान)
  • इंटरपोलेशन - पहली कुंजी के बाएं ढलान और अंतिम कुंजी के दाएं ढलान को छोड़कर सभी ढलानों की गणना करने के लिए उपयोग किया जाता है
  • एक्सट्रपलेशन - सबसे बाईं और सबसे दाईं ढलानों की गणना करता है

कस्टम इंटरपोलेशन सेट अप करने के लिए, आप निम्नलिखित विशेषताओं को सेट करके बनाई गई प्रत्येक कुंजी के स्पर्शरेखाओं को अलग-अलग संपादित कर सकते हैं:

  • lslope - बिंदु के बाईं ओर का व्युत्पन्न
  • r ढलान - बिंदु के दाईं ओर व्युत्पन्न
  • la - बायाँ 'बाइक्यूबिक' मान
  • r a - सही 'बाइक्यूबिक' मान

यहां एक स्क्रीनशॉट है जिसमें एक मुख्य-फ़्रेम के स्पर्शरेखाओं को प्रदर्शित किया गया है, तथा lslope और rslope को हाइलाइट किया गया है:

स्पर्शरेखा2.PNG

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

उदाहरण स्क्रिप्ट

संलग्न पायथन स्क्रिप्ट का एक उदाहरण है जो कीफ़्रेम एनीमेशन वक्र के निर्माण को स्वचालित करने का तरीका दिखाता है। जब इसे Nuke के स्क्रिप्ट एडिटर में निष्पादित किया जाता है, तो यह एक एनिमेटेड कलर नॉब वाला एक कॉन्स्टेंट नोड बनाएगा।

स्क्रिप्ट की समीक्षा करने के लिए कृपया संलग्न फ़ाइल ( CurveTest.py ) को डाउनलोड करें और Nuke के स्क्रिप्ट एडिटर या किसी टेक्स्ट संपादन सॉफ्टवेयर (जैसे PyCharm, Sublime Text, Notepad++, आदि) में खोलें

NUKE में स्क्रिप्ट का उपयोग

Nuke के भीतर, स्क्रिप्ट का परीक्षण CurveTest.py फ़ाइल को आयात करके या इसकी सामग्री को स्क्रिप्ट संपादक में कॉपी/पेस्ट करके, फिर इसे निष्पादित करके किया जा सकता है।

एक बार स्क्रिप्ट निष्पादित हो जाने पर, यह रंग घुंडी पर एनीमेशन कुंजियों के साथ एक स्थिर नोड बनाएगा।

नोड का चयन करने और उसे कर्व एडिटर में देखने से आप उसकी एनीमेशन कुंजियों का निरीक्षण कर सकेंगे और उत्पन्न कर्व को देख सकेंगे।

नीचे स्क्रिप्ट का आउटपुट दिया गया है जिसे आप कर्व एडिटर टैब में देख सकते हैं:

कुंजियों को मैन्युअल रूप से बदलना संभव है। एक कुंजी चुनने पर उसके स्पर्शरेखाएँ दिखाई देंगी, जिन्हें आगे भी बदला जा सकता है।

उन्नत युक्तियों और प्रक्रियाओं सहित वक्रों को संपादित करने के बारे में अधिक जानकारी के लिए, कृपया Nuke दस्तावेज़ के संपादन वक्र अनुभाग को पढ़ें।

स्क्रिप्ट स्पष्टीकरण

CurveTest.py पायथन स्क्रिप्ट में टिप्पणियाँ शामिल हैं जो बताती हैं कि प्रत्येक फ़ंक्शन क्या करता है और स्क्रिप्ट में उसका उपयोग क्यों किया जाता है। नीचे कुछ फ़ंक्शन और अवधारणाओं का एक उच्च-स्तरीय अवलोकन दिया गया है:

एनीमेशन वक्र चर सेट करना

स्क्रिप्ट एनीमेशन वक्र को परिभाषित करने के लिए उपयोग किए जाने वाले डेटा के आरंभीकरण से शुरू होती है।

इस डेटा को सेट करने का एक तरीका यह है कि कुंजी के फ्रेम, मान और स्पर्शरेखा जानकारी को पायथन डिक्शनरी ऑब्जेक्ट के भीतर रखा जाए, जैसे:

# Curve data stored in dictionary object
curve_data = {1: {'val': 1, 'in_slope': 0.0}, 30: {'val': 10, 'in_slope': 0.0}, 50: {'val': 5, 'in_slope': -56.957}, 60: {'val': 0, 'in_slope': -14.341}, 70: {'val': 5, 'in_slope': 56.957}, 80: {'val': 5, 'in_slope': -77.891}, 90: {'val': 5, 'in_slope': 0.0}}

नए एनीमेशन कीफ्रेम को डिक्शनरी ऑब्जेक्ट में जोड़ा जाता है, और फिर डिक्शनरी को प्रत्येक कुंजी को एनीमेशन वक्र में जोड़ते हुए लूप किया जाता है।

फ़ंक्शन का उपयोग करना

अन्य लिपियों में वक्र को कुशल और पुन: प्रयोज्य बनाने के लिए, सभी फ़ंक्शन को एक def (फ़ंक्शन) में रखा जाता है। इसे अन्य पायथन लिपियों में आसानी से एकीकृत किया जा सकता है क्योंकि इसकी पूरी परिभाषा, डिक्शनरी ऑब्जेक्ट द्वारा दिए गए 'curve_data' पर निर्भर करती है:

def create_curve(curve_data):

नोड और नॉब सेट करना

स्क्रिप्ट के उदाहरण में, हम एक Constant नोड बनाते हैं और कर्व एनिमेशन डेटा को उसके कलर नॉब में संग्रहीत करते हैं। यदि आप इस सेटअप का उपयोग किसी अन्य नोड और नॉब के लिए करना चाहते हैं, तो आप नीचे दी गई पंक्तियों में उनका नाम बदल सकते हैं:

node = nuke .createNode('Constant')
attr = node['color']
attr.setAnimated()

इसके अतिरिक्त घुंडी को 'एनिमेटेड' पर भी सेट किया जाना चाहिए ताकि एनिमेटेड घुंडी में कई कुंजियाँ जोड़ी जा सकें।

कस्टम इंटरपोलेशन

जैसा कि AnimationKey दस्तावेज़ में वर्णित है, यदि nuke .USER_SET_SLOPE सेट है, तो इंटरपोलेशन और एक्सट्रपलेशन को अनदेखा कर दिया जाएगा और इसके स्थान पर उपयोगकर्ता द्वारा उत्पन्न स्पर्शरेखा का उपयोग किया जाएगा।

यदि आप पायथन स्क्रिप्ट में लाइन 55 को देखें, तो changeInterpolation() फ़ंक्शन 'nuke.USER_SET_SLOPE' पर सेट है, जिसका अर्थ है कि एनीमेशन वक्र कस्टम इंटरपोलेशन टेंगेंट का उपयोग कर रहा है।

curve.changeInterpolation(keys, nuke .USER_SET_SLOPE)

यदि आप प्रिंट स्टेटमेंट जोड़ते हैं जैसे:

curve.changeInterpolation(keys, nuke .USER_SET_SLOPE)
print (curve.toScript())

फिर स्क्रिप्ट संपादक में स्क्रिप्ट निष्पादित करें, आपको वक्र के भीतर से निम्नलिखित कस्टम इंटरपोलेशन जानकारी प्राप्त होगी:

{curve l x1 1 s0 x30 10 s0 x50 5 s-56.957 x60 0 s-14.341 5 s56.957 5 s-77.891 5 s0}

सभी कस्टम निर्मित स्पर्शरेखाएं एनीमेशन वक्र में सफलतापूर्वक जोड़ दी गई हैं और आपके कॉन्स्टेंट नोड के रंग घुंडी में दिखाई देनी चाहिए।

यदि आप curve.changeInterpolation(keys, nuke .USER_SET_SLOPE) टिप्पणी के साथ उदाहरण स्क्रिप्ट निष्पादित करते हैं, और समान प्रिंट कथन जोड़ते हैं:

#curve.changeInterpolation(keys, nuke .USER_SET_SLOPE)
print(curve.toScript())

वक्र डिफ़ॉल्ट डेटा इस प्रकार प्रदर्शित करेगा:

{curve x1 1 x30 10 x50 5 x60 0 5 5 5}

नोट: नव निर्मित एनीमेशन वक्र की कुंजियों में हेरफेर करने से वक्र इंटरपोलेशन डिफ़ॉल्ट स्थिति पर रीसेट हो जाएगा, जैसा कि Nuke पायथन API संदर्भ गाइड के AnimationKey अनुभाग में वर्णित है।

हम चाहते हैं कि खेद व्यक्त करते हैं

कृपया हमें बताएँ कि