#1
|
|||
|
|||
Trouble with listener updating position?
We have a script that toggles an object to play a sound whenever the viewpoint orientation is within a certain threshold (so when the person is looking at the object). It works very well until the viewpoint translates--If the person moves, then turns in place and looks at an object, the sound will trigger, but it will be spatialized as though the person was still in their original position. The stranger part is that if they move at all from their current position, the sound jumps to the correct location.
We are using keyboard commands to emulate orientation and position tracking. I have code snippets that cover the basics of this issue, but I am not sure if I included everything pertinent. Code:
(in a separate module, called onupdate) if viz.iskeydown(viz.KEY_LEFT): VIEW.rotate(0,1,0,-TURN_SPEED*viz.elapsed(),viz.HEAD_ORI,viz.REL_PARENT) elif viz.iskeydown(viz.KEY_RIGHT): VIEW.rotate(0,1,0,TURN_SPEED*viz.elapsed(),viz.HEAD_ORI,viz.REL_PARENT) if viz.iskeydown('w'): VIEW.translate(0,0,MOVE_SPEED*viz.elapsed(),viz.REL_LOCAL) elif viz.iskeydown('s'): VIEW.translate(0,0,-MOVE_SPEED*viz.elapsed(),viz.REL_LOCAL) elif viz.iskeydown('a'): VIEW.translate(-MOVE_SPEED*viz.elapsed(),0,0,viz.REL_LOCAL) elif viz.iskeydown('d'): VIEW.translate(MOVE_SPEED*viz.elapsed(),0,0,viz.REL_LOCAL) (in the experimental module, called onupdate) def monitorOri(e): global objplay # the purpose of this function is to determine whether the viewpoint # is facing an object (within a certain threshold) # then have that object play its tone until the viewpoint moves outside # the threshold view_yaw = view.getEuler() view_pos = view.getPosition() for item in range(len(objects)): object_pos = objects[item].getPosition() target_angle = utilities.genTargetAngle(object_pos,view_pos) relative_angle = abs(vizmat.AngleDiff(target_angle,view_yaw[0])) if (relative_angle <= threshold_angle) and objplay[item] == False: toggleTone(item,viz.ON) objplay[item] = True elif (relative_angle > threshold_angle) and objplay[item] == True: toggleTone(item,viz.OFF) objplay[item] = False else: pass Any suggestions are appreciated, thanks.
__________________
Virtual Environments and Multimodal Interaction (VEMI) Lab This time, it should work... |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
updating positional data | Saz | Vizard | 8 | 01-12-2009 04:23 AM |
writing joystick position to a data file | Saz | Vizard | 3 | 12-17-2008 05:18 AM |
default start position | erchrastil | Vizard | 2 | 06-23-2008 08:15 AM |
position of html-file on screen | active_world | Vizard | 1 | 05-16-2008 07:24 PM |
Avatar always returns in initial position | pattie | Vizard | 2 | 08-31-2006 08:15 PM |