#1
|
|||
|
|||
Varying rotation speed with spinTo
Hello,
I am using the spinTo command in a for loop to spin to different view angles during an experiment. I want the rotation speed to be constant, independent from the actual and desired view angle. However, the spinTo command gives me different rotation speeds when I use it. Sometimes its faster, and sometimes its slower, even though I specify a constant speed angle. I have attached a working minimum example. Here, the speed will vary, seemingly at random. Code:
import viztask import viz import vizact angles = [-120,150,100,150,-170,50,90,150] viz.addChild('piazza.osgb') view=viz.MainView def run(): for k in angles: print str(k) yield viztask.waitKeyDown(' ') yield viztask.addAction(view, vizact.spinTo(euler=[k,0,0],speed=80,interpolate = vizact.linear)) viztask.schedule(run()) viz.go() |
#2
|
|||
|
|||
This appears to be a bug with how the rotational differences are computed. It doesn't seem to be using the shortest distance in all cases. This will be fixed in the next release. In the meantime you can add the following code to the beginning of your script to get the correct behavior:
Code:
import math import vizmat def QuatDiff(q1,q2): w = abs((vizmat.Quat(q1) * vizmat.Quat(q2).inverse()).w) return viz.degrees(math.acos(w) * 2.0) vizmat.QuatDiff = QuatDiff |
#3
|
|||
|
|||
Thank you for your quick reply and the hot-fix!
|
Thread Tools | |
Display Modes | Rate This Thread |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Custom Joystick Rotation | mhead10 | Vizard | 9 | 11-26-2012 12:06 PM |
random speed and associated coding | Saz | Vizard | 1 | 05-20-2010 04:03 AM |
set bone rotation - cal3d | munteanu24d | Vizard | 0 | 03-23-2010 04:25 AM |
Unable to perform 360 rotation using vizact.spinto | vijaykiran | Vizard | 2 | 09-29-2009 08:39 AM |
Calculating Speed with sensor | durf | Vizard | 1 | 03-13-2009 10:25 AM |