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)
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)
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)
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." )
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.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.columnLayout(adjustableColumn=True, width=375)
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.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 )
Caveman Generator
Published:

Caveman Generator

This is a program that generates crowds with and environment. It helps the user focus on the compositing of the scene. The program does the place Read More

Published: