![]() |
|
#1
|
|||
|
|||
[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') 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) I tried my joystick navigation file with another non-cave demo and it worked well. Thank you by advance. |
#2
|
|||
|
|||
Nobody could give me a hint?
Thanks. |
#3
|
|||
|
|||
If you are using the keyboard to update the projections and the joystick to drive the CAVE around you can do something like this.
Code:
#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 (W/2.0,H/2.0,D/2.0) #Pass the viewpoint tracker into the cave object so it can be automatically updated cave.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) #update caveorigin with joystick MOVE_SPEED = 5 # meters/sec def joyMove(): #Use y position of joystick to drive CAVE forward forwardMovement = viz.elapsed() * MOVE_SPEED * -joyPOS[1] caveorigin.setPosition([0,0,forwardMovement],viz.REL_LOCAL) #Use x position of joystick to drive CAVE side to side sideMovement = viz.elapsed() * MOVE_SPEED * joyPOS[0] caveorigin.setPosition([sideMovement,0,0],viz.REL_LOCAL) vizact.ontimer(0, joyMove) Code:
viz.MainView.setPosition() |
![]() |
|
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
Mouselook & Keyboard Navigation | EnvisMJ | Vizard | 9 | 06-22-2010 04:52 PM |
Flipped floor in a CAVE | shivanangel | Vizard | 1 | 03-10-2010 10:12 AM |
CAVE, navigation, tracked wand, coordinate systems | JimC | Vizard | 6 | 10-09-2009 12:43 PM |
right-hand to left-hand coordinate System for a cave setup | Andy | Vizard | 1 | 09-16-2009 10:17 AM |
navigation in cave environment | Andy | Vizard | 4 | 03-28-2008 01:32 AM |