![]() |
|
#1
|
|||
|
|||
|
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).
|
|
#2
|
|||
|
|||
|
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]) |
|
#3
|
|||
|
|||
|
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 |
|
#4
|
|||
|
|||
|
My mistake, I didn't realize preTrans was applied before rotation. Thanks for the help.
|
|
#5
|
|||
|
|||
|
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())
|
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|
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 |