Q100343: Nuke Studio और Hiero में क्लिप के लिए OCIOCDLTransform सॉफ्ट इफेक्ट्स को स्वचालित रूप से कैसे बनाएं और .cc फ़ाइल पथ कैसे सेट करें?

सारांश

यह आलेख बताता है कि आप अपने Nuke Studio या Hiero टाइमलाइन में प्रत्येक क्लिप के लिए OCIOCDLTransform सॉफ्ट प्रभाव को स्वचालित रूप से बनाने के लिए पायथन का उपयोग कैसे कर सकते हैं, और प्रत्येक शॉट के लिए ASC CDL फ़ाइल पथ को परिभाषित कर सकते हैं।

अधिक जानकारी

जब आप NukeStudio या Hiero के अंदर क्लिप के लिए OCIOCDLTransform सॉफ्ट प्रभाव मैन्युअल रूप से बनाते हैं, तो आप प्रत्येक क्लिप के लिए एक समय में एक प्रभाव बना सकते हैं, फिर मैन्युअल रूप से प्रत्येक सॉफ्ट प्रभाव के लिए .cc फ़ाइल पथ सेट करना होगा।

यह काफी समय लेने वाला हो सकता है, विशेषकर यदि आपकी टाइमलाइन में बहुत सारे शॉट हों और प्रत्येक शॉट के लिए अलग .cc फाइल हो।

हालाँकि, आप इस सेटअप को स्वचालित करने के लिए पायथन का उपयोग कर सकते हैं और नीचे उदाहरण कोड दिया गया है जो प्रत्येक क्लिप के लिए OCIOCDLTransform सॉफ्ट प्रभाव बनाता है और प्रत्येक सॉफ्ट प्रभाव के लिए एक अलग .cc फ़ाइल पथ लागू करता है:

for trackItem in [y for x in hiero .ui.activeSequence().videoTracks() for y in x.items()]:
trackItemEffect = trackItem.parentTrack().createEffect("OCIOCDLTransform",trackItem=trackItem )
trackItemEffect.node()["read_from_file"].setValue(1)
shotNumber = trackItem.name()[trackItem.name().rfind("_")+1:]
ocioPath = "/path/to/CDL/shot_" + shotNumber + ".cc"
trackItemEffect.node()["file"].setValue(ocioPath)

कोड को पंक्ति दर पंक्ति तोड़कर, यहां प्रत्येक पंक्ति क्या करती है, इसका स्पष्टीकरण दिया गया है:

1. for trackItem in [y for x in hiero .ui.activeSequence().videoTracks() for y in x.items()]:

यह पहली पंक्ति एक फ़ॉर लूप बनाती है और टाइमलाइन की सभी क्लिप्स को दोहराती है। फिर बाकी कोड टाइमलाइन क्लिप्स की सूची में एक समय में प्रत्येक क्लिप पर लागू होता है।

hiero .ui.activeSequence().videoTracks() कमांड टाइमलाइन पर वर्तमान में सक्रिय अनुक्रम को क्वेरी करता है, प्रत्येक वीडियो ट्रैक के सभी क्लिप आइटम्स को लूप करता है और उन्हें एक पायथन सूची में जोड़ता है। यह अगली पंक्तियों से कमांड लागू करने के लिए क्लिप्स की पूरी सूची बनाता है।

2. trackItemEffect = trackItem.parentTrack().createEffect("OCIOCDLTransform",trackItem=trackItem )

यह दूसरी पंक्ति सॉफ्ट प्रभाव बनाती है और इसे उस वर्तमान क्लिप में जोड़ देती है जिस पर हम फॉर लूप में हैं।


3. trackItemEffect.node()["read_from_file"].setValue(1)

यह तीसरी पंक्ति वर्तमान क्लिप के लिए बनाए गए सॉफ्ट प्रभाव पर 'फ़ाइल से पढ़ें' नॉब मान सेट करती है।


4. shotNumber = trackItem.name()[trackItem.name().rfind("_")+1:]

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


5. ocioPath = "/path/to/CDL/shot_" + shotNumber + ".cc"

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


6. trackItemEffect.node()["file"].setValue(ocioPath)

यह अंतिम पंक्ति सॉफ्ट इफेक्ट्स फ़ाइल पथ को पंक्ति 5 में उत्पन्न पथ पर सेट करती है।

नोट: यह कोड शॉट्स और .cc फ़ाइल पथों के लिए एक स्थापित नामकरण पद्धति पर आधारित है। इसे अपने वर्कफ़्लो में ढालने के लिए, आपको अपनी परियोजना के लिए प्रयुक्त नामकरण पद्धति से मेल खाने के लिए पंक्ति 4 और 5 को समायोजित करना होगा।

नीचे स्क्रिप्ट एडिटर के भीतर चलाए जा रहे कोड और Nuke Studio टाइमलाइन के भीतर सभी क्लिप के लिए बनाए जा रहे OCIOCDLTransform सॉफ्ट इफेक्ट्स का परिणाम दिया गया है:

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

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