public static ShapeData GetMaterialsOfDag(MDagPath dag) { if (dag == null) { Debug.Log("dag null"); } dag.extendToShape(); MFnDependencyNode dn = new MFnDependencyNode(dag.node); //Debug.Log(dn.absoluteName); //dn.findPlug("connectAttr pCubeShape3.instObjGroups[0] blinn2SG.dagSetMembers[1]"); MFnMesh mesh = new MFnMesh(dag); //int instanceCount = (int)shapeNode.instanceCount(false); //Debug.Log("dn instanceCount:" + instanceCount); uint instanceNumber = dag.instanceNumber; Debug.Log("dag instanceNumber:" + instanceNumber); MObjectArray sets = new MObjectArray(), comps = new MObjectArray(); mesh.getConnectedSetsAndMembers(instanceNumber, sets, comps, true); List <string> sgList = new List <string>(); for (int i = 0; i < sets.length; ++i) { MFnDependencyNode fnDepSGNode = new MFnDependencyNode(sets[i]); sgList.Add(fnDepSGNode.absoluteName); //Debug.Log(fnDepSGNode.name); } //Debug.Log("sgList Count:" + sgList.Count); return(new ShapeData(mesh, dag, sgList)); }
public static MDagPath DuplicateMesh(MDagPath targetDag) { if (targetDag == null) { return(null); } MFnMesh newMesh = new MFnMesh(); targetDag.extendToShape(); return(MDagPath.getAPathTo(newMesh.copy(targetDag.node))); }
protected void testResults(MPx3dModelView view) { MObject cstObj = MObject.kNullObj; view.getCameraSet(cstObj); MGlobal.displayInfo("fCameraList.length() = " + fCameraList.length); MGlobal.displayInfo("fCameraList = " + fCameraList); MFnCameraSet cstFn = new MFnCameraSet(cstObj); uint numLayers = cstFn.getNumLayers(); MGlobal.displayInfo("view.cameraSet.numLayers = " + numLayers); MGlobal.displayInfo("Cameras:"); for (uint i = 0; i < numLayers; i++) { MDagPath camPath = new MDagPath(); cstFn.getLayerCamera(i, camPath); camPath.extendToShape(); MGlobal.displayInfo(" " + camPath.fullPathName()); } }
public static void ToMaya(Curve CurveToSend, string name) { NurbsCurve ctsAsNurb = null; if (CurveToSend is Rectangle) { Rectangle rec = (Rectangle)CurveToSend; ctsAsNurb = NurbsCurve.ByControlPoints(rec.Points, 1, true); } else if (CurveToSend is Polygon) { Polygon rec = (Polygon)CurveToSend; ctsAsNurb = NurbsCurve.ByControlPoints(rec.Points, 1, true); } else { ctsAsNurb = CurveToSend.ToNurbsCurve(); } var ncd = new MFnNurbsCurveData(); MFnNurbsCurveForm mfnform; if (ctsAsNurb.IsClosed) { mfnform = MFnNurbsCurveForm.kClosed; } else { mfnform = MFnNurbsCurveForm.kOpen; } var mayaCurve = new MFnNurbsCurve(); var vtxs = new MPointArray(); var cvs = ctsAsNurb.ControlPoints(); var yUp = MGlobal.isYAxisUp; if (yUp) { foreach (var cv in cvs) { var pt = new MPoint(cv.X, cv.Z, -cv.Y); vtxs.Add(pt); //pt.Dispose(); } } else { foreach (var cv in cvs) { var pt = new MPoint(cv.X, cv.Y, cv.Z); vtxs.Add(pt); //pt.Dispose(); } } var knots = ctsAsNurb.Knots(); var crvKnots = new MDoubleArray(knots); crvKnots.RemoveAt(0); crvKnots.RemoveAt(crvKnots.Count - 1); MDagPath node = null; var nodeExists = false; Task checkNode = null; Task deleteNode = null; try { node = DMInterop.getDagNode(name); nodeExists = true; } catch (Exception) { nodeExists = false; } MObject obj; if (nodeExists) { MDagPath nodeShape = node; nodeShape.extendToShape(); var modifyCrv = new MDGModifier(); mayaCurve = new MFnNurbsCurve(nodeShape); try { MFnNurbsCurveData dataCreator = new MFnNurbsCurveData(); MObject outCurveData = dataCreator.create(); var span = (vtxs.Count - ctsAsNurb.Degree); string rblCmd = $"rebuildCurve -rt 0 -s {span} -d {ctsAsNurb.Degree} {name}"; if (mayaCurve.numCVs != vtxs.Count || mayaCurve.degree != ctsAsNurb.Degree) { MGlobal.executeCommand(rblCmd); } mayaCurve.setCVs(vtxs); mayaCurve.setKnots(crvKnots, 0, crvKnots.length - 1); mayaCurve.updateCurve(); modifyCrv.doIt(); if (CurveToSend.GetType() == typeof(Circle)) { span = 8; rblCmd = $"rebuildCurve -rt 0 -s {span} {name}"; MGlobal.executeCommand(rblCmd); } } catch (Exception e) { MGlobal.displayWarning(e.Message); } } else { obj = mayaCurve.create(vtxs, crvKnots, (uint)ctsAsNurb.Degree, (MFnNurbsCurve.Form)mfnform, false, ctsAsNurb.IsRational); MFnDependencyNode nodeFn = new MFnDagNode(obj); nodeFn.setName(name); } }