Beispiel #1
0
        /// <summary>
        /// well, this action is truely dangerous
        /// </summary>
        /// <param name="list"></param>
        /// <returns></returns>
        public static bool CombineMaterials(MSelectionList list, bool deleteRepeated = true)
        {
            if (!BasicFunc.CheckSelectionList(list, 2))
            {
                Debug.Log("please choose at least 2 materials");
                return(false);
            }

            string                firstMatName  = "";
            List <MObject>        deleteList    = new List <MObject>();
            List <MSelectionList> waitForAssign = new List <MSelectionList>();

            MDGModifier dGModifier = new MDGModifier();

            for (uint i = 0; i < list.length; i++)
            {
                //Debug.Log(i + " mat test");
                MObject matObject = new MObject();
                list.getDependNode(i, matObject);
                MFnDependencyNode dnode = new MFnDependencyNode(matObject);
                if (i == 0)
                {
                    firstMatName = dnode.absoluteName;
                    continue;
                }
                else
                {
                    deleteList.Add(matObject);
                }
                //Debug.Log(i + " node:" + dnode.absoluteName);
                if (matObject.hasFn(MFn.Type.kLambert) || matObject.hasFn(MFn.Type.kBlinn) || matObject.hasFn(MFn.Type.kPhong))
                {
                    //Debug.Log("has mat fn");
                    //MMaterial mat = new MMaterial(matObject);
                    //MColor color = new MColor();
                    //mat.getDiffuse(color);
                    //Debug.Log("mat:" + dnode.absoluteName + " ,color:" + BasicFunc.MToString(color));
                    SelectObjectsWithMat(dnode);
                    //Debug.Log("finish select");


                    //waitForAssign.Add(BasicFunc.GetSelectedList());
                    AssignMat(firstMatName);
                    //Debug.Log("finish assign");
                    BasicFunc.DeleteByCMD(dnode.absoluteName);
                    //Debug.Log("finish delete");
                }
                else
                {
                    Debug.Log("no mat fn");
                }
            }

            dGModifier.doIt();

            //MGlobal.executeCommandOnIdle("hyperShade -objects " + matNode.absoluteName);
            return(true);
        }
Beispiel #2
0
        public static bool CombineMaterials(List <MObject> list, bool deleteRepeated = true)
        {
            if (list.Count < 2)
            {
                Debug.Log("please choose at least 2 materials");
                return(false);
            }
            string                firstMatName  = "";
            List <MObject>        deleteList    = new List <MObject>();
            List <MSelectionList> waitForAssign = new List <MSelectionList>();

            MDGModifier dGModifier = new MDGModifier();

            for (int i = 0; i < list.Count; i++)
            {
                //Debug.Log(i + " mat test");
                MObject           matObject = list[i];
                MFnDependencyNode dnode     = new MFnDependencyNode(matObject);
                if (i == 0)
                {
                    firstMatName = dnode.absoluteName;
                    continue;
                }
                else
                {
                    deleteList.Add(matObject);
                }
                //Debug.Log(i + " node:" + dnode.absoluteName);
                if (matObject.hasFn(MFn.Type.kLambert) || matObject.hasFn(MFn.Type.kBlinn) || matObject.hasFn(MFn.Type.kPhong))
                {
                    SelectObjectsWithMat(dnode);
                    AssignMat(firstMatName);
                    BasicFunc.DeleteByCMD(dnode.absoluteName);
                }
                else
                {
                    Debug.Log("no mat fn");
                }
            }
            dGModifier.doIt();
            //MGlobal.executeCommandOnIdle("hyperShade -objects " + matNode.absoluteName);
            return(true);
        }