WorldViz User Forum  

Go Back   WorldViz User Forum > Vizard

Reply
 
Thread Tools Rating: Thread Rating: 5 votes, 5.00 average. Display Modes
  #1  
Old 10-13-2009, 01:27 PM
whj whj is offline
Member
 
Join Date: Apr 2008
Posts: 60
positions on animation path

Hi, I would like to create an environment in which a ball is going around the original point. My simple code just create an animation path of a circle for a ball and try to figure out the actual positions when the ball pass along the animation path. My question is why the printed positions are not on a circle like what we can see? And so why the distance between the ball and the original point are not the constant value 10? Thanks!


Code:
import viz
viz.go()

import math

viz.add('tut_ground.wrl')
ball = viz.add('ball.wrl')

viz.MainView.move([0,3,-20])

path = viz.addAnimationPath()
positions = [ [0,1,10], [10,1,0], [0,1,-10], [-10,1,0], [0,1,10] ]
for x in range(len(positions)):
	cp = viz.add(viz.CONTROL_POINT)
	cp.setPosition(positions[x])
	path.add(cp,x+1)

path.loop(viz.CIRCULAR)
viz.CUBIC_BEZIER
path.translatemode(viz.BEZIER)
path.computetangents()
path.setAutoRotate(viz.ON)

mylink = viz.link(path,ball)
path.play()

def mytimer(num):
	pc = ball.getPosition()
	print 'position: ', pc

	dist = math.sqrt( (pc[0]-0.0)*(pc[0]-0.0) + (pc[2]-0.0)*(pc[2]-0.0) )
	print 'distance: ', dist

	
viz.callback(viz.TIMER_EVENT, mytimer)
viz.starttimer(0,1/60.0,viz.FOREVER)
Reply With Quote
  #2  
Old 10-16-2009, 01:19 PM
farshizzo farshizzo is offline
WorldViz Team Member
 
Join Date: Mar 2003
Posts: 2,849
You won't be able to create a perfect circle using bezier paths. You are better off manually animating the object. Either way, the following modified version of your script will generate a path that is closer to a circle. It uses cubic bezier and you removes the duplicate control point at the end of the path:
Code:
import viz
import vizmat
import vizact
viz.go()

viz.add('tut_ground.wrl')
ball = viz.add('ball.wrl')

viz.MainView.move([0,3,-20])

path = viz.addAnimationPath()
positions = [ [0,1,10], [10,1,0], [0,1,-10], [-10,1,0] ]
for x,pos in enumerate(positions):
	cp = viz.addControlPoint()
	cp.setPosition(pos)
	path.add(cp,x+1)

path.loop(viz.CIRCULAR)
path.translatemode(viz.CUBIC_BEZIER)
path.computetangents()
path.setAutoRotate(viz.ON)

mylink = viz.link(path,ball)
path.play()

def PrintInfo():
	pc = ball.getPosition()
	print 'position: ', pc

	dist = vizmat.Distance(pc,[0,1,0])
	print 'distance: ', dist

vizact.ontimer(0,PrintInfo)
Reply With Quote
  #3  
Old 10-19-2009, 04:13 PM
whj whj is offline
Member
 
Join Date: Apr 2008
Posts: 60
I'll try that. Thank you.
Reply With Quote
  #4  
Old 10-27-2009, 02:21 PM
whj whj is offline
Member
 
Join Date: Apr 2008
Posts: 60
Hi,

If I happen to create another non-circle path using bezier paths, would the distance we can see/feel in VR is close to the actual distance that calculated by vizmat.Distance().

Thanks!



Quote:
Originally Posted by farshizzo View Post
You won't be able to create a perfect circle using bezier paths. You are better off manually animating the object. Either way, the following modified version of your script will generate a path that is closer to a circle. It uses cubic bezier and you removes the duplicate control point at the end of the path:
Code:
import viz
import vizmat
import vizact
viz.go()

viz.add('tut_ground.wrl')
ball = viz.add('ball.wrl')

viz.MainView.move([0,3,-20])

path = viz.addAnimationPath()
positions = [ [0,1,10], [10,1,0], [0,1,-10], [-10,1,0] ]
for x,pos in enumerate(positions):
	cp = viz.addControlPoint()
	cp.setPosition(pos)
	path.add(cp,x+1)

path.loop(viz.CIRCULAR)
path.translatemode(viz.CUBIC_BEZIER)
path.computetangents()
path.setAutoRotate(viz.ON)

mylink = viz.link(path,ball)
path.play()

def PrintInfo():
	pc = ball.getPosition()
	print 'position: ', pc

	dist = vizmat.Distance(pc,[0,1,0])
	print 'distance: ', dist

vizact.ontimer(0,PrintInfo)
Reply With Quote
Reply

Thread Tools
Display Modes Rate This Thread
Rate This Thread:

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
Start_position on animation path ptjt255 Vizard 1 08-24-2009 12:40 PM
Problems with interaction of vizact.turn and animation path Enlil Vizard 3 11-24-2008 05:23 PM
speed on animation path whj Vizard 8 11-17-2008 08:41 PM
Animation Path djdesmangles Vizard 2 06-11-2007 04:37 PM
Animation Path djdesmangles Vizard 0 06-06-2007 12:03 PM


All times are GMT -7. The time now is 10:36 PM.


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