Maya Python:为多个曲线CVS创建一个群集

时间:2020-03-05 21:46:00

标签: python cluster-computing maya autodesk

好的,现在我的脊椎自动装置遇到了最后一个问题:但是,我没有发布完整的代码,而是将问题简化为一个基本的演示。这是我想做的:

我知道如何使用For Loop使曲线上的所有cvs聚类:但不是所有cvs:我希望它仅对前2个cvs聚类,然后对后2个cvs聚类,总共2个集群,而不是它为guideLine_ctrlCurve创建的4个集群

第二,我想重命名集群。我可以对集群名称进行硬编码:但这是不可靠的,因为即使您更改了先前集群的名称,集群仍然会被maya递增命名。

第三:我想让它作为clusterGrp下重命名的集群的父项:但是问题是:每当您为一个集群父项时,它都会自动为该集群创建一个新的组,这可能会非常烦人:这是我找到的唯一方法正在将群集拖到新父级的大纲视图中:但我还没有找到python解决方案。

'''
import DS_clusterCurve_demo
reload (DS_clusterCurve_demo)
DS_clusterCurve_demo.gui()
'''

import re
import maya.cmds as cmds
import maya.mel as mel

if cmds.window("clusterWin", exists =True):
    cmds.deleteUI("clusterWin", window = True)

myWindow = cmds.window("clusterWin",t='DS_clusterCurve_demo',w=200, h=500, toolbox=True)
column = cmds.columnLayout(adj=True)

def gui():
    if cmds.window("clusterWin", exists=True):
        cmds.deleteUI("clusterWin", window=True)

    myWindow = cmds.window("clusterWin", t="DS_clusterCurve_demo", w=200, h=500, toolbox=True)
    column = cmds.columnLayout(adj=True)

    cmds.button(label="Build Example curve", c=buildExamples)
    cmds.separator(w=200, h=3)
    cmds.button(label="Create Curve Clusters", c=buildClusters)
    cmds.separator(w=200, h=3)
    cmds.button(label="Group Clusters", c=groupClusters)

    cmds.setParent("..")
    cmds.showWindow(myWindow)

def buildExamples(*args):
    cmds.curve(n='guideLine_ctrlCurve', d=1, p=[(0,0,0),(0,1,0),(0,2,0),(0,3,0)])

def buildClusters(*args):
    curveCVs = cmds.ls('guideLine_ctrlCurve' + '.cv[0:]',fl=True)
    for p in curveCVs:
        cmds.cluster(p)

def groupClusters(*args):
    cmds.group(n='clusterGrp',empty=True,world=True)
    #cmds.parent('clustersWhenProperlyRenamed','clusterGrp')

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

好的,这是我为所有好奇的人想出的解决方案:

'''
import DS_clusterCurve_demo
reload (DS_clusterCurve_demo)
DS_clusterCurve_demo.gui()
'''

import re
import maya.cmds as cmds
import maya.mel as mel

if cmds.window("clusterWin", exists =True):
    cmds.deleteUI("clusterWin", window = True)

myWindow = cmds.window("clusterWin",t='DS_clusterCurve_demo',w=200, h=500, toolbox=True)
column = cmds.columnLayout(adj=True)

def gui():
    if cmds.window("clusterWin", exists=True):
        cmds.deleteUI("clusterWin", window=True)

    myWindow = cmds.window("clusterWin", t="DS_clusterCurve_demo", w=200, h=500, toolbox=True)
    column = cmds.columnLayout(adj=True)

    cmds.button(label="Build Example curve", c=buildExamples)
    cmds.separator(w=200, h=3)
    cmds.button(label="Create Curve Clusters", c=buildClusters)
    cmds.separator(w=200, h=3)
    cmds.button(label="Group Clusters", c=groupClusters)

    cmds.setParent("..")
    cmds.showWindow(myWindow)

def buildExamples(*args):
    cmds.curve(n='guideLine_ctrlCurve', d=1, p=[(0,0,0),(0,1,0),(0,2,0),(0,3,0)])

def buildClusters(*args):
    guideCurve = 'guideLine_ctrlCurve'
    cmds.cluster(guideCurve + ".cv[0:1]",n="up_crvCluster_")
    cmds.cluster(guideCurve + ".cv[2:3]",n="dwn_crvCluster_")

def groupClusters(*args):
    cmds.group(n='clusterGrp',empty=True,world=True)
    cmds.parent('up_crvCluster_Handle','clusterGrp')
    cmds.parent('dwn_crvCluster_Handle','clusterGrp')

它比我更喜欢硬编码:但是,嘿,如果它能正常工作?