![]()  | 
	
| 
		 
			 
			#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 01: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 | 
		
  | 
	
		
  |