def setAsMain(self): viz.logStatus('Setting Joyculus as main') val = mathlite.getNewRange(self.joy.getSlider(),1,-1,self.MIN_SPEED,self.MAX_SPEED) self.MOVE_SPEED = val vizact.onsensordown(self.joy,self.KEYS['reset'],self.reset) vizact.ontimer(0,self.updateView) viz.callback(getExtension().SLIDER_EVENT,self.onSliderChange)
def setupBimanualAsymmetricControl(): #Create proximity proximityManager global proximityManager proximityManager = vizproximity.Manager() #proximityManager.setDebug(viz.ON) #Add third appendage as proximity target global thirdAppendage targetThirdAppendage = vizproximity.Target(thirdAppendage) proximityManager.addTarget(targetThirdAppendage) #lhPPTLink = viz.link(pptextensionDK2.rhPPT, viz.NullLinkable) sensorNonDominantHand = None if pptextensionDK2.lhPPT is not None: lhPPTLink = viz.link(pptextensionDK2.lhPPT, viz.NullLinkable) sensorNonDominantHand = vizproximity.Sensor(vizproximity.Sphere( 0.4, center = pptextensionDK2.lhPPT.getPosition()), lhPPTLink) proximityManager.addSensor(sensorNonDominantHand) global thirdAppendageReadyForGrab, thirdAppendageGrabbed, grabLink thirdAppendageReadyForGrab = False thirdAppendageGrabbed = False grabLink = None #adding a wiimote to trigger grab action #Add wiimote extension wii = viz.add('wiimote.dle') #Connect to first available wiimote wiimote = wii.addWiimote() vizact.onsensordown(wiimote,wii.BUTTON_A,grabActionOnThirdAppendage,True) vizact.onsensorup(wiimote,wii.BUTTON_A,grabActionOnThirdAppendage,False) #things to highlight the third appendage when ready for selection for grab action # from tools import highlighter # global highlightingTool # highlightingTool = highlighter.Highlighter() # highlightingTool.setItems([thirdAppendage]) # highlightingTool.setHighlightMode(highlighter.MODE_BOX) # highlightingTool.highlight() # thirdAppendage.set #methods to trigger selection of the third appendage with the non-dominant hand if sensorNonDominantHand is not None: proximityManager.onEnter(sensorNonDominantHand, EnterProximity) proximityManager.onExit(sensorNonDominantHand, ExitProximity)
#Screen recording keydown functions vizact.onkeydown('p', viz.window.toggleRecording, 'test.avi') vizact.onkeydown('o', viz.window.stopRecording) ################################ Wii ################################################# #Wiimote extension wii = viz.add('wiimote.dle') wiimote = wii.addWiimote() wiimote.led = wii.LED_1 | wii.LED_4 #when program closes/Wiimote disconnects vizact.onexit(wiimote.remove) ##mask Wiimote 1 & 2 to turn on or off the light vizact.onsensordown(wiimote, wii.BUTTON_1, torchy.mylight.enable) vizact.onsensordown(wiimote, wii.BUTTON_2, torchy.mylight.disable) #mask Wiimote + & - to dim or brighten the light to a limit vizact.onsensordown(wiimote, wii.BUTTON_MINUS, torchy.changeBrightness, -3) vizact.onsensordown(wiimote, wii.BUTTON_PLUS, torchy.changeBrightness, 3) ############################### Mocap ################################################# from mocapInterfaceNew import mocapInterface phaseSpaceIP = '192.168.1.230' owlParamMarkerCount = 20 # Dir where textures and rb files are located phaseSpaceFilePath = 'Resources/' # Rb files in phaseSpaceFilePath
winsound.Beep(Freq,Dur) else: print 'BAD RESPONSE' self.falseAlarm() viz.window.setFullscreenMonitor(2) viz.go(viz.FULLSCREEN) counter = numberCount() import vizact wii1 = wiiObj() vizact.onsensordown(wii1.wiimote,wii.BUTTON_B,counter.targetDetected) ############################################################################################################################################################################### ############################################################################################################################################################################### ############################################################################################################################################################################### networkingOn = True; if networkingOn : netClient = viz.addNetwork('performLabVR2') else: counter.startPresentingNumbers() def onNetwork(packet): print 'Received network message: ' + packet.message
import vizact import PyWiiUse as wiiuse #<wii>.addWiimote(device=-1) #class wiimote(): # def __init__(self): # wiimote = wii.addWiimote() # vizact.onsensordown(wiimote,wii.BUTTON_A,wiimote.setRumble,True) # vizact.onsensorup(wiimote,wii.BUTTON_A,wiimote.setRumble,False) wiimotes = wiiuse.init(1, 1, handle_event, handle_ctrl_status, handle_disconnect) wii = viz.add('wiimote.dle') wiimote = wii.addWiimote() vizact.onsensordown(wiimote,wii.BUTTON_A,wiimote.setRumble,True) vizact.onsensorup(wiimote,wii.BUTTON_A,wiimote.setRumble,False) viz.go()
def start_dk2_head_tracker(self, control_style): """ Initializes Ole Traupe's new Oculus Rift DK2 ("DK2") head tracker class with both heading reset and drift correction based on Phasespace ("PS") data. Args: control_style: interaction possibilities between subject and VR world. Currently supports: 'mouse and keyboard', 'joystick', 'wiimote with dk2 head', 'dk2 head only', 'dk2 head hands' Returns: a Tracker object with automatic drift correction """ # import OWLTK as otk # import OWL as _OWL ## get trackers ready by declaring some general settings # define tracker names hmdOri_trackerName = 'rift_ori' # DK2 ori tracker rawHmdOri_trackerName = 'rawhmd_ori' # group/dummy tracker for feeding the DK2 ori data to (and on which the drift correction is done) hmdGroundTruth6dof_trackerName = 'ps_groundtruth_6dof' # group/dummy tracker for feeding the PS data to (let's the nose-tip pos offset be applied correctly) hmdMerged_trackerName = 'hmd_merged' # merged tracker controlling the HMD (from rawHmdOri and hmdGroundTruth6dof) # hand trackers #left_hand_tracker_name = 'left_hand' right_hand_tracker_name = 'right_hand' # set some tracking properties smoothPositionData = 2 # 0: raw/single data positional tracking # 1: linear regression on the samples flushed per HMD frame # 2: mean of such flushed samples (the only effective PS jitter removal method) driftCorrectionDemoMode = False # gives some input/output options (lets you create an offset via 'o') streamRenderStats = True # stream render stats to LSL, such as updateTime, drawTime, cullTime etc. streamDriftStats = True # stream drift stats to LSL: current offset, current correction increment, cumulative increment streamCompletePhasespaceData = True # stream all Phasespace markers and rigids for logging purposes to LSL # set Phasespace properties psServer_ip = "130.149.173.155" # PS server address #psServer_ip = "130.149.34.81" psServer_freq = 960 # slave can't set frequency, attempt to set only returns the actual freqency; # important for good head tracking: run PS profile with group=3 and interpolate=3 psServer_slave = 1 # 'slave' is the first bit in the 'flags' parameter; 'master' is currently not supported here psServer_headingLeds = [4097, 4098] # [4097,4098] are the IDs of the 2nd and 3rd marker of the 1st rigid body (the laterals used for heading reset) psServer_rigidBody = 0 # '0' is the 1st rigid body (the one used as comparator for the drift correction) if control_style == 'dk2 head wiimote': # Add wiimote extension and connect to first available wiimote wii = viz.add('wiimote.dle') self.wiimote = wii.addWiimote() # Register callback function to the wiimotes buttons vizact.onsensordown(self.wiimote, wii.BUTTON_A, self.on_button_press, 'A') vizact.onsensordown(self.wiimote, wii.BUTTON_B, self.on_button_press, 'B') # todos correct vizconnect file with steamVR controller vizconnect.go('resources/trackers/DK2_tracker_head_only_vizconnect.py') # instantiate the HMD tracker object (with ground truth reset and drift correction) self.tracker = HMD_Tracker(hmdOri_trackerName, rawHmdOri_trackerName, hmdGroundTruth6dof_trackerName, None, None, hmdMerged_trackerName, smoothPositionData, driftCorrectionDemoMode, streamRenderStats, streamDriftStats, streamCompletePhasespaceData, psServer_ip, psServer_freq, psServer_slave, psServer_headingLeds, psServer_rigidBody) elif control_style == 'dk2 head & right hand': vizconnect.go('resources/trackers/DK2_tracker_hands_vizconnect.py') # instantiate the HMD tracker object (with ground truth reset and drift correction) # None flag in case of left hand tracker self.tracker = HMD_Tracker(hmdOri_trackerName, rawHmdOri_trackerName, hmdGroundTruth6dof_trackerName, hmdMerged_trackerName, None, right_hand_tracker_name, smoothPositionData, driftCorrectionDemoMode, streamRenderStats, streamDriftStats, streamCompletePhasespaceData, psServer_ip, psServer_freq, psServer_slave, psServer_headingLeds, psServer_rigidBody) self.sphere_radius = 0.01 self.right_hand_tracker = vizconnect.getTracker('right_hand').getNode3d() self.right_hand_sphere = vizshape.addSphere(radius=self.sphere_radius) self.right_hand_sphere.alpha(0) self.right_hand_target = self.right_hand_sphere.collideSphere() self.right_hand_sphere.disable(viz.DYNAMICS) right_hand_link = viz.link(self.right_hand_tracker, self.right_hand_sphere) # todos say somewhere that the collide sphere is defined here # self.left_hand_tracker = vizconnect.getTracker('left_hand').getNode3d() # self.left_hand_sphere = vizshape.addSphere(radius=0.02) # self.left_hand_sphere.alpha(0) # self.left_hand_target = self.left_hand_sphere.collideSphere() # self.left_hand_sphere.disable(viz.DYNAMICS) # left_hand_link = viz.link(self.left_hand_tracker, self.left_hand_sphere) self.head_tracker = vizconnect.getTracker('hmd_merged').getNode3d() self.head_sphere = vizshape.addSphere(radius=self.sphere_radius) self.head_sphere.alpha(0) self.head_target = self.head_sphere.collideSphere() self.head_sphere.disable(viz.DYNAMICS) head_link = viz.link(self.head_tracker, self.head_sphere) # if show_avatar_hands: # # # link subjects hand trackers to proximity targets # right_hand = viz.add('resources/hand.cfg') # left_hand = viz.add('resources/hand_left.cfg') # # right_hand_link = viz.link(subject.right_hand_tracker, right_hand) # left_hand_link = viz.link(subject.left_hand_tracker, left_hand) # # elif subject.control_style == 'mouse and keyboard': # # # add proximity target for test purposes using mouse and keyboard # self.head_target = viz.MainView # # self.left_hand_tracker = vizconnect.getTracker('left_hand').getNode3d() # self.head_tracker = vizconnect.getTracker('hmd_merged').getNode3d() elif control_style == 'dk2 head only': vizconnect.go('resources/trackers/DK2_tracker_head_only_vizconnect.py') # instantiate the HMD tracker object (with ground truth reset and drift correction) self.tracker = HMD_Tracker(hmdOri_trackerName, rawHmdOri_trackerName, hmdGroundTruth6dof_trackerName, hmdMerged_trackerName, None, None, smoothPositionData, driftCorrectionDemoMode, streamRenderStats, streamDriftStats, streamCompletePhasespaceData, psServer_ip, psServer_freq, psServer_slave, psServer_headingLeds, psServer_rigidBody) else: print('Could not initialize HMD_Tracker')
import vizact import PyWiiUse as wiiuse #<wii>.addWiimote(device=-1) # class wiimote(): # def __init__(self): # wiimote = wii.addWiimote() # vizact.onsensordown(wiimote,wii.BUTTON_A,wiimote.setRumble,True) # vizact.onsensorup(wiimote,wii.BUTTON_A,wiimote.setRumble,False) wiimotes = wiiuse.init(1, 1, handle_event, handle_ctrl_status, handle_disconnect) wii = viz.add('wiimote.dle') wiimote = wii.addWiimote() vizact.onsensordown(wiimote, wii.BUTTON_A, wiimote.setRumble, True) vizact.onsensorup(wiimote, wii.BUTTON_A, wiimote.setRumble, False) viz.go()
def findDevices(self): """ Enumerate SteamVR devices and set up models """ # HMD hmd = steamvr.HMD() self.hmd['sensor'] = hmd.getSensor() hmd_ui = viz.addText('N/A') self._ui.addItem(viz.addText('Headset')) self._ui.addLabelItem('0', hmd_ui) self._ui.addSeparator() self.hmd['ui'] = hmd_ui hud = viz.addText3D('X: 0.00 (123.0°)', scale=(self.VALUE_SCALE * 2.5,) * 3, color=viz.GRAY) hud_link = viz.link(viz.MainView, hud) hud_link.preTrans(self.HUD_POS, viz.REL_LOCAL) self.hmd['hud'] = hud self._obj.append(hud) # Lighthouses for lidx, lighthouse in enumerate(steamvr.getCameraList()): lighthouse.model = lighthouse.addModel(parent=self._root) if not lighthouse.model: lighthouse.model = viz.addGroup() lighthouse.model.setCompositeAlpha(self.DEBUG_ALPHA) lighthouse.model.disable(viz.INTERSECTION) viz.link(lighthouse, lighthouse.model) l_text = viz.addText3D(str(lidx), scale=(self.LABEL_SCALE,) * 3, color=viz.YELLOW, parent=lighthouse.model, pos=(0.1, 0, 0)) l_text.setEuler(180, 0, 0) # Lighthouse normal vector l_normal = addRayPrimitive(origin=[0,0,0], direction=[0,0,1], color=viz.YELLOW, parent=lighthouse.model) l_normal.visible(False) self.lighthouses[lidx] = {'model': lighthouse.model, 'normal': l_normal, 'text': l_text} self._obj.append(lighthouse.model) print('* Found Lighthouse: {:d}'.format(lidx)) # Controllers if steamvr.getControllerList(): self._ui.addItem(viz.addText('Controllers')) for cidx, controller in enumerate(steamvr.getControllerList()): controller.model = controller.addModel(parent=self._root) if not controller.model: controller.model = viz.addGroup(parent=self._root) controller.model.setCompositeAlpha(self.DEBUG_ALPHA) controller.model.disable(viz.INTERSECTION) viz.link(controller, controller.model) c_axes = vizshape.addAxes(scale=(0.1, 0.1, 0.1)) viz.link(controller, c_axes) markers = {'axes': c_axes} for m in self._markers: markers[m] = self._markers[m].copy() markers[m].visible(False) viz.link(controller, markers[m]) c_text = viz.addText3D(str(cidx), scale=(self.LABEL_SCALE,) * 3, parent=controller.model, pos=(-0.05, 0, 0)) val_x = viz.addText3D('X: 0.00 (123.0°)', scale=(self.VALUE_SCALE,) * 3, parent=controller.model, pos=(-0.18, 0.04, 0), color=viz.RED) val_y = viz.addText3D('Y: 0.00 (123.0°)', scale=(self.VALUE_SCALE,) * 3, parent=controller.model, pos=(-0.18, 0.02, 0), color=viz.GREEN) val_z = viz.addText3D('Z: 0.00 (123.0°)', scale=(self.VALUE_SCALE,) * 3, parent=controller.model, pos=(-0.18, 0, 0), color=viz.BLUE) self.controllers[cidx] = {'model': controller.model, 'axes': c_axes, 'text': c_text, 'values': [val_x, val_y, val_z], 'ui': viz.addText('N/A'), 'markers': markers, 'active_marker': 'axes'} self._ui.addLabelItem(str(cidx), self.controllers[cidx]['ui']) self._obj.extend([controller.model, c_axes, val_x, val_y, val_z]) print('* Found Controller: {:d}'.format(cidx)) self._callbacks.append(vizact.onsensordown(controller, steamvr.BUTTON_TRIGGER, self._storePoint, controller, cidx)) self._callbacks.append(vizact.onsensordown(controller, steamvr.BUTTON_TRACKPAD, self._switchMarker, cidx)) self._callbacks.append(vizact.onsensordown(controller, 1, self.savePoints)) self._callbacks.append(vizact.onsensordown(controller, 0, self.saveScreenshot)) else: print('* No controllers detected.') # Trackers if steamvr.getTrackerList(): self._ui.addSeparator() self._ui.addItem(viz.addText('Trackers')) for tidx, tracker in enumerate(steamvr.getTrackerList()): tracker.model = tracker.addModel(parent=self._root) if not tracker.model: tracker.model = viz.addGroup(parent=self._root) tracker.model.setCompositeAlpha(self.DEBUG_ALPHA) tracker.model.disable(viz.INTERSECTION) viz.link(tracker, tracker.model) t_axes = vizshape.addAxes(scale=(0.1, 0.1, 0.1)) viz.link(tracker, t_axes) t_text = viz.addText3D(str(tidx), scale=(0.05, 0.05, 0.05), color=viz.BLUE, parent=tracker.model, pos=(-0.1, 0, 0)) val_x = viz.addText3D('X: 0.00 (123.0°)', scale=(self.VALUE_SCALE,) * 3, parent=tracker.model, pos=(0.18, 0.04, 0), color=viz.RED) val_x.setEuler([180, 0, 0], mode=viz.REL_LOCAL) val_y = viz.addText3D('Y: 0.00 (123.0°)', scale=(self.VALUE_SCALE,) * 3, parent=tracker.model, pos=(0.18, 0.02, 0), color=viz.GREEN) val_y.setEuler([180, 0, 0], mode=viz.REL_LOCAL) val_z = viz.addText3D('Z: 0.00 (123.0°)', scale=(self.VALUE_SCALE,) * 3, parent=tracker.model, pos=(0.18, 0, 0), color=viz.BLUE) val_z.setEuler([180, 0, 0], mode=viz.REL_LOCAL) self.trackers[tidx] = {'model': tracker.model, 'axes': t_axes, 'text': t_text, 'values': [val_x, val_y, val_z], 'ui': viz.addText('N/A')} self._ui.addLabelItem(str(tidx), self.trackers[tidx]['ui']) self._obj.extend([tracker.model, t_axes, val_x, val_y, val_z]) print('* Found Vive tracker: {:d}'.format(tidx)) else: print('* No trackers detected.')
if button is "Plus": some_global_variables.angularActivationThreshold += 0.1 elif button is "Minus": some_global_variables.angularActivationThreshold -= 0.1 elif button is "Up": some_global_variables.numberOfRenderFramesToAverageThreshold += 1 elif button is "Down": if some_global_variables.numberOfRenderFramesToAverageThreshold > 1: some_global_variables.numberOfRenderFramesToAverageThreshold -= 1 elif button is "Right": some_global_variables.angularDeactivationThreshold += 0.01 elif button is "Left": if some_global_variables.angularDeactivationThreshold > 0.02: some_global_variables.angularDeactivationThreshold -= 0.01 #vizact.onsensordown(wiimote, wii.BUTTON_A, wiiButtonEvent, "A", True) #vizact.onsensorup(wiimote, wii.BUTTON_A, wiiButtonEvent, "A", False) vizact.onsensordown(wiimote, wii.BUTTON_PLUS, wiiButtonEvent, "Plus", True) vizact.onsensordown(wiimote, wii.BUTTON_MINUS, wiiButtonEvent, "Minus", True) vizact.onsensordown(wiimote, wii.BUTTON_UP, wiiButtonEvent, "Up", True) vizact.onsensordown(wiimote, wii.BUTTON_DOWN, wiiButtonEvent, "Down", True) vizact.onsensordown(wiimote, wii.BUTTON_RIGHT, wiiButtonEvent, "Right", True) vizact.onsensordown(wiimote, wii.BUTTON_LEFT, wiiButtonEvent, "Left", True) #Key Presses vizact.onkeydown('h', pptextension.calibrateAvatar, some_global_variables.avatar, some_global_variables.ghostAvatar) #vizact.onkeydown('s', touchcube.scaleCubeY) #vizact.onkeydown('f', togRecording) #vizact.onkeydown(viz.KEY_ESCAPE, recordTCFiles) vizact.onkeydown('c', appendagemanager.switchControlSchema) vizact.onkeydown('p', pauseTouchCube) vizact.onkeydown('t', togArmActivationThresholds) vizact.onkeydown('m', MirrorRoom.toggleMirror)
def __init__(self, screen, textArray, numberOfChoices = 1, doneText = globals_oa.DEFAULT_DONE_TEXT): self.instructionsQuestion = textArray[0] self.screen = screen readyToConfirm = False # self.sub_number = subject_number self.q1Cycle = viz.cycle([]) self.valueCycle = viz.cycle([]) q1Node = viz.addGroup() q1Node.disable(viz.INTERSECTION) q1Node.disable(viz.LIGHTING) q1Node.disable(viz.FOG) q1Node.drawOrder(100000000) q1Node.disable(viz.DEPTH_TEST) viz.link(self.screen, q1Node) self.currQuestion = viz.addText("",parent=q1Node) # self.currQuestion.disable(viz.FOG) self.currQuestion.setScale([self.fontScale,self.fontScale,self.fontScale]) self.currQuestion.alignment(viz.ALIGN_CENTER) self.currQuestion.setPosition([0,.1,self.zOffset]) self.instructions = viz.addText("",parent=q1Node) # self.instructions.disable(viz.FOG) # self.instructions.setScale([self.fontScale/2,self.fontScale/2,self.fontScale/2]) self.instructions.setScale([self.fontScale,self.fontScale,self.fontScale]) self.instructions.alignment(viz.ALIGN_CENTER) self.instructions.setPosition([0,.6,self.zOffset]) prev = viz.addGroup(parent=q1Node) self.q1Number = prev numberYOffset = -.7 numberXOffset = -1.9 # numberXOffset = -1 # for i in range(1,8): # number = viz.addText(str(i) , parent=prev) ## number.disable(viz.FOG) # number.alignment(viz.ALIGN_LEFT_CENTER) # # number.setPosition([2,0,0]) # # if prev == self.q1Number: # number.alignment(viz.ALIGN_CENTER) # number.setPosition([numberXOffset,numberYOffset,self.zOffset]) # number.setScale([self.fontScale,self.fontScale,self.fontScale] ) # # prev = number # self.q1Cycle.append(number) #adding choices if numberOfChoices == 5: numberYOffset = -.7 numberXOffset = -2.2 separation = 4.5 elif numberOfChoices == 3: numberYOffset = -.7 numberXOffset = -1.3 separation = 4.5 elif numberOfChoices == 2: numberYOffset = -.7 numberXOffset = -0.9 separation = 4.5 else: numberYOffset = -.7 numberXOffset = -0.2 separation = 4.5 choiceScale = self.fontScale*(6.0/7.0) for i in range(1, numberOfChoices+1): choice = viz.addText(textArray[i], parent=prev) choice.alignment(viz.ALIGN_LEFT_CENTER) if i == 1: choice.setPosition([numberXOffset,numberYOffset,self.zOffset]) firstChoice = choice choice.setScale([choiceScale,choiceScale,choiceScale]) else: choice.setPosition([separation,0,0]) prev = choice self.q1Cycle.append(choice) #adding the globals_oa.DEFAULT_DONE_TEXT text # doneButtonPos = [1.7, -1.0, 0.0] doneButtonPos = [0.0, -1.2, 0.0] self.doneChoice = viz.addText(doneText, parent=self.q1Number) self.doneChoice.alignment(viz.ALIGN_CENTER) self.doneChoice.setPosition(doneButtonPos) self.doneChoice.setScale([choiceScale,choiceScale,choiceScale]) self.doneChoice.visible(False) # self.q1Cycle.append(self.doneChoice) # choice = viz.addText('Colder', parent=prev) # choice = viz.addText(textArray[2], parent=prev) # choice.alignment(viz.ALIGN_LEFT_CENTER) # choice.setPosition([separation,0,0]) # prev = choice # self.q1Cycle.append(choice) ## choice = viz.addText('Same as\nbefore', parent=prev) # choice = viz.addText(textArray[3], parent=prev) # choice.alignment(viz.ALIGN_LEFT_CENTER) # choice.setPosition([separation,0,0]) # prev = choice # self.q1Cycle.append(choice) # ## choice = viz.addText('Warmer', parent=prev) # choice = viz.addText(textArray[4], parent=prev) # choice.alignment(viz.ALIGN_LEFT_CENTER) # choice.setPosition([separation + 0.4,0,0]) # prev = choice # self.q1Cycle.append(choice) # ## choice = viz.addText(' A lot\nwarmer', parent=prev) # choice = viz.addText(textArray[5], parent=prev) ## choice.get # choice.alignment(viz.ALIGN_LEFT_CENTER) # choice.setPosition([separation,0,0]) # prev = choice # lastChoice = choice # self.q1Cycle.append(choice) vizact.onwheelup( self.cycleToNextValue ) if globals_oa.wiimote is not None: vizact.onsensordown(globals_oa.wiimote, globals_oa.wii.BUTTON_PLUS,self.cycleToNextValue) vizact.onwheeldown( self.cycleToPreviousValue ) if globals_oa.wiimote is not None: vizact.onsensordown(globals_oa.wiimote, globals_oa.wii.BUTTON_MINUS,self.cycleToPreviousValue) if globals_oa.rhViveTracker is not None: vizact.onsensordown(globals_oa.rhViveTracker, steamvr.BUTTON_TRIGGER,self.cycleToNextValue) if globals_oa.lhViveTracker is not None: vizact.onsensordown(globals_oa.lhViveTracker, steamvr.BUTTON_TRIGGER,self.onSelect) # verticalSeparationBetweenScaleAndText = 0.25 # #adding a visual cue for the temperature scale # viz.startLayer(viz.LINES) # viz.lineWidth(4) # viz.vertexColor(viz.BLUE) ## print "firstChoice.getPosition(mode = viz.ABS_PARENT) = " + str(firstChoice.getPosition(mode = viz.ABS_PARENT)) # viz.vertex([(numberXOffset + 0.1), numberYOffset+verticalSeparationBetweenScaleAndText, 0.0]) # viz.vertexColor(viz.GREEN) ## print "lastChoice.getPosition(mode = viz.ABS_PARENT) = " + str(lastChoice.getPosition(mode = viz.ABS_PARENT)) # viz.vertex([-(numberXOffset + 0.1), numberYOffset+verticalSeparationBetweenScaleAndText, 0.0]) # tempScale = viz.endLayer() # tempScale.setParent(q1Node) # if not showTempScale: tempScale.visible(False) # valueNamesYOffset = numberYOffset - .2 # self.lowValue = viz.addText("", parent=q1Node) ## self.lowValue.disable(viz.FOG) # self.lowValue.setScale([self.valueFont,self.valueFont,self.valueFont]) # self.lowValue.alignment(viz.ALIGN_CENTER) # self.lowValue.setPosition([numberXOffset,valueNamesYOffset, self.zOffset]) # # self.midValue = viz.addText("", parent=q1Node) ## self.midValue.disable(viz.FOG) # self.midValue.setScale([self.valueFont,self.valueFont,self.valueFont]) # self.midValue.alignment(viz.ALIGN_CENTER) # self.midValue.setPosition([0,valueNamesYOffset, self.zOffset]) # # self.highValue = viz.addText("", parent=q1Node) ## self.highValue.disable(viz.FOG) # self.highValue.setScale([self.valueFont,self.valueFont,self.valueFont]) # self.highValue.alignment(viz.ALIGN_CENTER) # self.highValue.setPosition([-numberXOffset + .45,valueNamesYOffset,self.zOffset]) # q4Node = viz.addGroup() # self.q4Link = viz.link(self.screen, q4Node) # imageInstructions = viz.addText(self.imageInstructions,parent=q4Node) # imageInstructions.disable(viz.FOG) # imageInstructions.setScale([self.fontScale,self.fontScale,self.fontScale]) # imageInstructions.alignment(viz.ALIGN_CENTER) # imageInstructions.setPosition([0,1.2,self.zOffset]) # self.questionaire_data = open('./data/questionaire.txt', 'a') # self.questionaire_data.write('Subject number: ' + str(subject_number) + ';') # self.questionaire_data.flush() # # # Load texture # pics = [viz.addTexture("resources/q4_images/SOIQ%ds.jpg" % (slideNum + 1)) for slideNum in range(7)] # for pic in pics: # pic.hint(viz.PRELOAD_HINT) # answers = [viz.addTexQuad(texture=pic, parent=q4Node) for pic in pics] # counter = 0 # for i in [self.imageYScale, 0]: # for j in [-self.imageXScale, 0, self.imageXScale]: # answers[counter].setPosition([j,i,self.zOffset]) # counter+=1 # # answers[6].setPosition([0,-self.imageYScale,self.zOffset]) # # counter = 1 # for answer in answers: # answer.scale([.5, .5, .5]) # number = viz.addText(str(counter) , parent=answer) ## number.disable(viz.FOG) # number.setScale([self.fontScale,self.fontScale,self.fontScale]) # number.alignment(viz.ALIGN_CENTER_BOTTOM) # # number.setPosition([0,-.75,0]) # # self.q4Cycle.append(number) # counter +=1 # prev = viz.addGroup(parent=q1Node) # self.q5Number = prev # for i in range(1,6): # number = viz.addText(str(i) , parent=prev) ## number.disable(viz.FOG) # # number.alignment(viz.ALIGN_LEFT_CENTER) # # number.setPosition([3,0,0]) # # if prev == self.q5Number: # number.alignment(viz.ALIGN_CENTER) # number.setPosition([numberXOffset-.1,numberYOffset,self.zOffset]) # number.setScale([self.fontScale,self.fontScale,self.fontScale] ) # # prev = number # self.q5Cycle.append(number) self.q1Link = q1Node # self.q4Link = q4Node self.setVisibleType(0) viz.callback(viz.MOUSEDOWN_EVENT,self.onMouseDown) viz.callback(viz.MOUSEUP_EVENT,self.onMouseUp) # vizact.onsensordown(globals_oa.wiimote, globals_oa.wii.BUTTON_HOME,self.onSelect) if globals_oa.wiimote is not None: vizact.onsensordown(globals_oa.wiimote, globals_oa.wii.BUTTON_B,self.onSelect)
exp_manager.addSensor(exp_sensor) exp_manager.addTarget(target) exp_manager.setDebug(viz.ON) ''' Function obtains answer via wiiMote Returns boolean depending on whether subject thinks they could have passed obstacle or not ''' def inputRequest(key): messageWindow = vizinfo.add('') #yield viztask.waitTime(1.2) # wait for 1.2 seconds messageWindow.message("Do you think you could pass? \nPress \"a\" if you think you could, \"b\" if not.") messageWindow.translate(0.9, 0.95) # can vary depending on desired position of box messageWindow.visible(viz.ON) if key == wii.BUTTON_A: participant_answer = True messageWindow.remove() if key == wii.BUTTON_B: participant_answer = False messageWindow.remove() # # Listener for wiimote vizact.onsensordown(wiimote,wii.BUTTON_B,inputRequest,wii.BUTTON_B) vizact.onsensordown(wiimote,wii.BUTTON_A,inputRequest,wii.BUTTON_A)
viz.MainView.move([0,0,-10]) col = vector.vector(0.8, 0.4, 0.4) position = vector.vector(8, 2, 8) # values must be float #Cylinder(pos_vector, fin_depth, shoulder, TTC, color_vector, radius, height) sample = Cylinder(position, 3.0, 1,2.5, col, 0.2, 10) wii = viz.add('wiimote.dle')#Add wiimote extension wiimote = wii.addWiimote() print sample print "Final x position for left and right cylinder respectively: %.2f, %.2f"%(sample.finalpos1[0], sample.finalpos2[0]) # Function to read in wiimote input def simplePrint(key): if key == wii.BUTTON_B: sample.reappear() elif key == wii.BUTTON_A: sample.reappear() sample.cyl_Left.addAction(sample.act1,pool=0) sample.cyl_Left.addAction(sample.FagenSequence,pool=1) sample.cyl_Right.addAction(sample.act2,pool=0) sample.cyl_Right.addAction(sample.FagenSequence,pool=1) # messageWindow.remove() # Listener for wiimote vizact.onsensordown(wiimote,wii.BUTTON_B,simplePrint,wii.BUTTON_B) vizact.onsensordown(wiimote,wii.BUTTON_A,simplePrint,wii.BUTTON_A)
def wiimoteInitializer(wiimote, nunchuck_wiimote, should_it_run, message_screen): vizact.onsensordown(wiimote, wii.BUTTON_HOME, wiiButtonManager, wiimote, nunchuck_wiimote, should_it_run, message_screen) vizact.onsensordown(wiimote, wii.BUTTON_UP, wiiButtonManager, wiimote, nunchuck_wiimote, should_it_run, message_screen) vizact.onsensordown(wiimote, wii.BUTTON_DOWN, wiiButtonManager, wiimote, nunchuck_wiimote, should_it_run, message_screen) vizact.onsensordown(wiimote, wii.BUTTON_LEFT, wiiButtonManager, wiimote, nunchuck_wiimote, should_it_run, message_screen) vizact.onsensordown(wiimote, wii.BUTTON_RIGHT, wiiButtonManager, wiimote, nunchuck_wiimote, should_it_run, message_screen) vizact.onsensordown(wiimote, wii.BUTTON_A, wiiButtonManager, wiimote, nunchuck_wiimote, should_it_run, message_screen) vizact.onsensordown(wiimote, wii.BUTTON_B, wiiButtonManager, wiimote, nunchuck_wiimote, should_it_run, message_screen) vizact.onsensordown(wiimote, wii.BUTTON_PLUS, wiiButtonManager, wiimote, nunchuck_wiimote, should_it_run, message_screen) vizact.onsensordown(wiimote, wii.BUTTON_MINUS, wiiButtonManager, wiimote, nunchuck_wiimote, should_it_run, message_screen) vizact.onsensordown(wiimote, wii.BUTTON_1, wiiButtonManager, wiimote, nunchuck_wiimote, should_it_run, message_screen) vizact.onsensordown(wiimote, wii.BUTTON_2, wiiButtonManager, wiimote, nunchuck_wiimote, should_it_run, message_screen) vizact.onsensordown(wiimote, wii.NUNCHUK_C, wiiButtonManager, wiimote, nunchuck_wiimote, should_it_run, message_screen) vizact.onsensordown(wiimote, wii.NUNCHUK_Z, wiiButtonManager, wiimote, nunchuck_wiimote, should_it_run, message_screen) #Rumble the wiimote while the B button is down vizact.onsensordown(wiimote,wii.BUTTON_B,wiimote.setRumble,True) vizact.onsensorup(wiimote,wii.BUTTON_B,wiimote.setRumble,False)