WorldViz User Forum

WorldViz User Forum (https://forum.worldviz.com/index.php)
-   Vizard (https://forum.worldviz.com/forumdisplay.php?f=17)
-   -   Translate view from sensor position to lens position? (https://forum.worldviz.com/showthread.php?t=3583)

Kaminski 03-09-2011 09:30 AM

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).

farshizzo 03-09-2011 09:40 AM

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])


Kaminski 03-09-2011 10:08 AM

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())


Kaminski 03-09-2011 10:32 AM

My mistake, I didn't realize preTrans was applied before rotation. Thanks for the help.

farshizzo 03-09-2011 10:36 AM

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())



All times are GMT -7. The time now is 10:26 AM.

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