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::NodeInitializer(CAbTranslator context)
- {
- }
- void* mfRibArch_mtoa_translator::creator()
- {
- return new mfRibArch_mtoa_translator();
- }
- 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()
- {
- using namespace std;
- std::string maya_shape_name = GetMayaNodeName().asChar();
- // ass file name - get it from python proc
- std::string fname = expandAssFilePath(maya_shape_name);
- AtNode* procedural_node = AddArnoldNode("procedural");
- AiNodeSetStr(procedural_node, AtString("name"), maya_shape_name.c_str());
- AiNodeSetStr(procedural_node, AtString("filename"), fname.c_str());
- //AiNodeSetBool(procedural_node, AtString("override_nodes"), 0);
- auto visib = AiNodeGetByte(procedural_node, AtString("visibility"));
- AiNodeSetByte(procedural_node, AtString("visibility"), visib);
- return procedural_node;
- }
- void mfRibArch_mtoa_translator::RequestUpdate()
- {
- SetUpdateMode(AI_RECREATE_NODE);
- CShapeTranslator::RequestUpdate();
- }
- void mfRibArch_mtoa_translator::Export(AtNode* i_node)
- {
- ProcessRenderFlags(i_node);
- ExportMatrix(i_node);
- ExportLightLinking(i_node);
- }
- void mfRibArch_mtoa_translator::NodeChanged(MObject& node, MPlug& plug)
- {
- SetUpdateMode(AI_RECREATE_NODE);
- CShapeTranslator::NodeChanged(node, plug);
- }
- void mfRibArch_mtoa_translator::ExportMotion(AtNode* node)
- {
- // Check if motionblur is enabled and early out if it's not.
- if ( !IsMotionBlurEnabled() ) return;
- // Set transform matrix
- ExportMatrix(node);
- }
- void mfRibArch_mtoa_translator::ExportShaders(AtNode* node)
- {
- int instanceNum = m_dagPath.isInstanced() ? m_dagPath.instanceNumber() : 0;
- MPlug shadingGroupPlug = GetNodeShadingGroup(m_dagPath.node(), instanceNum);
- if (!shadingGroupPlug.isNull())
- {
- auto shader = ExportConnectedNode(shadingGroupPlug);
- if (shader)
- AiNodeSetPtr(node, AtString("shader"), shader);
- else
- AiMsgWarning("[mtoa] [translator %s] ShadingGroup %s has no surfaceShader input",
- GetTranslatorName().asChar(), MFnDependencyNode(shadingGroupPlug.node()).name().asChar());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement