#1
|
|||
|
|||
3dcompass
Hi im trying to make a 3d compass like a flat disc that sits on the ground and rotates in place.
so far i am doing this: Code:
compass = viz.addChild('arrow.osgb') compass.color( 0.2,0.8,0.8 ) ########################################### # get the main viewpoint and link a compass to it view = viz.MainView #link compass pos to viewpoint compasslink = viz.link(view, compass) pitch, roll, yaw = view.getEuler() compasslink.setEuler([0,0,-yaw]) #offset compass origion before linking to view compasslink.preTrans([0, -0.5, 0]) so i figure that i can set the -pitch to rotate it opposite. Code:
compasslink.setEuler([-pitch,0,-yaw]) Last edited by brunomartelli; 07-22-2013 at 12:12 PM. Reason: clarity |
#2
|
|||
|
|||
If you want the compass to rotate with the viewpoint you can create a link and set the mask to orientation only. If you want the compass yaw to be the opposite of the viewpoint use the link.swapEuler command:
Code:
import viz import vizshape viz.go() viz.add('dojo.osgb') compass = vizshape.addArrow() compass.setPosition([0,0.5,0]) compassLink = viz.link(viz.MainView,compass,mask=viz.LINK_ORI) #Negate yaw value #compassLink.swapEuler([-1,2,3]) subWindow = viz.addWindow(pos=[0.5,1]) subWindow.setSize(0.5,0.5) view = viz.addView() view.move([0,-1,-4]) subWindow.setView(view) |
Tags |
compass, euler, view rotate |
|
|