コード例 #1
0
        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));
        }
コード例 #2
0
        public static MDagPath DuplicateMesh(MDagPath targetDag)
        {
            if (targetDag == null)
            {
                return(null);
            }
            MFnMesh newMesh = new MFnMesh();

            targetDag.extendToShape();
            return(MDagPath.getAPathTo(newMesh.copy(targetDag.node)));
        }
コード例 #3
0
        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());
            }
        }
コード例 #4
0
        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());
            }
        }
コード例 #5
0
        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);
            }
        }