/
histMain.py
109 lines (75 loc) · 4.12 KB
/
histMain.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
import maya.cmds as cmds
import sys
import os
sys.path.append('/Users/zurich/Google Drive/SITES/FactMachine-Final/3D-Histogram')
import stvReadDataFile
reload(stvReadDataFile)
import stvMakeShaders
reload(stvMakeShaders)
import stvChunk
reload(stvChunk)
import stvCreateMesh
reload(stvCreateMesh)
def main():
lstDataMain = stvReadDataFile.fnReadMainData()
# x,z,y : year, temp, day : left/right, up/down, top/bottom
lstSelectedObjects = cmds.ls('STVPoly*')
lstShadingGroup = stvMakeShaders.fnCreateShaders()
if len(lstSelectedObjects) > 0:
cmds.delete(lstSelectedObjects)
fltTempScaler = float(2)
fltHeight = float(20) / fltTempScaler
fltSize = (float(40) / float(153)) * 1.03 #Define the size and add 1% for fun
fltXScaler = float(40) / float(152)
fltXConstant = float(-20) - fltXScaler
fltAspect = float(86) / float(153) * float(20)
fltYScaler = fltAspect * float(2) / float(85)
fltYConstant = (float(-1) * fltAspect) - fltYScaler
def fnTempScalar(fltTemp):
return((1.262 * fltTemp) -13.23)
def fnCreateCylinder(intX, intY, fltTemp, strFtr, strPlyName): #this generates a single cylinder
strInstanceResult = cmds.instance(strPlyName, name = strPlyName + '_Factor' + strFtr + '_instance#')[0]
cmds.setAttr(strInstanceResult + '.scaleY', fltTemp)
fltTranslateHeight = fltSize * fltTemp / float(2)
fltXMovment = (float(intX) * fltXScaler) + fltXConstant
fltYMovement = (float(intY) * fltYScaler) + fltYConstant
cmds.move(fltXMovment, fltTranslateHeight, fltYMovement, strInstanceResult, absolute=True)
return(strInstanceResult)
def fnUniteMesh(lstChunk, intChunkNumber, strPName):
lstSelectedObjects = cmds.ls('STVPoly*')
lstTranche = []
for lstObj in lstChunk:
fltAdjTemp = fnTempScalar(float(lstObj[2]))
strInts = fnCreateCylinder(int(lstObj[1]), int(lstObj[0]), fltAdjTemp, str(lstObj[3]), strPName) #NEED to add function here for temp
lstTranche.append(strInts)
lstSelectedObjects = cmds.ls('STVPoly*')
if len(lstTranche) > 1:
strPolyMeshName = 'STVPolyMesh_Factor' + str(lstObj[3]) + '_Tranche_' + str(intChunkNumber)
cmds.polyUnite(lstTranche, n=strPolyMeshName)
cmds.delete(strPolyMeshName, ch=True)
cmds.delete(lstTranche)
return(strPolyMeshName)
def fnCreateFactor(lstChunkedUp, intFactor):
lstTranches = []
for intChunkNum in range(0, len(lstChunkedUp)):
strPolyName = cmds.polyCube(sx=1, sy=1,sz=1, cuv=0, w=fltSize, h=fltSize, d=fltSize, name='STVPolyBase')[0] #create the shape
strTrancheName = fnUniteMesh(lstChunkedUp[intChunkNum], intChunkNum, strPolyName)
lstTranches.append(strTrancheName)
strFactor = 'STVPoly_Factor_' + str(intFactor)
cmds.polyUnite(lstTranches, n=strFactor)
cmds.delete(strFactor, ch=True)
return(strFactor)
intFactorLimit = 11 + 1
lstFactor = []
for intFactNum in range(1,intFactorLimit):
lstChunked = stvChunk.fnChunker(str(intFactNum), 50, lstDataMain)
strFactor = fnCreateFactor(lstChunked, intFactNum)
lstFactor.append(strFactor)
def fnAssignMeshShader(lstShadingGroup, lstMesh):
for intFactorNumber in range(1,intFactorLimit): #iterate through factors
cmds.select(lstMesh[intFactorNumber-1], r=True) #select the mesh created
cmds.sets( e=True, forceElement = lstShadingGroup[intFactorNumber-1]) #assign the mesh to a shader
print(lstFactor)
fnAssignMeshShader(lstShadingGroup, lstFactor)
if __name__ == '__main__':
main()