# # Make bouncing PyMOL CGO text. # Cameron Mura; Sept. 2004 # from pymol import cmd from pymol.cgo import * from pymol.movie import * from pymol.moving import * from pymol.vfont import plain cgo1 = [] cgo2 = [] cgo3 = [] # General settings: cmd.viewport(400,100) cmd.bg_color("white") cmd.set("cache_frames",0) stateString = frameString = "" ''' uncomment this part if you want to make wireframe text: # make wire text: cmd.set("cgo_line_radius",0.03) wirePos = [0.0, 0.0, 0.0] wireAxes = [[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0] ] wire_text(cgo,plain,wirePos,'Hello World',wireAxes) cmd.load_cgo(cgo,'txt-wire') cmd.color('red','txt-wire') ''' def revString(s): # l = list(s[2:len(s)-1]) l = list(s[:]) l.reverse() return "".join(l) #DEBUG: #print revString("Crap") #DEBUG: #print "length = %d"%len(range(1,6)) # First, make cylindrical tube text bounce around most frames: for state in range(1,6): indexScale = (state-1)/float(len(range(1,6))) textPosit = [ 0.0, 0.0, 0.0 + (state/5.0) ] # z-direction bounce # linepos = [ 0.5, -2.2, 0.0 + (state/5.0) ] textColor = [ 0.0 + indexScale, 0.5 - indexScale, 1.0 - indexScale ] textWidth = 0.25 * (state / 5.0) textAxes = [ [2.0, 0.0, 0.0 + indexScale], [0.0, 2.0, 0.0], [0.0, 0.0, 2.0] ] print "---\nState # %d:"%state print " textPosit:\t%s\n textColor:\t%s\n textWidth:\t%s\n"%(textPosit, textColor, textWidth) cyl_text(cgo1,plain,textPosit,'Cams PyMOL Page',textWidth,textColor,axes=textAxes) # cyl_text(cgo,plain,linepos,'Wiki',textWidth,textColor,axes=textAxes) cmd.load_cgo(cgo1,'cgo1txt',state) stateString = "%s %d"%(stateString, state) frameString = (stateString+' '+revString(stateString)) * 5 cmd.mset("%s"%(frameString)) print "\n############" print "Final Phase 1 stateString =\n%s"%(stateString) print "Final Phase 1 frameString =\n%s"%(frameString) print "############\n" #DEBUG miscellaneous: #cmd.mset("1 -%d -1"%len(range(1,6))) #someFrameString = "%d x2 %s"%(i, someFrameString) #numframes = cmd.count_frames() for interval in range(1,6): start_frame = interval*10 - 9 end_frame = interval*10 rock_angle = 30 rock_phase = 0 if interval % 3 == 0: rock_axis = 'x' # cmd.translate([0.5,0.0,0.0],"all",-1,1,'txt') elif interval % 3 == 1: rock_axis = 'y' # cmd.translate([0.0,0.5,0.0],"all",-1,1,'txt') elif interval % 3 == 2: rock_axis = 'z' # cmd.translate([0.0,0.0,0.5],"all",-1,1,'txt') util.mrock(start_frame, end_frame, rock_angle, rock_phase, 1, rock_axis) #cmd.center() #cmd.zoom("all",1.0) #cmd.mplay() cmd.mpng("frames/logo_phase1_") cmd.mclear() cmd.delete('all') # final z-advance: print "Entering the 'z-advance' stage:\n" frameString = "" for z_state in range(1,11): z_scale = (z_state-1)/float(len(range(1,11))) z_pos = [ 0.0, 0.0, 0.0 + float(z_state) ] z_color = [1.0 - z_scale, 0.5 - z_scale, 0.0 + z_scale] z_axes = [ [2.0, 0.0, 0.0], [0.0, 2.0, 0.0], [0.0, 0.0, 2.0] ] cyl_text(cgo2,plain,z_pos,'Cams PyMOL Page',0.20,z_color,axes=z_axes) cmd.load_cgo(cgo2,'cgo2txt',(z_state)) print "---\nState # %d:"%z_state print " textPosit:\t%s\n textColor:\t%s\n textWidth:\t%s\n"%(z_pos, z_color, '0.20') frameString = "%s %d"%(frameString, z_state) cmd.mset("%s"%(frameString)) print "\n############" print "Final Phase 2 stateString =\n%s"%(stateString) print "Final Phase 2 frameString =\n%s"%(frameString) print "############\n" ## cmd.center() cmd.zoom("all",1.0) cmd.mpng("frames/logo_phase2_") cmd.mclear() cmd.delete('all') ## # final frame: ## z_axes = [ [2.0, 0.0, 0.0], ## [0.0, 2.0, 0.0], ## [0.0, 0.0, 2.0] ] ## z_pos = [ 0.0, 0.0, 10.0 ] ## #cmd.zoom('all',0.1) ## cyl_text(cgo3,plain,z_pos,'Cams PyMOL Page',0.20,[0,0,1.0],axes=z_axes) ## cmd.load_cgo(cgo3,'cgo3txt',1) ## cmd.center ## cmd.move('z',28.0) ## cmd.ray(400,100) ## cmd.png("frames/finalframe.png") # final frame: z_axes = [ [4.0, 0.0, 0.0], [0.0, 2.0, 0.0], [0.0, 0.0, 2.0] ] z_pos = [ 0.0, 0.0, 10.0 ] #cmd.zoom('all',0.1) cyl_text(cgo3,plain,z_pos,'Cams PyMOL Page',0.20,[0.1,0.1,1.0],axes=z_axes) cmd.load_cgo(cgo3,'cgo4txt',1) cmd.center cmd.move('z',28.0) cmd.ray(400,100) cmd.png("frames/finalframe.png")