CROWD GENERATOR CODE
import maya.cmds as cmds
import maya.mel as mel
import random
from random import uniform as rand
cmds.select(all=True)
cmds.delete()
cmds.file("T:/VSFX-160-02/lbermu20/Crowd/rock.mb",i=True)
import maya.mel as mel
import random
from random import uniform as rand
cmds.select(all=True)
cmds.delete()
cmds.file("T:/VSFX-160-02/lbermu20/Crowd/rock.mb",i=True)
cmds.file(force=True, new=True)
def buildPlane():
heightBump=cmds.floatSliderGrp('heightPlane',query=True,value=True)
if cmds.objExists('pPlane1'):
cmds.delete('pPlane1')
#cmds.polyPlane(width=20,axis=[0,90,0],patchesU=30,patchesV=30)
cmds.polyPlane(width=35, height=35, sx=20, sy=20, ax=(0, 1, 0), cuv=2, ch=1)
cmds.move(0, -1, 0)
mel.eval("makeCollideNCloth;")
for i in range(15):
randWidth=random.randrange(0,440)
cmds.select('pPlane1.vtx[%i]' % randWidth)
cmds.softSelect(softSelectEnabled=True,softSelectDistance=6,softSelectUVDistance=.5)
cmds.move(0,rand(-heightBump,heightBump),0, relative=True)
heightBump=cmds.floatSliderGrp('heightPlane',query=True,value=True)
if cmds.objExists('pPlane1'):
cmds.delete('pPlane1')
#cmds.polyPlane(width=20,axis=[0,90,0],patchesU=30,patchesV=30)
cmds.polyPlane(width=35, height=35, sx=20, sy=20, ax=(0, 1, 0), cuv=2, ch=1)
cmds.move(0, -1, 0)
mel.eval("makeCollideNCloth;")
for i in range(15):
randWidth=random.randrange(0,440)
cmds.select('pPlane1.vtx[%i]' % randWidth)
cmds.softSelect(softSelectEnabled=True,softSelectDistance=6,softSelectUVDistance=.5)
cmds.move(0,rand(-heightBump,heightBump),0, relative=True)
def buildobstacles():
cmds.file("T:/VSFX-160-02/lbermu20/Crowd/rock.mb",i=True)
cmds.file("T:/VSFX-160-02/lbermu20/Crowd/tree.mb",i=True)
#if cmds.objExists('pPlane1'):
#cmds.delete('pPlane1')
for i in range(-15,15,5):
for j in range(-15,15,3):
if rand(0,1)>.5:
nextrock=cmds.instance('rock')
else:
nextHouse=cmds.instance('Tree')
cmds.select(nextrock[0])
# Set the scale and rotate pivot so that when scaling they scale from the bottom
#cmds.move(0, -.5, 0, cube[0]+".scalePivot",cube[0]+".rotatePivot")
# The rand() function outputs floating point numbers
cmds.move(i,-1,j)
cmds.rotate(0,rand(0,45),0)
scaleIt=rand(.7,1.2)
cmds.scale(scaleIt,scaleIt,scaleIt)
# Add obstacles
#cmds.polySphere( r=1,sx=10,sy=10,ch=0)
#cmds.move(0,-3.90,0,relative=True)
#mel.eval("makeCollideNCloth;")
#cmds.setAttr("nRigidShape2.thickness",.15)
cmds.file("T:/VSFX-160-02/lbermu20/Crowd/rock.mb",i=True)
cmds.file("T:/VSFX-160-02/lbermu20/Crowd/tree.mb",i=True)
#if cmds.objExists('pPlane1'):
#cmds.delete('pPlane1')
for i in range(-15,15,5):
for j in range(-15,15,3):
if rand(0,1)>.5:
nextrock=cmds.instance('rock')
else:
nextHouse=cmds.instance('Tree')
cmds.select(nextrock[0])
# Set the scale and rotate pivot so that when scaling they scale from the bottom
#cmds.move(0, -.5, 0, cube[0]+".scalePivot",cube[0]+".rotatePivot")
# The rand() function outputs floating point numbers
cmds.move(i,-1,j)
cmds.rotate(0,rand(0,45),0)
scaleIt=rand(.7,1.2)
cmds.scale(scaleIt,scaleIt,scaleIt)
# Add obstacles
#cmds.polySphere( r=1,sx=10,sy=10,ch=0)
#cmds.move(0,-3.90,0,relative=True)
#mel.eval("makeCollideNCloth;")
#cmds.setAttr("nRigidShape2.thickness",.15)
def deletecaveman():
if cmds.objExists('instancer1'):
cmds.select('manWalkCycle','caveman_nParticle', 'nucleus1',
'instancer1','uniformField1')
cmds.delete()
else:
cmds.warning( "Please click button to generate caveman first." )
if cmds.objExists('instancer1'):
cmds.select('manWalkCycle','caveman_nParticle', 'nucleus1',
'instancer1','uniformField1')
cmds.delete()
else:
cmds.warning( "Please click button to generate caveman first." )
def adjustcavemanSpeed():
if cmds.objExists('instancer1'):
cavemanRunSpeed=cmds.floatSliderGrp("cavemanSpeed",query=True,value=True)
cmds.uniform( name='uniformField1', edit=True, m=cavemanRunSpeed)
else:
cmds.warning( "Running buildcaveman function first." )
buildcaveman()
def buildcaveman():
deletecaveman()
cavemanRunSpeed=cmds.floatSliderGrp("cavemanSpeed",query=True,value=True)
densityOfParticles=cmds.floatSliderGrp("numberOfcaveman",query=True,value=True)
densityOfParticles=1.8-densityOfParticles
cmds.file('T:/VSFX-160-02/lbermu20/Crowd/characters/caveman/cavemanWalkCycle.mb',i=True)
cmds.scale(cmds.floatSliderGrp("sizeOfcaveman",query=True,value=True),cmds.floatSliderGrp("sizeOfcaveman",query=True,value=True),cmds.floatSliderGrp("sizeOfcaveman",query=True,value=True),"manWalkCycle")
cmds.setAttr("manWalkCycle.rotateY", 90)
cmds.makeIdentity("manWalkCycle", apply=True, t=1, r=1, s=1, n=0, pn=1)
cmds.playbackOptions( minTime='1', maxTime='400' )
cmds.currentTime(1)
cmds.nParticle( name='caveman_nParticle',lowerLeft=[-1,0,-1], upperRight=[1,0,1], gridSpacing=densityOfParticles, conserve=1)
cmds.setAttr("nucleus1.usePlane",0)
manRun=cmds.ls('polySurface*')
cmds.setAttr( "caveman_nParticleShape.selfCollide", 1)
cmds.setAttr( "caveman_nParticleShape.selfCollideWidthScale", 3)
cmds.setAttr ("caveman_nParticleShape.collideWidthScale", 3)
cmds.particleInstancer ( 'caveman_nParticleShape', addObject=True, object=manRun, cycle='Sequential', cycleStep=1, cycleStepUnits='frames',
levelOfDetail='geometry', rotationUnits='degrees', rotationOrder='XYZ', aimDirection='velocity',position='worldPosition' ,cycleStartObject='particleId', age='age')
cmds.uniform( pos=[0, 0, 0], m=cavemanRunSpeed, att=.2, dx=-1, dy=0, dz=-1, mxd=-1, vsh='none')
cmds.connectDynamic('caveman_nParticleShape', fields='uniformField1')
cmds.setAttr( "uniformField1.directionZ", 0)
cmds.setAttr ("uniformField1.directionX" ,2)
cmds.setKeyframe("uniformField1.d")
cmds.currentTime(30)
cmds.setAttr( "uniformField1.directionZ", 2)
cmds.setAttr ("uniformField1.directionX" ,0)
cmds.setKeyframe("uniformField1.d")
cmds.currentTime(60)
cmds.setAttr( "uniformField1.directionZ", 0)
cmds.setAttr ("uniformField1.directionX" ,2)
cmds.setKeyframe("uniformField1.d")
cmds.currentTime(110)
cmds.setAttr( "uniformField1.directionZ", 2)
cmds.setAttr ("uniformField1.directionX" ,0)
cmds.setKeyframe("uniformField1.d")
cmds.currentTime(1)
cmds.hide('manWalkCycle')
if cmds.objExists('instancer1'):
cavemanRunSpeed=cmds.floatSliderGrp("cavemanSpeed",query=True,value=True)
cmds.uniform( name='uniformField1', edit=True, m=cavemanRunSpeed)
else:
cmds.warning( "Running buildcaveman function first." )
buildcaveman()
def buildcaveman():
deletecaveman()
cavemanRunSpeed=cmds.floatSliderGrp("cavemanSpeed",query=True,value=True)
densityOfParticles=cmds.floatSliderGrp("numberOfcaveman",query=True,value=True)
densityOfParticles=1.8-densityOfParticles
cmds.file('T:/VSFX-160-02/lbermu20/Crowd/characters/caveman/cavemanWalkCycle.mb',i=True)
cmds.scale(cmds.floatSliderGrp("sizeOfcaveman",query=True,value=True),cmds.floatSliderGrp("sizeOfcaveman",query=True,value=True),cmds.floatSliderGrp("sizeOfcaveman",query=True,value=True),"manWalkCycle")
cmds.setAttr("manWalkCycle.rotateY", 90)
cmds.makeIdentity("manWalkCycle", apply=True, t=1, r=1, s=1, n=0, pn=1)
cmds.playbackOptions( minTime='1', maxTime='400' )
cmds.currentTime(1)
cmds.nParticle( name='caveman_nParticle',lowerLeft=[-1,0,-1], upperRight=[1,0,1], gridSpacing=densityOfParticles, conserve=1)
cmds.setAttr("nucleus1.usePlane",0)
manRun=cmds.ls('polySurface*')
cmds.setAttr( "caveman_nParticleShape.selfCollide", 1)
cmds.setAttr( "caveman_nParticleShape.selfCollideWidthScale", 3)
cmds.setAttr ("caveman_nParticleShape.collideWidthScale", 3)
cmds.particleInstancer ( 'caveman_nParticleShape', addObject=True, object=manRun, cycle='Sequential', cycleStep=1, cycleStepUnits='frames',
levelOfDetail='geometry', rotationUnits='degrees', rotationOrder='XYZ', aimDirection='velocity',position='worldPosition' ,cycleStartObject='particleId', age='age')
cmds.uniform( pos=[0, 0, 0], m=cavemanRunSpeed, att=.2, dx=-1, dy=0, dz=-1, mxd=-1, vsh='none')
cmds.connectDynamic('caveman_nParticleShape', fields='uniformField1')
cmds.setAttr( "uniformField1.directionZ", 0)
cmds.setAttr ("uniformField1.directionX" ,2)
cmds.setKeyframe("uniformField1.d")
cmds.currentTime(30)
cmds.setAttr( "uniformField1.directionZ", 2)
cmds.setAttr ("uniformField1.directionX" ,0)
cmds.setKeyframe("uniformField1.d")
cmds.currentTime(60)
cmds.setAttr( "uniformField1.directionZ", 0)
cmds.setAttr ("uniformField1.directionX" ,2)
cmds.setKeyframe("uniformField1.d")
cmds.currentTime(110)
cmds.setAttr( "uniformField1.directionZ", 2)
cmds.setAttr ("uniformField1.directionX" ,0)
cmds.setKeyframe("uniformField1.d")
cmds.currentTime(1)
cmds.hide('manWalkCycle')
if cmds.window('myWindow',exists=True):
cmds.deleteUI('myWindow')
if cmds.dockControl ("autoDock", exists = True):
cmds.deleteUI("autoDock", control = True)
cmds.window('myWindow',title="Crowd Simulator",resizeToFitChildren=True, sizeable=False)
cmds.deleteUI('myWindow')
if cmds.dockControl ("autoDock", exists = True):
cmds.deleteUI("autoDock", control = True)
cmds.window('myWindow',title="Crowd Simulator",resizeToFitChildren=True, sizeable=False)
cmds.columnLayout(adjustableColumn=True, width=375)
cmds.picture(image = 'T:\VSFX-160-02\_CLASS_SHARE\crowd\lbermu20_gpool21_alopez26/Caveman_Splash.jpg')
cmds.picture(image = 'T:\VSFX-160-02\_CLASS_SHARE\crowd\lbermu20_gpool21_alopez26/Caveman_Splash.jpg')
cmds.separator( height=15, style='out' )
cmds.floatSliderGrp("heightPlane",columnWidth3=(110,80,170),columnAlign3=['left','left','left'],value=1,label="Height of Plane Bumps",min=0,max=4,field=True)
cmds.floatSliderGrp("numberOfcaveman",columnWidth3=(110,80,170),columnAlign3=['left','left','left'],value=.8,label="Number of Caveman",precision=2,min=.1,max=1.7,field=True)
cmds.floatSliderGrp("sizeOfcaveman",columnWidth3=(110,80,170),columnAlign3=['left','left','left'],value=.8,label="Size of Caveman",precision=2,min=0.1,max=1,field=True)
cmds.floatSliderGrp("cavemanSpeed",columnWidth3=(110,80,170),columnAlign3=['left','left','left'],value=10,label="Speed of Caveman",min=3.5,changeCommand='adjustcavemanSpeed()',max=20,field=True)
cmds.floatSliderGrp("numberOfcaveman",columnWidth3=(110,80,170),columnAlign3=['left','left','left'],value=.8,label="Number of Caveman",precision=2,min=.1,max=1.7,field=True)
cmds.floatSliderGrp("sizeOfcaveman",columnWidth3=(110,80,170),columnAlign3=['left','left','left'],value=.8,label="Size of Caveman",precision=2,min=0.1,max=1,field=True)
cmds.floatSliderGrp("cavemanSpeed",columnWidth3=(110,80,170),columnAlign3=['left','left','left'],value=10,label="Speed of Caveman",min=3.5,changeCommand='adjustcavemanSpeed()',max=20,field=True)
cmds.separator( height=15, style='out' )
cmds.button(label="Generate Plane",command="buildPlane()")
cmds.button(label="Add Obstacles", command="buildobstacles()")
cmds.button(label="Generate Caveman",width=376,command="buildcaveman()")
cmds.button(label="Delete Caveman",width=376,command="deletecaveman()")
allowedAreas = ['right', 'left']
cmds.dockControl("autoDock", area='right', content='myWindow',width=376,fixedWidth=False,allowedArea=allowedAreas,
label = 'Crowd Simulator',visible=True )