WorldViz User Forum  

Go Back   WorldViz User Forum > Vizard

Reply
 
Thread Tools Rate Thread Display Modes
  #1  
Old 03-09-2011, 09:30 AM
Kaminski Kaminski is offline
Member
 
Join Date: Nov 2010
Posts: 36
Translate view from sensor position to lens position?

Has anybody made a function to translate the viewpoint from the sensor position to the lens position on their hmd? I'm having a little trouble figuring out which method to use (preTrans, postTrans, or setOffset).
Reply With Quote
  #2  
Old 03-09-2011, 09:40 AM
farshizzo farshizzo is offline
WorldViz Team Member
 
Join Date: Mar 2003
Posts: 2,849
If your sensor contains both position and rotation data, then you need to apply a preTrans operator on the link to apply the offset between the physical sensor and actual eye position.

Example:
Code:
view_link = viz.link(sensor,viz.MainView)

# Physical sensor is 0.05 m above and 0.02 m behind actual eye position
view_link.preTrans([0.0,-0.05,0.02])
Reply With Quote
  #3  
Old 03-09-2011, 10:08 AM
Kaminski Kaminski is offline
Member
 
Join Date: Nov 2010
Posts: 36
Yes sensor has both position and orientation (IS-900).

I am trying to run this on update so that I can use the euler information to determine which directions to apply the translation. When I use preTrans the view flies off in one direction.

I have tried subtracting the translation values from the preceding preTrans call, but that results in an accumulative translation error over time. I have also tried reseting each time before applying the preTrans. Both are commented out below. Thanks.

Code:
import viz
import viztask
import math

viz.go(viz.HMD | viz.STEREO)

isense = viz.add('intersense.dle')		
track = isense.addTracker()
main = viz.link(track,viz.MainView)

def mainLoop():
	yield viztask.waitKeyDown(' ')
	#Do Stuff

xOffOld=0.0
zOffOld=0.0
hmdLength = .29

def setViewTrackCorrection():
	global xOffOld,zOffOld
	#main.reset(viz.HEAD_POS)
	eul = main.getEuler()
	xOff = hmdLength*math.sin(math.radians(eul[0]))
	zOff = hmdLength*math.cos(math.radians(eul[0]))
	#main.postTrans([-xOffOld+xOff,0,-zOffOld+zOff])
	main.preTrans([xOff,0,zOff])
	xOffOld = xOff
	zOffOld = zOff

vizact.onupdate(1,setViewTrackCorrection)
viztask.schedule(mainLoop())

Last edited by Kaminski; 03-09-2011 at 10:12 AM. Reason: forgot import
Reply With Quote
  #4  
Old 03-09-2011, 10:32 AM
Kaminski Kaminski is offline
Member
 
Join Date: Nov 2010
Posts: 36
My mistake, I didn't realize preTrans was applied before rotation. Thanks for the help.
Reply With Quote
  #5  
Old 03-09-2011, 10:36 AM
farshizzo farshizzo is offline
WorldViz Team Member
 
Join Date: Mar 2003
Posts: 2,849
You should not call preTrans on every update. You only need to call it once when you initially setup the link.
Code:
import viz
import viztask

viz.go(viz.HMD | viz.STEREO)

isense = viz.add('intersense.dle')		
track = isense.addTracker()
main = viz.link(track,viz.MainView)
main.preTrans([xoff,yoff,zoff])

def mainLoop():
	yield viztask.waitKeyDown(' ')
	#Do Stuff

viztask.schedule(mainLoop())
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
display the position and euler coords of the main view Josh Vizard 1 03-22-2010 10:48 AM
View nlfrnassimi Vizard 0 03-17-2009 02:01 AM
View nlfrnassimi Vizard 4 03-12-2009 05:25 AM
default start position erchrastil Vizard 2 06-23-2008 08:15 AM
problem with stereo mode shivanangel Vizard 3 10-17-2006 09:58 AM


All times are GMT -7. The time now is 04:45 AM.


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