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))
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)
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)