-
Notifications
You must be signed in to change notification settings - Fork 0
/
make_random_shape.py
125 lines (104 loc) · 3.78 KB
/
make_random_shape.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#MakeShape
import maya.cmds as cmds
import math
import random
import sys
from decimal import Decimal
shapeList = ['RandomCube','RandomCylinder','RandomSphere','RandomSoccerBall','RandomPyramid','RandomCone','RandomTorus']
created = []
# note that n*2 because of mirror function...2 == 4 objects
n = 3
def MakeShape(n):
# Execute A Random Function From The List
if n == 0:
print ('n = ' + str(n) + ' equal to zero')
print ('stopped')
return 1
else:
print ('n = ' + str(n))
ShapeName = random.choice(shapeList)
print (ShapeName)
possibles = globals().copy()
possibles.update(locals())
method = possibles.get(ShapeName)
if not method:
raise Exception("Method %s not implemented" % ShapeName)
method()
return MakeShape(int(n) - 1)
# Random Value Generator ; each function creates a primative with random attributes, then mirrors it.
# it will also add each newly created object to created list for merging
def RandomCube():
cmds.polyCube( h = random.randrange(1,50), w = random.randrange(1,50), d = random.randrange(1,50), sx = 4, sy = 4 )
cmds.select()
Transforms()
cmds.makeIdentity(apply=True, t=1, r=1, s=1, n=0)
created.append(cmds.ls(selection=True))
cmds.duplicate()
cmds.scale(-1,1,1)
created.append(cmds.ls(selection=True))
def RandomCylinder():
cmds.polyCylinder(h = random.randrange(1,50), r = random.randrange(1,50), sx=4, sy=4, sz=4)
cmds.select()
Transforms()
cmds.makeIdentity(apply=True, t=1, r=1, s=1, n=0)
created.append(cmds.ls(selection=True))
cmds.duplicate()
cmds.scale(-1,1,1)
created.append(cmds.ls(selection=True))
def RandomSphere():
cmds.polySphere(r = random.randrange(1,50), sx=4, sy=4)
cmds.select()
Transforms()
cmds.makeIdentity(apply=True, t=1, r=1, s=1, n=0)
created.append(cmds.ls(selection=True))
cmds.duplicate()
cmds.scale(-1,1,1)
created.append(cmds.ls(selection=True))
def RandomSoccerBall():
cmds.polyPrimitive( r=random.randrange(1,50), l=random.randrange(1,50), pt=0)
cmds.select()
Transforms()
cmds.makeIdentity(apply=True, t=1, r=1, s=1, n=0)
created.append(cmds.ls(selection=True))
cmds.duplicate()
cmds.scale(-1,1,1)
created.append(cmds.ls(selection=True))
def RandomPyramid():
cmds.polyPyramid(ns = random.randrange(1,50), w = random.randrange(1,50), sh = 4, sc = 4 )
cmds.select()
Transforms()
cmds.makeIdentity(apply=True, t=1, r=1, s=1, n=0)
created.append(cmds.ls(selection=True))
cmds.duplicate()
cmds.scale(-1,1,1)
created.append(cmds.ls(selection=True))
def RandomCone():
cmds.polyCone( r = random.randrange(1,50),h = random.randrange(1,50), sx=4, sy=4, sz=4)
cmds.select()
Transforms()
cmds.makeIdentity(apply=True, t=1, r=1, s=1, n=0)
created.append(cmds.ls(selection=True))
cmds.duplicate()
cmds.scale(-1,1,1)
created.append(cmds.ls(selection=True))
def RandomTorus():
cmds.polyTorus(sx=4, sy=4, r=random.randrange(1,50), sr=random.randrange(1,50))
cmds.select()
Transforms()
cmds.makeIdentity(apply=True, t=1, r=1, s=1, n=0)
created.append(cmds.ls(selection=True))
cmds.duplicate()
cmds.scale(-1,1,1)
created.append(cmds.ls())
# Transforms for each shape are randomized
def Transforms():
cmds.scale(random.randrange(1,10),random.randrange(1,10),random.randrange(1,10))
cmds.rotate(random.randrange(1,355),random.randrange(1,355),random.randrange(1,355))
cmds.move(0,random.randrange(-5,5),random.randrange(-2,2))
def merge():
print ('created items='+str(created))
for i in created:
cmds.ls(str(i))
#cmds.polyUnite( str(i), n='result' )
MakeShape(n)
merge()