コード例 #1
0
	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)
コード例 #2
0
ファイル: third_appendage.py プロジェクト: vhilab/thirdArm
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)
コード例 #3
0
ファイル: MayaTestNew.py プロジェクト: vicmcg/CGMaze
#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
コード例 #4
0
			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
コード例 #5
0
ファイル: wiimote.py プロジェクト: YanjieGao/ExperimentBase


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()
コード例 #6
0
    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')
コード例 #7
0
ファイル: wiimote.py プロジェクト: bmj8778/CatchB
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()
コード例 #8
0
    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.')
コード例 #9
0
ファイル: fiveArms.py プロジェクト: vhilab/fiveArms
	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)
コード例 #10
0
	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)
コード例 #11
0
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)

コード例 #12
0
#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
コード例 #13
0
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)

コード例 #14
0
ファイル: universe.py プロジェクト: luion/virtual-ar-museum
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)