#3
|
|||
|
|||
for this code, view is just the vizard mainview:
view = viz.MainView here is a stripped down version of the code. there are a few models at the top which can be replaced with a generic ground. basically, there is a ground with a pit in it, and we want people to have the view of falling into the pit. i'd also like to have them pop back up when they get out of the range of the pit. it works fine on keyboard control but not when using the tracker: import viz import vizact import time import math import random import winsound ground = viz.add('Models/ground_2m.ive') pit = viz.add('Models/ground_pit_new.ive') #Select this for single-monitor desktop use... #viz.go(viz.FULLSCREEN) #OR select these for HMD/dual-monitor use: viz.go(viz.STEREO | viz.FULLSCREEN) light1 = viz.addLight() #Add an overhead light light1.setEuler(0,90,0) ## Prompt for the participant's identification number - generally keep this uncommented! ## keyControl = viz.input('Using Tracker? 1 = Yes, 2 = No') #subject = viz.input('What is the participant number?') if keyControl == 1: eyeohd = viz.input('What is the participants IOD?') #HMD field of view: (vert. FOV, aspect ratio H:V) #viz.fov(53,1.1887) #Kaiser SR80 specs viz.fov(43,1.395) #Cybermind specs ##Rename the main view ## view = viz.MainView #Link viewpoint with tracker, initialize boresite if keyControl == 1: #If you're using the tracker headTrack = viz.addSensor('intersense')#Ignore documentation stating you need "intersense.dls" - this is correct linkedTracker = viz.link(headTrack, view) #Link the sensor to the view. linkedTracker.preTrans([0,-.15,.14]) #Boresite function - translates the viewpoint from the tracker position to eyepoint position # viz.link(headTrack, view) #Link the sensor to the view. viz.eyeheight(0.0) view.translate(0,-.19,.14) #Boresite function - translates the viewpoint from the tracker position to eyepoint position viz.ipd(eyeohd/100.0) ##################################### #Initialize parameters for keyboard control MOVE_SPEED = 1.3 #m/s TURN_SPEED = 60 #deg/s #NOTE: Default eye height for keyboard control is 6', doesn't affect tracked viewpoint viz.phys.enable() # Enable physics viz.MainView.gravity (0) #This turns mouse control of view and mouse pointer off - very disconcerting for subjects! # Generally keep both viz.OFF, unless you have a specific need. viz.mouse(viz.OFF) viz.cursor(viz.OFF) Risen = True def masterLoop(num): global Risen fallAction = vizact.fall(-28.18) riseAction = vizact.fall(1.82) if view.getPosition(mode=viz.ABS_GLOBAL)[0] > -1 and view.getPosition(mode=viz.ABS_GLOBAL)[0] < 1: if view.getPosition(mode=viz.ABS_GLOBAL)[2] > 5.375: view.add(fallAction) Risen = False elif view.getPosition(mode=viz.ABS_GLOBAL)[2] < 4.625 and view.getPosition(mode=viz.ABS_GLOBAL)[2] > -1.625: view.add(fallAction) Risen = False elif view.getPosition(mode=viz.ABS_GLOBAL)[2] < -2.375: view.add(fallAction) Risen = False else: view.add(riseAction) Risen = False print 'back up' elif (view.getPosition(mode=viz.ABS_GLOBAL)[0] < -1 or view.getPosition(mode=viz.ABS_GLOBAL)[0] > 1) and Risen == False: view.add(riseAction) Risen = True print 'normal view' ###### KEYBOARD CONTROL MODULE - DON'T TOUCH ###### if keyControl == 2: #If you're using the keyboard; defined at top if viz.iskeydown(viz.KEY_UP): #If the up key is depressed view.move(0,0,MOVE_SPEED*viz.elapsed(),viz.BODY_OR I) # Move view to z coordinate specified by speed*elapsed time elif viz.iskeydown(viz.KEY_DOWN): #And so on and so forth view.move(0,0,-MOVE_SPEED*viz.elapsed(),viz.BODY_ORI) if viz.iskeydown(viz.KEY_RIGHT): view.rotate(0,1,0,TURN_SPEED*viz.elapsed(),viz.BOD Y_ORI,viz.RELATIVE_WORLD) elif viz.iskeydown(viz.KEY_LEFT): view.rotate(0,1,0,-TURN_SPEED*viz.elapsed(),viz.BODY_ORI,viz.RELATIVE _WORLD) ############################################# viz.callback(viz.TIMER_EVENT,masterLoop) #This starts the timer. First value (0) is a timer identifier, second (1/60) is the refresh rate, third (viz.FOREVER) is how long it lasts viz.starttimer(0,1/60.0,viz.FOREVER) |
|
|