WorldViz User Forum  

Go Back   WorldViz User Forum > Vizard

Reply
 
Thread Tools Rate Thread Display Modes
  #1  
Old 04-27-2016, 12:15 PM
jelly jelly is offline
Member
 
Join Date: Feb 2016
Posts: 38
problem with yield statement and animation path

Hello!

I have an animation that goes through a maze in a loop (4 times).

I also have a yield statement that waits for an arrow key (see code below in red) but whenever I have it inside the function, it offsets everything, the animation seems to play twice before waiting for the arrow key and then it offsets all coordinates.

Why does that happen?



Code:
import viz															
import viztask													

viz.clearcolor(viz.BLACK)

viz.go()

#Set the start position:
startPos = [-6.4,1.4,-8]

### Add all the resources. ############### 

maze1 = viz.add('Objects/Maze_1.dae')
maze1.visible(viz.OFF)

view = viz.MainView 

view.eyeheight(1.4)
view.setPosition(startPos)

view.collision(viz.ON)
viz.collisionbuffer(.8)

##Animation path
pathMaze1 = viz.addAnimationPath()

#Add control points to the path, along with their time stamp.
pathMaze1.addControlPoint(2, pos=startPos,euler=(0,0,0),scale=(2,2,2))
pathMaze1.addControlPoint(4, pos=startPos,euler=(90,0,0),scale=(2,2,2))
pathMaze1.addControlPoint(6, pos=(0,1.4,-8),euler=(0,0,0),scale=(2,2,2))
pathMaze1.addControlPoint(8, pos=(0,1.4,5),euler=(0,0,0),scale=(2,2,2))

#Duation of animation
pathMaze1Duration = pathMaze1.getDuration()

def animation():

	link = viz.link(pathMaze1,view)
	pathMaze1.play()
	yield viztask.waitTime(pathMaze1Duration)
	pathMaze1.reset()

def maze1trial():
	print 'now'
	view.setPosition(startPos)
	maze1.visible(viz.ON)
	yield animation()
	#yield viztask.waitKeyDown([viz.KEY_LEFT,viz.KEY_RIGHT])
	maze1.visible(viz.OFF)

def masterFunction():	
	for x in range(4):
		yield maze1trial()
viztask.schedule(masterFunction())
Reply With Quote
  #2  
Old 04-29-2016, 03:19 AM
Jeff Jeff is offline
WorldViz Team Member
 
Join Date: Aug 2008
Posts: 2,471
In order to run the code, I changed the model to the piazza. However, I didn't notice a coordinate offset from one trial to another. If you have viewpoint collision enabled and depending on the stepsize, the viewpoint can get bumped up on collisions with the scene. If you want to wait until the path is finished playing before doing something else, wait for a path end event:

Code:
import viz															
import viztask													

viz.go()

startPos = [-6.4,1.4,-8]
view = viz.MainView 
view.eyeheight(1.4)

maze1 = viz.add('piazza.osgb')

pathMaze1 = viz.addAnimationPath()
pathMaze1.addControlPoint(2, pos=startPos,euler=(0,0,0),scale=(2,2,2))
pathMaze1.addControlPoint(4, pos=startPos,euler=(90,0,0),scale=(2,2,2))
pathMaze1.addControlPoint(6, pos=(0,1.4,-8),euler=(0,0,0),scale=(2,2,2))
pathMaze1.addControlPoint(8, pos=(0,1.4,5),euler=(0,0,0),scale=(2,2,2))
pathMaze1.addEventAtEnd('maze_end')

link = viz.link(pathMaze1,view)

def trials():
	
	for x in range(4):
		
		print 'trial',x
		pathMaze1.play()
		yield viztask.waitPathEvent(pathMaze1, 'maze_end')
		yield viztask.waitKeyDown([viz.KEY_LEFT,viz.KEY_RIGHT])
		pathMaze1.reset()
	
viztask.schedule( trials() )
Reply With Quote
  #3  
Old 05-05-2016, 10:13 AM
jelly jelly is offline
Member
 
Join Date: Feb 2016
Posts: 38
Thank you very much! Indeed, this version seems fine. I really need to troubleshoot my scripts usign that maze more in detail. Not sure why I get these resetting problems that I have been writing about. For now I solved the issue by not using animation paths but by using the goTo.
Reply With Quote
Reply

Tags
animation path


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
animation path problem - coordinates not resetting jelly Vizard 7 04-26-2016 11:45 AM


All times are GMT -7. The time now is 05:08 AM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Copyright 2002-2023 WorldViz LLC