Пример #1
0
def applyCallback(noOfRocksField, scaleMultiplierField, *pArgs):
    noOfRocks = cmds.intField(noOfRocksField, q=True, v=True)
    scaleMultiplier = cmds.intField(scaleMultiplierField, q=True, v=True)

    for i in range(noOfRocks):
        rock = cmds.polyPlatonic(r=random.uniform(7.5, 12.5),
                                 primitive=random.choice(
                                     [3, 4])), cmds.rename('rock_#')

        cmds.polyReduce(ver=1,
                        trm=1,
                        vct=random.choice([4, 5, 7, 8, 9]),
                        p=random.uniform(40, 75),
                        shp=random.uniform(0, 1),
                        kqw=random.uniform(0, 1),
                        kev=random.choice([True, False]),
                        kmw=random.uniform(0, 1))

        if noOfRocks > 1:
            x = random.uniform(-10 * noOfRocks,
                               10 * noOfRocks) * scaleMultiplier
            y = 0
            z = random.uniform(-10 * noOfRocks,
                               10 * noOfRocks) * scaleMultiplier

            cmds.move(x, y, z)

        allEdges = cmds.ls('.e[:]', flatten=1)
        cmds.select(allEdges)
        cmds.polyBevel3(n='rockBevel_#',
                        mv=True,
                        ch=True,
                        sa=180,
                        sn=True,
                        sg=random.choice([2, 3, 4]),
                        d=random.uniform(0.25, 1),
                        o=random.uniform(0.5, 1.5))

        cmds.select(rock)
        cmds.polySmooth(c=random.uniform(0, 1),
                        kb=random.choice([True, False]),
                        khe=random.choice([True, False]),
                        mth=random.choice([1, 2]),
                        ro=random.uniform(0, 1))

        cmds.select(rock)
        cmds.scale(random.uniform(0.3, 1.3) * scaleMultiplier,
                   random.uniform(0.75, 1.25) * scaleMultiplier,
                   random.uniform(0.75, 1.25) * scaleMultiplier,
                   r=True,
                   a=True)
        cmds.manipPivot(r=True)

    cmds.deleteUI(windowName)
    def set_object_rotation(self, name_):
        cmds.move(2,
                  0,
                  0,
                  name_ + ".scalePivot",
                  name_ + ".rotatePivot",
                  absolute=True)
        cmds.select(name_)
        cmds.manipPivot(o=(0, 0, 0))
        origin_y_ = cmds.getAttr(name_ + ".ry")
        origin_x_ = cmds.getAttr(name_ + ".rx")

        for i in range(9):
            #cmds.setKeyframe(name_, t=i + 1 , at='rotateX', v=origin_x_)
            cmds.setKeyframe(name_,
                             t=i + 1,
                             at='rotateY',
                             v=origin_y_ + 10 * (i - 4))
Пример #3
0
def set_reference(mode=''):
    c_ctx = cmds.currentCtx(q=True)
    #print c_ctx
    sel = cmds.ls(sl=True, l=True)
    #print 'set reference :', mode, sel
    current_ctx = cmds.currentCtx()
    if mode == 'object':
        #print 'set reference object mode :'
        cmds.selectMode(o=True)
        rot = cmds.xform(sel, q=True, ro=True, ws=True)
        pos = cmds.xform(sel, q=True, t=True, ws=True)
        rx = rot[0] / 180 * math.pi
        ry = rot[1] / 180 * math.pi
        rz = rot[2] / 180 * math.pi
        cmds.manipScaleContext('Scale', e=True, orientAxes=(rx, ry, rz))
        cmds.manipRotateContext('Rotate', e=True, orientAxes=(rx, ry, rz))
        cmds.manipMoveContext('Move', e=True, orientAxes=(rx, ry, rz))

        cmds.setToolTo('scaleSuperContext')  #マニプ表示がおかしくなるのでいったんコンテキスト設定してから戻す
        cmds.setToolTo('RotateSuperContext')
        cmds.setToolTo('moveSuperContext')
        cmds.setToolTo(current_ctx)
    else:
        if mode == 'vertex':
            manip_type = 'PointHandleTowards'
            comp = cmds.polyListComponentConversion(sel, tv=True)
            comp = cmds.filterExpand(comp, sm=31)
            sel_node = '" , "'.join(pre_sel)
            #print 'vertex ref :', sel_node, comp[0]
        if mode == 'edge':
            manip_type = 'AlignHandleWith'
            comp = cmds.polyListComponentConversion(sel, te=True)
            comp = cmds.filterExpand(comp, sm=32)
            sel_node = comp[0]
        if mode == 'face':
            manip_type = 'AlignHandleWith'
            comp = cmds.polyListComponentConversion(sel, tf=True)
            comp = cmds.filterExpand(comp, sm=34)
            sel_node = comp[0]
        if comp:
            mel.eval('manipScaleOrient 5;')
            mel.eval('{  string $Selection1[]; $Selection1[0] = "' + comp[0] +
                     '"; manipScale' + manip_type + '($Selection1[0], {"' +
                     sel_node + '"}, {}, "", 0);;  };')
            mel.eval('manipRotateOrient 5;')
            mel.eval('{  string $Selection1[]; $Selection1[0] = "' + comp[0] +
                     '"; manipRotate' + manip_type + '($Selection1[0], {"' +
                     sel_node + '"}, {}, "", 0);;  };')
            mel.eval('manipMoveOrient 5;')
            mel.eval('{  string $Selection1[]; $Selection1[0] = "' + comp[0] +
                     '"; manipMove' + manip_type + '($Selection1[0], {"' +
                     sel_node + '"}, {}, "", 0);;  };')
        cmds.selectMode(co=True)
        if pre_ref_mode == 'vertex':
            cmds.selectType(pv=1,
                            smu=0,
                            smp=1,
                            pf=0,
                            pe=0,
                            smf=0,
                            sme=0,
                            puv=0)
        if pre_ref_mode == 'edge':
            cmds.selectType(pv=0,
                            smu=0,
                            smp=0,
                            pf=0,
                            pe=1,
                            smf=0,
                            sme=1,
                            puv=0)
        if pre_ref_mode == 'face':
            cmds.selectType(pv=0,
                            smu=0,
                            smp=0,
                            pf=1,
                            pe=0,
                            smf=0,
                            sme=1,
                            puv=0)
        trans = cmds.xform(sel, q=True, t=True, ws=True)
        num = len(trans) / 3
        x = y = z = 0
        for i in range(0, len(trans), 3):
            x += trans[i]
            y += trans[i + 1]
            z += trans[i + 2]
        pos = [x / num, y / num, z / num]
        #sel_obj = []
        #obj_list = list(set([vtx.split('.')[0] for vtx in pre_sel]))
        #if obj_list:
        #sel_obj = [cmds.listRelatives(s, p=True)[0] if cmds.nodeType(s)=='mesh' else s for s in obj_list]
        #print obj_list, pre_sel
        #cmds.hilite(obj_list, r=True)
        #cmds.hilite(pre_sel, r=True)
    #print 'set to pre mode :', pre_ref_mode
    #print 'set to mode pre :', pre_ref_mode
    if pre_ref_mode == 'object':
        cmds.selectMode(o=True)
    else:
        cmds.selectMode(co=True)
        if pre_obj_list:
            cmds.hilite(pre_obj_list, r=True)
    if pre_sel:
        cmds.select(pre_sel, r=True)
    else:
        cmds.select(cl=True)
    sb.after_pick_context(ctx=c_ctx)
    #移動マニプを選択の中心に移動する
    cmds.manipPivot(p=pos)
Пример #4
0
if selectionList:
    for item in selectionList:
        values = mc.exactWorldBoundingBox(item)
        if values[0] < -1e+10 or values[0] > 1e+10 :
            listBad.append(item)
            print ">> " + item + " : " + str(values)
        else:
            print ">> : " + item + " IS OK"
            print ">> : ", values
else:
    print ">> no selection"
print(listBad)
mc.select(listBad)

## manipPivot
valuePivotPos = mc.manipPivot(q=1, p=1)
valuePivotOri = mc.manipPivot(q=1, o=1)
print "pos = ", valuePivotPos, "ori = ", valuePivotOri

selectionList = mc.ls(sl=1)
if selectionList:
    for item in selectionList:
        mc.select()
        mc.select(item)
        pos = mc.xform(q=1, t=1, r=1)
        rot = mc.xform(q=1, ro=1, r=1)
        scl = mc.xform(q=1, s=1, r=1)
        print item , " : ", "position : ", pos, " rotation : ", rot, " scale : ", scl

##
selectionList = mc.ls(sl=True)