private void RenameHierachy(object sender, RoutedEventArgs e)
 {
     BasicFunc.IterateSelectedDags((dag) =>
     {
         List <MDagPath> dags = BasicFunc.GetHierachyAll(dag);
         foreach (MDagPath d in dags)
         {
             MFnDependencyNode node = new MFnDependencyNode(d.node);
             node.setName(GetNewName(node.name));
         }
     });
 }
Esempio n. 2
0
        public static void BindNCloth(MSelectionList selecteList = null)
        {
            if (selecteList == null)
            {
                selecteList = BasicFunc.GetSelectedList();
            }
            int count = (int)selecteList.length;

            if (count <= 1)
            {
                //Debug.Log("ncloth control switch target: select [ctl,ncloth0,ncloth1...]");
                return;
            }
            else
            {
                //Debug.Log("ncloth control switch target count:" + count);
            }
            MDagPath ctlDag = new MDagPath();

            selecteList.getDagPath(0, ctlDag);
            selecteList.remove(0);
            MFnDependencyNode dn_ctl = new MFnDependencyNode(ctlDag.node);

            BasicFunc.IterateSelectedDags((dag) =>
            {
                //Debug.Log("ncloth control set for:"+dag.fullPathName);
                MPlug ctlNewAttrPlug = BindAttr.AddBoolAttr(dn_ctl, "Dynamic_" + dag.partialPathName, true, "", false);
                dag.extendToShape();
                MFnDependencyNode dn_nCloth = new MFnDependencyNode(dag.node);
                MPlug plug_isDynamic        = dn_nCloth.findPlug(ConstantValue.plugName_nCloth_isDynamic);
                MPlug plug_currentTime      = dn_nCloth.findPlug(ConstantValue.plugName_nCloth_currentTime);
                if (plug_isDynamic != null && plug_currentTime != null)
                {
                    MPlugArray inputArr_currentTime = new MPlugArray();
                    plug_currentTime.connectedTo(inputArr_currentTime, true, false);
                    MFnDependencyNode dn_time = new MFnDependencyNode(inputArr_currentTime[0].node);

                    BindAttr.ProjectPlug(plug_isDynamic, dn_time.findPlug(ConstantValue.plugName_nClothTime_nodeState), 0, 1, (int)ConstantValue.TimeNodeState.Stuck, (int)ConstantValue.TimeNodeState.Normal);
                }
                BasicFunc.ConnectPlug(ctlNewAttrPlug, plug_isDynamic);
            }, MFn.Type.kNCloth, selecteList);


            //List<string> nclothNameList = new List<string>();
            //foreach (MDagPath dag in nclothList.DagPaths())
            //{
            //    nclothNameList.Add()
            //}
        }
Esempio n. 3
0
        public static List <CommandData> GetCommandDatas()
        {
            List <CommandData> cmdList = new List <CommandData>();


            //cmdList.Add(new CommandData("网格", "材质"));
            cmdList.Add(new CommandData("网格", cmdStr, "printEdges", "打印所有边", () =>
            {
                BasicFunc.IterateSelectedDags((dag) =>
                {
                    dag.extendToShape();
                    MFnMesh mesh = new MFnMesh(dag);
                    CombineOverLappingEdge(mesh, 0.01f);
                }, MFn.Type.kMesh);
            }));

            cmdList.Add(new CommandData("网格", cmdStr, "realExtract", "老实地提取", () =>
            {
                ExtractFacesIntoOneObject(BasicFunc.GetSelectedList());
            }));


            return(cmdList);
        }
        private void LoadJoints(object sender, RoutedEventArgs e)
        {
            joints.Clear();
            //stackPanels.Clear();
            grid_jointSliders.Children.Clear();
            sliders.Clear();

            BasicFunc.IterateSelectedDags((dag) =>
            {
                joints.Add(new MFnIkJoint(dag));
            }, MFn.Type.kJoint);

            //<StackPanel Orientation="Horizontal">
            //    <Button Style="{StaticResource NormalButton}" Width="80" Height="40" Click="LoadJoints">Joint 0</Button>
            //    <Slider Style="{StaticResource NormalSlider}" Name="test"/>
            //</StackPanel>

            MVector lastJointWorldPos  = joints[joints.Count - 1].getTranslation(MSpace.Space.kWorld);
            MVector firstJointWorldPos = joints[0].getTranslation(MSpace.Space.kWorld);
            double  totalLength        = (lastJointWorldPos - firstJointWorldPos).length;

            for (int i = 0; i < joints.Count; i++)
            {
                StackPanel panel = new StackPanel {
                    Orientation = Orientation.Horizontal
                };
                Button btn = new Button {
                    Style = this.FindResource("NormalButton") as Style, Width = 80, Height = 40, Name = "jointBtn_" + i, Content = joints[i].absoluteName
                };
                int index = i;//local variable is important
                btn.Click += new RoutedEventHandler((obj, ea) =>
                {
                    //choose
                    BasicFunc.Select(joints[index].dagPath);
                });
                panel.Children.Add(btn);

                if (i != 0 && i != joints.Count - 1)
                {
                    MVector jointWorldPos = joints[i].getTranslation(MSpace.Space.kWorld);
                    Slider  newSlider     = new Slider {
                        Style = this.FindResource("NormalSlider") as Style, Name = "jointSlider_" + i
                    };
                    newSlider.Value = (jointWorldPos - firstJointWorldPos).length / totalLength;
                    //newSlider.ValueChanged += new RoutedPropertyChangedEventHandler<double>((obj, rpce) =>
                    //{
                    //     .NewValue
                    //});
                    panel.Children.Add(newSlider);
                    sliders.Add(newSlider);
                }
                else
                {
                    sliders.Add(null);
                }
                grid_jointSliders.Children.Add(panel);
            }


            //newSlider.
        }