Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <string>
- #include <iostream>
- #include <ai_msg.h>
- #include <ai_nodes.h>
- #include "mfRibArch_mtoa_translator.h"
- void* mfRibArch_mtoa_translator::creator()
- {
- return new mfRibArch_mtoa_translator();
- }
- void mfRibArch_mtoa_translator::NodeInitializer(CAbTranslator context)
- {
- CProceduralTranslator::NodeInitializer(context);
- }
- static std::string expandAssFilePath(std::string shape)
- {
- std::string cmd( "mfRibArch_expandAssFile('" + shape + "')" );
- MString res = MGlobal::executePythonCommandStringResult(cmd.data());
- return res.asChar();
- }
- AtNode* mfRibArch_mtoa_translator::CreateArnoldNodes()
- {
- if (IsMasterInstance())
- return AddArnoldNode("procedural");
- else
- return AddArnoldNode("ginstance");
- }
- void mfRibArch_mtoa_translator::Export(AtNode* i_node)
- // AtNode* mfRibArch_mtoa_translator::ExportProcedural(AtNode* i_node) // ExportProcedural is not being called for some reason
- {
- if( AiNodeIs(i_node, AtString("procedural")) )
- {
- std::cout<<"Export procedural"<<std::endl; // I can see this branch executes
- i_node = CProceduralTranslator::ExportProcedural(i_node);
- std::string maya_shape_name = GetMayaNodeName().asChar();
- AiNodeSetStr(i_node, AtString("name"), maya_shape_name.c_str());
- std::string fname = expandAssFilePath(maya_shape_name);
- AiNodeSetStr(i_node, AtString("filename"), fname.c_str());
- master_node_ = i_node; // store master node for further instancing
- }
- else if(master_node_) // I can see this branch executes, but nothing gets expoerted to ASS file
- {
- std::cout<<"Export ginstance"<<std::endl;
- AiNodeSetPtr( i_node, AtString("node"), (void*)master_node_ );
- auto visib = AiNodeGetByte(master_node_, AtString("visibility"));
- AiNodeSetByte(i_node, AtString("visibility"), visib);
- std::string maya_shape_name = GetMayaNodeName().asChar();
- AiNodeSetStr(i_node, AtString("name"), maya_shape_name.c_str());
- }
- ProcessRenderFlags(i_node); // this sets visibility based on standard Arnold properties
- ExportMatrix(i_node);
- ExportLightLinking(i_node);
- // return i_node;
- }
- void mfRibArch_mtoa_translator::ExportMotion(AtNode* node)
- {
- if ( !IsMotionBlurEnabled() ) return;
- ExportMatrix(node);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement