bool MayaObject::isObjVisible() { MFnDagNode dagNode(this->mobject); if (!IsVisible(dagNode) || IsTemplated(dagNode) || !IsInRenderLayer(this->dagPath) || !IsPathVisible(this->dagPath) || !IsLayerVisible(this->dagPath)) return false; return true; }
void MayaObject::initialize() { this->isInstancerObject = false; this->instancerParticleId = -1; this->instanceNumber = 0; this->attributes = nullptr; this->origObject = nullptr; this->shortName = getObjectName(mobject); this->fullName = this->dagPath.fullPathName(); this->fullNiceName = makeGoodString(this->fullName); this->transformMatrices.push_back(this->dagPath.inclusiveMatrix()); this->instanceNumber = dagPath.instanceNumber(); MFnDependencyNode depFn(mobject); this->motionBlurred = true; this->geometryMotionblur = false; bool mb = true; if( getBool(MString("motionBlur"), depFn, mb) ) this->motionBlurred = mb; // cameras have motionBlur attribute but it is set to false by default and it is not accessible via UI // but we want to have a blurred camera by default. if( this->mobject.hasFn(MFn::kCamera)) this->motionBlurred = true; this->perObjectTransformSteps = 1; this->perObjectDeformSteps = 1; this->index = -1; this->shapeConnected = false; this->lightExcludeList = true; // In most cases only a few lights are ignored, so the list is shorter with excluded lights this->shadowExcludeList = true; // in most cases only a few objects ignore shadows, so the list is shorter with ignoring objects this->animated = this->isObjAnimated(); this->shapeConnected = this->isShapeConnected(); this->parent = nullptr; this->visible = true; this->hasInstancerConnection = false; MDagPath dp; dp = dagPath; MFnDagNode dagNode(this->mobject); if (!IsVisible(dagNode) || IsTemplated(dagNode) || !IsInRenderLayer(dp) || !IsPathVisible(dp) || !IsLayerVisible(this->dagPath)) this->visible = false; // get instancer connection MStatus stat; MPlug matrixPlug = depFn.findPlug(MString("matrix"), &stat); if( !stat) Logging::debug(MString("Could not find matrix plug")); else{ MPlugArray outputs; if( matrixPlug.isConnected()) { matrixPlug.connectedTo(outputs, false, true); for( uint i = 0; i < outputs.length(); i++) { MObject otherSide = outputs[i].node(); Logging::debug(MString("matrix is connected to ") + getObjectName(otherSide)); if( otherSide.hasFn(MFn::kInstancer)) { Logging::debug(MString("other side is instancer")); this->hasInstancerConnection = true; } } } } if( this->mobject.hasFn(MFn::kWorld)) { this->shortName = this->fullName = this->fullNiceName = "world"; } }
bool IsVisible(MDagPath& node) { MFnDagNode dagNode(node.node()); if (!IsVisible(dagNode) || IsTemplated(dagNode) || IsPathTemplated(node) || !IsInRenderLayer(node) || !IsPathVisible(node) || !IsLayerVisible(node)) return false; return true; }