esuna114 |
06-10-2010 09:12 AM |
[New here] Cave joy navigation
Hello everybody,
I'm very new to Vizard, so maybe my questions will be stupid.
Right now i've got a problem with joystick navigation in my cave. I've tried to make it from examples. (We have no tracking devices for now)
Here is the cave file:
Code:
# The same script must be run on all machines in the cluster
import viz
import vizcave
import viztracker
# Activate full screen on all nodes with quad buffering
# Disable the mouse cursor visibility on all machines except the master
viz.cluster.setMask(viz.ALLCLIENTS & ~viz.MASTER)
viz.setOption('viz.fullscreen',1)
viz.setOption('viz.stereo',viz.QUAD_BUFFER)
viz.mouse.setVisible(viz.OFF)
viz.cluster.setMask(viz.ALLCLIENTS)
# Declare constants defining the CAVE dimensions
W1 = 3.048 # wideness (X)
H1 = 2.286 # height (Y)
D1 = 0.56 # deepnees (Z)
C0 = -2,2.25,2 # Front Wall: C0,C1,C2,C3
C1 = 2,2.25,2 # Roof Wall: C4,C5,C0,C1
C2 = -2,0,2
C3 = 2,0,2
C4 = -2,3.9736,0.5537
C5 = 2,3.9736,0.5537
#Create front wall
FrontWall = vizcave.Wall( upperLeft=C0,
upperRight=C1,
lowerLeft=C2,
lowerRight=C3,
name='Front Wall' )
#Create left wall
RoofWall = vizcave.Wall( upperLeft=C4,
upperRight=C5,
lowerLeft=C0,
lowerRight=C1,
name='Roof Wall' )
#Initialize graphics window
viz.go()
#Create cave object
LITE = vizcave.Cave()
#Add each wall, make sure that they are ordered in the cluster software correctly to match this ordering
LITE.addWall(FrontWall, mask=viz.CLIENT2)
LITE.addWall(RoofWall, mask=viz.CLIENT1)
import joyLITE
#Create tracker object using the keyboard (WASD keys control the viewpoint, the user's eye location)
#Make the starting location for the user's eye the exact center of the CAVE
viewtracker = viztracker.KeyboardPos()
viewtracker.setPosition (0,1.7,0)
#Pass the viewpoint tracker into the cave object so it can be automatically updated
LITE.setTracker(pos=viewtracker)
#Create CaveView object for manipulating the entire cave environment
#The caveorigin is a node that can be adjusted to move the entire cave around the virtual environment
caveorigin = vizcave.CaveView(viewtracker)
#Create another tracker using the keyboard and mouse (arrow keys adjust position, mouse changes orientation)
#origintracker = viztracker.KeyboardMouse6DOF()
#originlink = viz.link (origintracker, caveorigin)
#Set the MainView in a good position
vpos= caveorigin.getPosition()
viz.MainView.setPosition(vpos,viz.BODY_ORI)
vrot= caveorigin.getEuler()
viz.MainView.setEuler(vrot,viz.BODY_ORI)
#viz.MainView.setEuler(-90,0,0,viz.BODY_EULER)
#FOR LINKS: FIRST: DESTINATION, SECOND:SOURCE
originlink = viz.link ( caveorigin,viz.MainView)
#caveorigin.parent(viz.MainView)
#Link the keyboard/mouse so that it moves the cave and user around the virtual environment
#originlink = viz.link (origintracker, caveorigin)
#Add gallery environment model
gallery = viz.add('gallery.ive')
And here is my joy navigation device ( joyLITE )
Code:
import vizact
import viz
#Import the vizjoy module and add one joystick.
import vizjoy
joy = vizjoy.add()
def update_joystick():
node3d = viz.MainView
#Get the joystick position
x,y,z = joy.getPosition()
#Get the twist of the joystick
twist = joy.getTwist()
slider = joy.getSlider()
state = joy.getButtonState()
#Move the viewpoint forward/
#backward based on y-axis value
#Make sure value is above a certain
#threshold.
if abs(x) > 0.2:
node3d.move(0,0,x*0.01,viz.BODY_ORI)
#Move the viewpoint left/right based
#on x-axis value. Make sure value is
#above a certain threshold
if abs(y) > 0.2:
node3d.move(y*0.01,0,0,viz.BODY_ORI)
#Turn the viewpoint left/right based
#on twist value. Make sure value is
#above a certain threshold.
if abs(slider) > 0.2:
node3d.rotate(0,1,0,slider,viz.BODY_ORI,viz.ABS_LOCAL)
if abs(twist) > 0.2:
node3d.rotate(1,0,0,twist,viz.BODY_ORI,viz.ABS_LOCAL)
#Up/down with buttons
if state & vizjoy.BUTTON6:
node3d.move(0,0.01,0,viz.BODY_ORI)
if state & vizjoy.BUTTON8:
node3d.move(0,-0.01,0,viz.BODY_ORI)
#UpdateJoystick every frame
vizact.ontimer(0,update_joystick)
The rotations are very weird, and the view won't translate at all, why so?
I tried my joystick navigation file with another non-cave demo and it worked well.
Thank you by advance.
|