|  | 
| 
			 
			#1  
			
			
			
			
			
		 | |||
| 
 | |||
| 
				
				stop and starting a .wrl file
			 
			
			Hello, Im trying to make a animation happen once if. Im planning on using it in a def. Do i initate the .wrl file before the def? How can I make the .wrl disapear after the animation runs once? | 
| 
			 
			#2  
			
			
			
			
			
		 | |||
| 
 | |||
| 
			
			Use the viz.ACTION_END_EVENT to notify you that the action has completed on your object and then within your callback function use <node3D>.remove() to permanently remove the object from the scene.  Code: import viz
viz.go()
spin = vizact.spin(0,1,0,90,5)
ball = viz.add('ball.wrl',pos=(0,1.8,2))
ball.addAction(spin)
def onActionEnd(e):
	if e.object is ball and e.action is spin:
		ball.remove()
		print 'Ball is removed'
viz.callback(viz.ACTION_END_EVENT,onActionEnd) | 
| 
			 
			#3  
			
			
			
			
			
		 | |||
| 
 | |||
| 
			
			Well I dont want a spinning action to happen.  The animation(the .wrl file) moves.  This is an example.  We have the sun. The sun rise from one area and sets in another area.  On a certain cue I want to trigger the animation(the sun).  Let it arc through the air for about 5 seconds and when its at its set point I want it to disappear.  And then if that certain cue happens again I want to repeat that process.  Ive been going through the index trying to find some code that could fit this but Im not having the best of luck. Thanks | 
| 
			 
			#4  
			
			
			
			
			
		 | |||
| 
 | |||
| 
			
			Not sure if Im understanding how these def really works.  Im trying to calculate speed.  When that speed is between 3 and 5 I want it to kick in the animation.  This animation is a looping animation.  Kind of like the above post from yesterday about the sun.  Anyways, when I run this it kicks off the animation when it shouldn't because the speed should be 0.  Then it only runs once.  I was thinking that since CalculateSpeed always stays runnning that it would keep checking the speed between 3 and 5.  If that was true it would kick it into the showFlower() and run once.  SO I need help, any suggestions would be much appreciated. One more thing. I want it to create a new image everytime its speed is between 3 and 5 and then removes that image after 3.5 seconds. Thanks Code: def CalculateSpeed(obj):
	
	#Get current and last position
	current_pos = obj.getPosition()
	last_pos = getattr(obj, 'last_pos', None)
	if last_pos is None:
		#This is first call, so save position and set speed to 0
		obj.last_pos = current_pos
		obj.speed = 0.0
		
	else:
		#Compute speed using last position
		obj.speed = vizmat.Distance(current_pos,last_pos) / viz.elapsed()
		obj.last_pos = current_pos
		if obj.speed > 3 and obj.speed < 5:
			showFlower() 
vizact.ontimer(.1,CalculateSpeed,ppt1)
def showFlower():
	flower = viz.add('flower_02.wrl')  #creates new flower
	flower.scale(.2,.2,.2)
	yield viztask.waitTime( 3.5 )  #waits 3.5 seconds
	flower.remove()  #then removes flower
viztask.schedule( showFlower() ) | 
| 
			 
			#5  
			
			
			
			
			
		 | |||
| 
 | |||
| 
			
			Nevermind I got it... I just moved the def up into the if statement and now it works YEAH!
		 | 
|  | 
| 
 | 
 |