एक टिकट बनाएं
अनुसरण करें

Q100326: लेखन और परीक्षण कस्टम ऑप्स

सारांश

ऑप्स संचालन के निर्माण खंड हैं जो कटाना में 3 डी दृश्य डेटा बनाते और हेरफेर करते हैं। ऑप्स प्लग-इन के उदाहरण हैं जिन्हें C ++ में लिखा गया ओप टाइप्स कहा जाता है। वे विभिन्न ऑपरेशन कर सकते हैं, कटान के ओपी एपीआई का उपयोग करके, दृश्य ग्राफ में हेरफेर और विशेषताओं को संशोधित कर सकते हैं

यह लेख $ KATANA_ROOT / प्लगइन्स / Src / ऑप्स के तहत पाए जाने वाले HelloWorld उदाहरण Op के आधार पर एक कस्टम Op लिखने, संकलन करने और परीक्षण करने के चरण-दर-चरण उदाहरण प्रदान करता है

अधिक जानकारी

कस्टम ओप बनाने से पहले, $ KATANA_ROOT / प्लगइन्स / Src / ऑप्स में स्थित उदाहरण Ops पर एक नज़र डालना मददगार हो सकता है । यह ट्यूटोरियल विशेष रूप से HelloWorld उदाहरण Op पर आधारित है।

निम्नलिखित चरणों का वर्णन है कि कैसे इस Op के स्रोत कोड को संशोधित करने के लिए एक Op बनाने के लिए जो दृश्य ग्राफ में स्थानों पर विशेषताओं को पढ़ और सेट कर सकता है।

  1. संशोधित cook() $ KATANA_ROOT / plugins / SRC / ऑप्स / HelloWorld / src / HelloWorldOp.cpp में समारोह के रूप में इस पढ़ने के लिए:

static void cook(Foundry::Katana::GeolibCookInterface& interface)
{
   FnAttribute::StringAttribute typeAttr = interface.getAttr("type");
   interface.setAttr("testType",  typeAttr);

    if (interface.atRoot())
    {
       interface.setAttr("hello", FnAttribute::StringAttribute("world!"));
    }

}

  1. उदाहरण के लिए ओप प्लगइन्स का निर्माण, कृपया $ KATANA_ROOT / plugins / Src / README.md में दिए गए निर्देशों का पालन करें

    सुनिश्चित करें कि स्रोत फ़ाइल पथ cmake कमांड में सही कटाना संस्करण की ओर इशारा कर रहा है। Cmake कमांड में -DCMAKE_PREFIX_PATH को शामिल करना आवश्यक नहीं है, क्योंकि यह अन्य Op उदाहरणों के लिए निर्भरता को निर्दिष्ट कर रहा है जिन्हें हम इस मामले में रुचि नहीं रखते हैं।

  1. प्लग-इन का निर्माण और स्थापित हो जाने के बाद, सुनिश्चित करें कि इंस्टॉल निर्देशिका KATANA _RESOURCES का हिस्सा है। README.md में दिए गए कमांड का उपयोग करते हुए, MyKatanaResource निर्देशिका को KATANA _RESOURCES में शामिल किया जाना चाहिए।

  1. कटाना लॉन्च करें, एक कैमराक्रिएट नोड बनाएं और इसे जेनेरिकऑप नोड से कनेक्ट करें।

  1. GenericOp नोड के opType पैरामीटर को "HelloWorld" पर सेट करें। इसका परिणाम यह होना चाहिए कि प्रत्येक स्थान पर टेस्टटेप नाम की एक विशेषता निर्धारित की गई है और विशेषता का मूल्य स्थान का प्रकार होगा। इसके अतिरिक्त, "विश्व" के मान के लिए "हैलो" नामक एक विशेषता / रूट पर सेट किया जाएगा !

cook() समारोह भी पढ़ने के लिए या किसी भी विशेषता है कि आप एक स्थान पर में रुचि रखते हैं निर्धारित करते हैं, या अन्य कार्यों के एक नंबर प्रदर्शन करने के लिए संशोधित किया जा सकता है।

कस्टम ऑप्स में उपयोग किए जा सकने वाले अधिक कार्यों के लिए, कृपया Katana डेवलपर गाइड ऑन कुक इंटरफेस (C ++) देखें

नोट: Op सभी स्थानों पर डिफ़ॉल्ट रूप से चलता है (जैसा कि GenericOp नोड में applyWhere पैरामीटर द्वारा निर्दिष्ट किया गया है ), इसलिए यह स्वचालित रूप से पूरे दृश्य ग्राफ को पार कर जाएगा। ऊपर दिए गए उदाहरण में, यह परीक्षणटाइप विशेषता के सभी स्थानों पर सेट होने का परिणाम है।

क्योंकि यह हमेशा वांछनीय नहीं होता है, ऊपर दिए गए उदाहरण में एक बयान भी शामिल है कि क्या जाँच की जा रही है कि क्या इंटरफ़ेस atRoot() - इसका परिणाम होगा कि अगर if block के अंदर स्टेटमेंट्स को तभी निष्पादित किया जाएगा जब Op सबसे ऊपर स्थित स्थान पर चल रहा हो पर, और यदि आप उस शीर्ष स्थान के नीचे पूरे दृश्य ग्राफ को पीछे करने से Op को रोकने के लिए if कथन के बाद interface.stopChildTraversal() उपयोग कर सकते हैं

यदि आप अपने Op का उपयोग करने के लिए एक कस्टम नोड प्रकार बनाना चाहते हैं, तो कृपया $ KATANA_ROOT / plugins / Src / Ops / Messer / RegisterMesserNode.py में दिए गए NodeTypeBuilder के उदाहरण को देखें

कटान डेवलपर गाइड में कुछ NodeTypeBuilder एपीआई कार्यों को प्रलेखित किया गया है।

यदि आप इन चरणों के साथ किसी भी समस्या का सामना कर रहे हैं, तो कृपया एक समर्थन टिकट खोलें और हमें बताएं कि आप जिस समस्या का सामना कर रहे हैं और जो समस्या निवारण कदम आपने उठाए हैं।

समर्थन टिकट खोलने के तरीके के बारे में अधिक जानकारी के लिए, कृपया ' समर्थन पोर्टल का उपयोग करना ' लेख देखें।



क्या यह लेख उपयोगी था?
/

We're sorry to hear that!

Please tell us why.
2 में से 1 के लिए उपयोगी रहा

टिप्पणियां