Ok so not sure that this is the most exciting thing in the world, but this is my first year scripting assignment. It was a basic python script that when in Maya created a GUI window which in turn would create a lot of spheres and then depending on what options you chose it would move up and down in a wave like pattern. You could make it gentle or choppy, and it worked on the basis of manipulating a sine wave.
So here is some code for those that are interested:
(there is some boring Maya GUI stuff missing and applying the shader to it)
#define procedure to move a named object up and down on a sine wave.
def moveparticle(speed,Name,depth):
#for loop to establish values on the sine wave – hence 0,180 for y in range(0,180):
#make j the radian equivalent of the current y degrees eg. 180 = pi (3.14) j = math.radians(y)
#using the j radians calculate the sine of that multiplied by the speed to increase the
frequency of the wave within the range 180 degrees, and assign to x x = math.sin(speed*j)
#assign a keyframe to the object’s translate y values by value x and key it at the time value
y / 2 + the depth value to determine the delay so all the objects don’t move together cmds.setKeyframe(Name, at='translateY', v=x, t=((y/2)+depth))
#select the current object cmds.select(Name)
#set the current object selected pre and post infinity to cycle so the wave will continue cmds.setInfinity(pri='cycle', poi='cycle')
#define procedure to make and arrange the objects madedef makegrid(*args):
# check to see it the GUI window has appeared otherwise do else statment if cmds.window("myWindow", exists=True):
#if the GUI does exist then take the value of the width slider and assign to variable width width = cmds.intSlider("width", query=True, value=True)
#take the value of the depth slider and assign to width depth = cmds.intSlider("depth", query=True, value=True)
#take the value of the speed slider and assign to speed speed = cmds.intSlider("speed", query=True, value=True)
#take the name from the string typed into the string text field and assign to Name Name = cmds.textField("Name", query=True, text=True)
#else statement for when the GUI doesn’t exist else:
#print out “Query failed” so that it is obvious when programming has broken print "Query failed"
#start to create a grid using the width and depth values
#for loop to create the x values between 0, width value for x in range(0,width):
#nested for loop to create the y values between 0, depth value for y in range(0,depth):
#create a sphere named using the Name variable taken from the GUI and add the
current x and y values to achieve a suitable naming system in numerical order, radius 1 cmds.polySphere(n=Name+str(x)+str(y), r=1)
# use the setLevelMaterial procedure to assign a blue blinn material to the current
object and name the material after the name of the object setLevelMaterial(Name+str(x)+str(y),str(Name)+str(x)+str(y)+'material', 'blinn', (0,125.00,255.0))
#translate the current object by value x in the x axis and y in the z axis to form grid cmds.xform(Name+str(x)+str(y), t=(x,0,y))
#use the moveparticle procedure to add appropriate key frames to the object moveparticle(speed,Name+str(x)+str(y),(x+y))