View Full Version : Rotate Viewpoint 360 Around Point/Object
hotshotiguana
01-24-2012, 12:39 PM
I am looking at a vizshape.addBox in my Vizard environment and would like to smoothly rotate the viewpoint 360 degrees around this point to show the user all sides. I am not that familiar with 3D rotations, but I believe I only want to change the yaw for this to happen correctly. I have tried all sorts of different spin, goto, and setEuler combinations but nothing works as I would like.
I can get the position of the object with the getPosition function, so I am hoping to use a combination of this position and another function to solve this problem.
Any assistance would be greatly appreciated. Also, please feel free to ask for more information.
Chris
hotshotiguana
01-24-2012, 04:52 PM
I found this example on the worldviz website:
http://docs.worldviz.com/vizard/examples/viewAnimate.htm
It is very similar to what I am looking for, but is there a way to make the transition between pressing 1-4 smooth, i.e. the center of the pivot object is the axis and the user is making a smooth 360 degree rotation around the center leaving a small radius of space between the camera and the object as the rotation happens?
Also, I keep running into quaternion rotation when I google this topic, but I do not see any examples of setQuad on the Viz website. Is there a good reference to learning what this function can do?
Thanks,
Chris
farshizzo
01-25-2012, 11:56 AM
Here is an example that shows one way of accomplishing this. I created a simple function LookAtBox that places the viewpoint at a specific distance and yaw from the box. I then use a task function to continually call the function for a 360 degree spin.import viz
import vizact
import vizshape
import viztask
viz.go()
box = vizshape.addBox(color=viz.GREEN,pos=(0,2,0))
vizshape.addGrid(color=[0.3]*3)
def LookAtBox(yaw,distance):
pos = box.getPosition()
viz.MainView.setPosition(pos)
viz.MainView.setEuler([yaw,0,0])
viz.MainView.move([0,0,-distance])
def SpinAroundBoxTask():
# Create mix parameter for yaw (0-360) for 5 seconds
yawAnimate = vizact.mix(0,360,time=5.0)
# Animate viewpoint spinning around box at 8 meters away
yield viztask.waitCall( LookAtBox , yawAnimate, 8.0 )
print 'Finished spinning'
viztask.schedule( SpinAroundBoxTask() )
hotshotiguana
01-25-2012, 05:36 PM
Works perfectly! Thanks again for the help.
vBulletin® v3.8.7, Copyright ©2000-2025, vBulletin Solutions, Inc.