Thread: vizact.fall
View Single Post
  #13  
Old 04-25-2008, 07:30 AM
erchrastil erchrastil is offline
Member
 
Join Date: Feb 2008
Posts: 17
i am run it again after updating to the latest edition to vizard, and now it does not give me any error messages at all. however, it is still not creating the visual fall when i hook it up to the HMD and tracker (is900), even though it works on keyboard mode. it is definitely detecting that it is in the right location because it prints "in pit" in the appropriate location. could it be that the viewpoint is bound to the physical location of the tracker and so it won't fall?

Code:
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')

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?')


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)
			print 'in pit'
			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)
			print 'pit 2'
			Risen = False

		elif view.getPosition(mode=viz.ABS_GLOBAL)[2] < -2.375:

			view.add(fallAction)
			print 'pit 3'
			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_ORI) # 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.BODY_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