Thread: vizact.fall
View Single Post
  #3  
Old 02-27-2008, 07:12 PM
erchrastil erchrastil is offline
Member
 
Join Date: Feb 2008
Posts: 17
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)
Reply With Quote