சுருக்கம்
Katana 3D காட்சித் தரவை உருவாக்கி கையாளும் செயல்பாடுகளின் கட்டுமானத் தொகுதிகள் Ops ஆகும். C++ இல் எழுதப்பட்ட Op Types எனப்படும் செருகுநிரல்களின் நிகழ்வுகளே Ops ஆகும். அவை பல்வேறு செயல்பாடுகளைச் செய்யலாம், காட்சி வரைபடத்தைக் கையாளலாம் மற்றும் Katana Op API ஐப் பயன்படுத்தி பண்புகளை மாற்றியமைக்கலாம் .
இந்தக் கட்டுரை $KATANA_ROOT/plugins/Src/Ops இன் கீழ் காணப்படும் HelloWorld எடுத்துக்காட்டு Op ஐ அடிப்படையாகக் கொண்ட தனிப்பயன் Op ஐ எழுதுதல், தொகுத்தல் மற்றும் சோதிப்பதற்கான படிப்படியான உதாரணத்தை வழங்குகிறது .
மேலும் தகவல்
தனிப்பயன் Op ஐ உருவாக்கும் முன், $KATANA_ROOT/plugins/Src/Ops இல் அமைந்துள்ள உதாரண Ops ஐப் பார்ப்பது உதவியாக இருக்கும் . இந்த பயிற்சி குறிப்பாக HelloWorld உதாரண Op ஐ அடிப்படையாகக் கொண்டது.
காட்சி வரைபடத்தில் உள்ள இடங்களில் பண்புக்கூறுகளைப் படித்து அமைக்கக்கூடிய ஒரு Op ஐ உருவாக்க இந்த Op இன் மூலக் குறியீட்டை எவ்வாறு மாற்றுவது என்பதை பின்வரும் படிகள் விவரிக்கின்றன.
-
$KATANA_ROOT/plugins/Src/Ops/HelloWorld/src/HelloWorldOp.cppஇல் உள்ளcook()செயல்பாட்டை பின்வருமாறு படிக்க மாற்றியமைக்கவும்:
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!"));
}
}
- உதாரண Op செருகுநிரல்களை உருவாக்க,
$KATANA_ROOT/plugins/Src/README.mdஇல் கொடுக்கப்பட்டுள்ள வழிமுறைகளைப் பின்பற்றவும்.
cmakeகட்டளையில் மூல கோப்பு பாதை சரியான Katana பதிப்பை சுட்டிக்காட்டுகிறதா என்பதை உறுதிப்படுத்திக் கொள்ளுங்கள்.cmakeகட்டளையில்-DCMAKE_PREFIX_PATHசேர்க்க வேண்டிய அவசியமில்லை, ஏனெனில் இது இந்த விஷயத்தில் நமக்கு ஆர்வமில்லாத பிற Op எடுத்துக்காட்டுகளுக்கான சார்புகளைக் குறிப்பிடுகிறது.
- செருகுநிரல்கள் உருவாக்கப்பட்டு நிறுவப்பட்டதும், நிறுவல் கோப்பகம் KATANA _RESOURCES இன் ஒரு பகுதியாக இருப்பதை உறுதிசெய்து கொள்ளுங்கள். README.md இல் கொடுக்கப்பட்டுள்ள கட்டளையைப் பயன்படுத்தி, MyKatanaResources கோப்பகம் KATANA _RESOURCES இல் சேர்க்கப்பட வேண்டும்.
- Katana துவக்கி, ஒரு கேமரா கிரியேட் நோடை உருவாக்கி, அதனுடன் ஒரு ஜெனரிக்ஆப் நோடை இணைக்கவும்.
- GenericOp முனையின் opType அளவுருவை "HelloWorld" என அமைக்கவும். இதன் விளைவாக, ஒவ்வொரு இடத்திலும் testType என்ற பண்புக்கூறு அமைக்கப்பட வேண்டும், மேலும் பண்புக்கூறின் மதிப்பு இருப்பிடத்தின் வகையாக இருக்கும். கூடுதலாக, hello என்ற பண்புக்கூறு
/rootஇல் world! இன் மதிப்புக்கு அமைக்கப்படும்.
ஒரு இடத்தில் நீங்கள் ஆர்வமாக உள்ள எந்தவொரு பண்புக்கூறையும் படிக்க அல்லது அமைக்க, அல்லது பல செயல்பாடுகளைச் செய்ய cook cook() செயல்பாட்டை மாற்றியமைக்கலாம்.
தனிப்பயன் Ops-களில் பயன்படுத்தக்கூடிய கூடுதல் செயல்பாடுகளுக்கு, குக் இடைமுகத்தில் (C++) Katana டெவலப்பர் வழிகாட்டியைப் பார்க்கவும் .
குறிப்பு: Op இயல்பாகவே எல்லா இடங்களிலும் இயங்குகிறது ( GenericOp முனையில் உள்ள applyWhere அளவுருவால் குறிப்பிடப்பட்டுள்ளபடி), எனவே அது ஒவ்வொரு காட்சி வரைபட இடத்திலும் இயங்கும். மேலே உள்ள எடுத்துக்காட்டில், இதன் விளைவாக testType பண்புக்கூறு எல்லா இடங்களிலும் அமைக்கப்படுகிறது.
இது எப்போதும் விரும்பத்தக்கதாக இல்லாததால், மேலே உள்ள எடுத்துக்காட்டில் இடைமுகம் atRoot() உள்ளதா என்பதைச் சரிபார்க்கும் if அறிக்கையும் அடங்கும் - இதன் விளைவாக if தொகுதிக்குள் உள்ள அறிக்கைகள், Op சமைக்கப்பட்ட மிக உயர்ந்த இடத்தில் இயங்கும் போது மட்டுமே செயல்படுத்தப்படும், மேலும் if அறிக்கைக்குப் பிறகு interface.stopChildTraversal() ஐப் பயன்படுத்தி Op அந்த மிக உயர்ந்த இடத்திற்குக் கீழே முழு காட்சி வரைபடத்தையும் கடந்து செல்வதை நிறுத்தலாம்.
உங்கள் Op-ஐப் பயன்படுத்த தனிப்பயன் நோட் வகையை உருவாக்க விரும்பினால், $KATANA_ROOT/plugins/Src/Ops/Messer/RegisterMesserNode.py இன் கீழ் காணப்படும் NodeTypeBuilder-அடிப்படையிலான நோட் வகையின் எடுத்துக்காட்டைப் பார்க்கவும்.
சில NodeTypeBuilder API செயல்பாடுகள் Katana டெவலப்பர் வழிகாட்டியில் ஆவணப்படுத்தப்பட்டுள்ளன.
மேலும் உதவி
இந்தப் படிகளில் ஏதேனும் சிக்கல்கள் ஏற்பட்டால், தயவுசெய்து ஒரு ஆதரவு டிக்கெட்டைத் திறந்து, நீங்கள் எதிர்கொள்ளும் சிக்கலையும், இதுவரை நீங்கள் எடுத்துள்ள சரிசெய்தல் படிகளையும் எங்களுக்குத் தெரியப்படுத்துங்கள்.
ஆதரவு டிக்கெட்டை எவ்வாறு திறப்பது என்பது பற்றிய கூடுதல் தகவலுக்கு, தயவுசெய்து Q100064 ஐப் பார்க்கவும்: ஆதரவு டிக்கெட்டை எவ்வாறு திரட்டுவது .
We're sorry to hear that
Please tell us why