Exemplo n.º 1
0
def initTrackers(initFlag=vizconnect.INIT_INDEPENDENT, initList=None):
	#VC: place any general initialization code here
	rawTracker = vizconnect.getRawTrackerDict()

	#VC: initialize a new tracker
	_name = 'head_tracker'
	if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
		#VC: init the raw object
		if initFlag&vizconnect.INIT_RAW:
			#VC: set some parameters
			index = 0
			
			#VC: create the raw object
			import steamvr
			try:
				tracker = steamvr.getExtension().getHMDList()[index]
			except IndexError:
				viz.logWarn("** WARNING: Not able to connect to tracker at index {0}. It's likely that not enough trackers are connected.".format(index))
				tracker = viz.addGroup()
				tracker.invalidTracker = True
			rawTracker[_name] = tracker
	
		#VC: init the wrapper (DO NOT EDIT)
		if initFlag&vizconnect.INIT_WRAPPERS:
			vizconnect.addTracker(rawTracker[_name], _name, make='Valve', model='SteamVR HMD Tracker')

	#VC: set the name of the default
	vizconnect.setDefault('tracker', 'head_tracker')

	#VC: return values can be modified here
	return None
Exemplo n.º 2
0
 def __trackResponse(self):
     readStart = 0
     while True:
         if self.going:
             resp = self.T1.readAllResponse()
             for r in resp:
                 sm = r.find('sm')
                 if sm is not None and sm.text == FLMOCommands.ServerMessages.ActualValue:
                     try:
                         q = self.T1.MotorResponses[r.find('id').text]
                         q.time = viz.tick()
                         q.value = self.T1.device_to_si * float(
                             r.find('v').text)
                         self.readTime = viz.tick() - readStart
                         readStart = viz.tick()
                         viz.sendEvent(TREADMILL_STATE_UPDATED)
                     except (ValueError):
                         print "Warning (VTreadmill: could not parse value from"
                         print "   ", treadmill.ET.tostring(r)
                         print "continuing"
                     except (KeyError):
                         print "Warning (VTreadmill: could not locate id from"
                         print "   ", treadmill.ET.tostring(r)
                         print "   id was: ", r.find('id').text
                         print "   available ids are:"
                         for k, v in self.T1.MotorResponses.iteritems():
                             print "        ", k
                         print "continuing"
                 elif sm is not None and sm.text == FLMOCommands.ServerMessages.ErrorMessage:
                     viz.logWarn(
                         "Warning (VTreadmill): Treadmill returned an error:\n   ",
                         treadmill.ET.tostring(r), "\n    ",
                         r.find('string').text)
         yield None
Exemplo n.º 3
0
def experiment():

    # Wait for spacebar to begin experiment
    yield viztask.waitKeyDown(" ")

    # Proceed through experiment phases
    participant = yield participantInfo()
    yield learnPhase()
    results = yield testPhase()

    # Log results to file
    try:
        with open(participant.id + "_experiment_data.txt", "w") as f:

            # write participant data to file
            data = "Participant ID: {p.id}\nLast Name: {p.lastName}\nFirst Name: {p.firstName}\nGender: {p.gender}\nAge: {p.ageGroup}\n\n".format(
                p=participant
            )
            f.write(data)

            # write result of each trial
            for name, time in results:
                data = "The {} trial took {:.2f} seconds\n".format(name, time)
                f.write(data)
    except IOError:
        viz.logWarn("Could not log results to file. Make sure you have permission to write to folder")
Exemplo n.º 4
0
def initTrackers(initFlag=vizconnect.INIT_INDEPENDENT, initList=None):
	#VC: place any general initialization code here
	rawTracker = vizconnect.getRawTrackerDict()

	#VC: initialize a new tracker
	_name = 'head_tracker'
	if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
		#VC: init the raw object
		if initFlag&vizconnect.INIT_RAW:
			#VC: set some parameters
			index = 0
			
			#VC: create the raw object
			import oculus
			sensorList = oculus.getSensors()
			if index < len(sensorList):
				orientationTracker = sensorList[index]
			else:
				viz.logWarn("** WARNING: Oculus VR Rift Orientation Tracker not present.")
				orientationTracker = viz.addGroup()
				orientationTracker.invalidTracker = True
			rawTracker[_name] = orientationTracker
	
		#VC: init the wrapper (DO NOT EDIT)
		if initFlag&vizconnect.INIT_WRAPPERS:
			vizconnect.addTracker(rawTracker[_name], _name, make='Oculus VR', model='DK2')

	#VC: return values can be modified here
	return None
Exemplo n.º 5
0
def initTrackers(initFlag=vizconnect.INIT_INDEPENDENT, initList=None):
	#VC: place any general initialization code here
	rawTracker = vizconnect.getRawTrackerDict()

	#VC: initialize a new tracker
	_name = 'head_tracker'
	if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
		#VC: init the raw object
		if initFlag&vizconnect.INIT_RAW:
			#VC: set some parameters
			group = None
			
			#VC: create the raw object
			if group is None:
				group = viz.addGroup()
			rawTracker[_name] = group
	
		#VC: init the wrapper (DO NOT EDIT)
		if initFlag&vizconnect.INIT_WRAPPERS:
			vizconnect.addTracker(rawTracker[_name], _name, make='Virtual', model='Group')

	#VC: initialize a new tracker
	_name = 'rift_tracker'
	if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
		#VC: init the raw object
		if initFlag&vizconnect.INIT_RAW:
			#VC: set some parameters
			index = 0
			
			#VC: create the raw object
			import oculus
			sensorList = oculus.getSensors()
			if index < len(sensorList):
				orientationTracker = sensorList[index]
			else:
				viz.logWarn("** WARNING: Oculus VR Rift Orientation Tracker not present.")
				orientationTracker = viz.addGroup()
				orientationTracker.invalidTracker = True
			rawTracker[_name] = orientationTracker
	
		#VC: init the wrapper (DO NOT EDIT)
		if initFlag&vizconnect.INIT_WRAPPERS:
			vizconnect.addTracker(rawTracker[_name], _name, make='Oculus VR', model='DK2')
	
		#VC: init the offsets
		if initFlag&vizconnect.INIT_OFFSETS:
			_link = vizconnect.getTracker(_name).getLink()
			#VC: clear link offsets
			_link.reset(viz.RESET_OPERATORS)
			
			#VC: reset orientation
			_link.preEuler([0, 0, 0], target=viz.LINK_ORI_OP, priority=-20)

	#VC: return values can be modified here
	return None
Exemplo n.º 6
0
def initTrackers(initFlag=vizconnect.INIT_INDEPENDENT, initList=None):
    #VC: place any general initialization code here
    rawTracker = vizconnect.getRawTrackerDict()

    #VC: initialize a new tracker
    _name = 'dk2'
    if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
        #VC: init the raw object
        if initFlag & vizconnect.INIT_RAW:
            #VC: set some parameters
            index = 0

            #VC: create the raw object
            import oculus
            sensorList = oculus.getSensors()
            if index < len(sensorList):
                orientationTracker = sensorList[index]
            else:
                viz.logWarn(
                    "** WARNING: Oculus VR Rift Orientation Tracker not present."
                )
                orientationTracker = viz.addGroup()
                orientationTracker.invalidTracker = True
            rawTracker[_name] = orientationTracker

        #VC: init the wrapper (DO NOT EDIT)
        if initFlag & vizconnect.INIT_WRAPPERS:
            vizconnect.addTracker(rawTracker[_name],
                                  _name,
                                  make='Oculus VR',
                                  model='DK2')

        #VC: init the offsets
        if initFlag & vizconnect.INIT_OFFSETS:
            _link = vizconnect.getTracker(_name).getLink()
            #VC: clear link offsets
            _link.reset(viz.RESET_OPERATORS)

            #VC: apply offsets
            _link.postTrans([0, 1.405, 0])

        #VC: init the mappings for the wrapper
        if initFlag & vizconnect.INIT_WRAPPER_MAPPINGS:
            #VC: on-state mappings
            if initFlag & vizconnect.INIT_MAPPINGS_ON_STATE:
                vizconnect.getTracker(_name).setOnStateEventList([
                    vizconnect.onstate(
                        lambda rawInput: rawInput['keyboard'].isButtonDown(19),
                        vizconnect.getTracker(_name).resetHeading
                    ),  # make=Generic, model=Keyboard, name=keyboard, signal=Key R
                ])

    #VC: return values can be modified here
    return None
def initTrackers(initFlag=vizconnect.INIT_INDEPENDENT, initList=None):
	#VC: place any general initialization code here
	rawTracker = vizconnect.getRawTrackerDict()

	#VC: initialize a new tracker
	_name = 'head_tracker'
	if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
		#VC: init the raw object
		if initFlag&vizconnect.INIT_RAW:
			#VC: set some parameters
			addMouseOrientation = True
			positionSensitivity = 2.5
			heightOffset = 1.82
			sensorIndex = 0
			
			#VC: create the raw object
			import oculus
			sensorList = oculus.getSensors()
			if sensorIndex < len(sensorList):
				dk2Tracker = sensorList[sensorIndex]
				from vizconnect.util import virtual_trackers
				tracker = virtual_trackers.TrackerAndKeyboardWalking(dk2Tracker, addMouseOrientation=addMouseOrientation, positionSensitivity=positionSensitivity, heightOffset=heightOffset)
			else:
				viz.logWarn("** WARNING: Oculus Tracker not present.")
				tracker = viz.addGroup()
				tracker.invalidTracker = True
			rawTracker[_name] = tracker
	
		#VC: init the wrapper (DO NOT EDIT)
		if initFlag&vizconnect.INIT_WRAPPERS:
			vizconnect.addTracker(rawTracker[_name], _name, make='Oculus VR', model='Rift With Mouse And Keyboard')
	
		#VC: init the offsets
		if initFlag&vizconnect.INIT_OFFSETS:
			_link = vizconnect.getTracker(_name).getLink()
			#VC: clear link offsets
			_link.reset(viz.RESET_OPERATORS)
			
			#VC: reset orientation
			_link.preEuler([0, 0, 0], target=viz.LINK_ORI_OP, priority=-20)
	
		#VC: init the mappings for the wrapper
		if initFlag&vizconnect.INIT_WRAPPER_MAPPINGS:
			#VC: on-state mappings
			if initFlag&vizconnect.INIT_MAPPINGS_ON_STATE:
				vizconnect.getTracker(_name).setOnStateEventList([
						vizconnect.onstate(lambda rawInput: rawInput['keyboard'].isButtonDown(19), vizconnect.getTracker(_name).resetHeading),# make=Generic, model=Keyboard, name=keyboard, signal=Key R
				])

	#VC: return values can be modified here
	return None
def initTrackers():
	rawTracker = vizconnect.getRawTrackerDict()
	default = ''

	# initialization code for ppt which is a WorldVizPPT
	pptHostname="localhost"
	vrpn7 = viz.add('vrpn7.dle')
	# initialization for sub object ppt_Rhead
	markerId=1
	rawTracker['ppt_Rhead'] = vrpn7.addTracker('PPT0@'+pptHostname, markerId-1)
	# initialization for sub object ppt_Lhead
	markerId=2
	rawTracker['ppt_Lhead'] = vrpn7.addTracker('PPT0@'+pptHostname, markerId-1)
	# initialization for sub object ppt_hand
	markerId=4
	rawTracker['ppt_hand'] = vrpn7.addTracker('PPT0@'+pptHostname, markerId-1)

	# initialization code for osv3_sensor_bus which is a InertialLabsOSv3SensorBus
	port=11
	sensorIndex=0
	InertialLabs = viz.add('InertialLabs.dle')
	sensors = InertialLabs.addSensorBus(port=port)
	try:
		sensor = sensors[sensorIndex]
	except:
		viz.logWarn("** WARNING: can't connect to InertialLabs OSv3 (Sensor Bus) on port {0} with index {1}. It's likely that not enough sensors are connected.".format(port, sensorIndex))
		sensor = viz.addGroup()
		sensor.invalidTracker = True
	rawTracker['osv3_sensor_bus'] = sensor

	# transformation offset code for osv3_sensor_bus
	link = viz.link(rawTracker['osv3_sensor_bus'], viz.NullLinkable)
	link.setSrcMaskOverride(viz.LINK_ORI|viz.LINK_POS)
	link.preEuler([90, 0, 180])
	rawTracker['osv3_sensor_bus'] = link

	# initialization code for optical_heading which is a VirtualOpticalHeading
	leftPosTracker=vizconnect.getRawTracker('ppt_Lhead')
	rightPosTracker=vizconnect.getRawTracker('ppt_Rhead')
	oriTracker=vizconnect.getRawTracker('osv3_sensor_bus')
	distance=0.37
	from vizconnect.virtual_trackers import OpticalHeading
	rawTracker['optical_heading'] = OpticalHeading(leftPosTracker, rightPosTracker, oriTracker, distance=distance)

	# setting default
	default = 'ppt_Rhead'

	return rawTracker, default
Exemplo n.º 9
0
def initTrackers(initFlag=vizconnect.INIT_INDEPENDENT, initList=None):
	#VC: place any general initialization code here
	rawTracker = vizconnect.getRawTrackerDict()

	#VC: initialize a new tracker
	_name = 'rift_orientation_tracker'
	if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
		#VC: init the raw object
		if initFlag&vizconnect.INIT_RAW:
			#VC: create the raw object
			import oculus
			index=0
			sensorList = oculus.getSensors()
			if index < len(sensorList):
				orientationTracker = sensorList[index]
			else:
				viz.logWarn("** WARNING: Oculus VR Rift Orientation Tracker not present.")
				orientationTracker = viz.addGroup()
				orientationTracker.invalidTracker = True
			rawTracker[_name] = orientationTracker
	
		#VC: init the wrapper (DO NOT EDIT)
		if initFlag&vizconnect.INIT_WRAPPERS:
			vizconnect.addTracker(rawTracker[_name], _name, make='Oculus VR', model='Rift Orientation Tracker')
	
		#VC: init the offsets
		if initFlag&vizconnect.INIT_OFFSETS:
			_link = vizconnect.getTracker(_name).getLink()
			#VC: clear link offsets
			_link.reset(viz.RESET_OPERATORS)
			
			#VC: reset orientation
			_link.preEuler([0, 0, 0], target=viz.LINK_ORI_OP, priority=-20)
			
			#VC: apply offsets
			_link.postTrans([0, 1.68, 0])			
	
		#VC: init the mappings for the wrapper
		if initFlag&vizconnect.INIT_WRAPPER_MAPPINGS:
			#VC: on-state mappings
			if initFlag&vizconnect.INIT_MAPPINGS_ON_STATE:
				vizconnect.getTracker(_name).setOnStateEventList([
						vizconnect.onstate(lambda rawInput: rawInput['joystick'].isButtonDown(2), vizconnect.getTracker(_name).resetHeading),# make=Generic, model=Joystick, name=joystick, signal=Button 2
				])

	#VC: return values can be modified here
	return None
Exemplo n.º 10
0
def experiment():

    participant = yield participantInfo()
    viz.mouse.setVisible(False)
    yield learnPhase()
    results = yield testPhase()

    #Log results to file
    try:
        with open(participant.id + '_experiment_data_C6.txt','w') as f:

            #write participant data to file
            data = "Participant ID: {p.id}\nLast Name: {p.lastName}\nFirst Name: {p.firstName}\n".format(p=participant)
            f.write(data)

            #write result of each trial
            for name,time in results:
                data = "The {} trial took {:.2f} seconds\n".format(name,time)
                f.write(data)
    except IOError:
        viz.logWarn('Could not log results to file. Make sure you have permission to write to folder')
Exemplo n.º 11
0
	def __init__(self, autoDetectMonitor=True, sensor=None, stereo=viz.STEREO_HORZ, cluster_stereo=None, window=viz.MainWindow):
		viz.EventClass.__init__(self)

		# Get sensor from extension if not specified
		if sensor is None:
			allSensors = getSensors()
			if allSensors:
				sensor = allSensors[0]
			else:
				viz.logError('** ERROR: Failed to detect Oculus HMD')

		#Save parameters
		self._stereo = stereo
		self._cluster_stereo = cluster_stereo
		self._lastAppliedWindow = window
		self._sensor = sensor
		self._effect = StereoEffect(_DistortionCorrectionEffect(),_DistortionCorrectionEffect(),priority=-1000)
		self._hud_root = None

		#Apply settings
		if window is not None:
			self.apply(window)
			if self._sensor:
				vizfx.postprocess.addEffect(self._effect,window)
				vizfx.postprocess.getEffectManager(window).setRenderScale(self._sensor.getRenderScale())

		if autoDetectMonitor:
			monitor = None
			if self._sensor:
				monitor = self._sensor.getMonitorNumber(default=None)
			if monitor is None:
				monitor = self.getMonitorNumber(default=None)
			if monitor is None:
				viz.logWarn('** WARNING: Failed to detect',self.MODEL_NAME,'HMD')
			else:
				viz.window.setFullscreenMonitor(monitor)

		#Handle window size
		self.callback(viz.WINDOW_SIZE_EVENT,self._onSize)
		self._updateViewport()
Exemplo n.º 12
0
def initTrackers(initFlag=vizconnect.INIT_INDEPENDENT, initList=None):
    #VC: place any general initialization code here
    rawTracker = vizconnect.getRawTrackerDict()

    #VC: initialize a new tracker
    _name = 'ppt_rhead'
    if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
        #VC: init the raw object
        if initFlag & vizconnect.INIT_RAW:
            #VC: set some parameters
            pptHostname = 'localhost'
            markerId = 1

            #VC: create the raw object
            vrpn7 = viz.add('vrpn7.dle')
            rawTracker[_name] = vrpn7.addTracker('PPT0@' + pptHostname,
                                                 markerId - 1)

        #VC: init the wrapper (DO NOT EDIT)
        if initFlag & vizconnect.INIT_WRAPPERS:
            vizconnect.addTracker(rawTracker[_name],
                                  _name,
                                  make='WorldViz',
                                  model='PPT')

    #VC: initialize a new tracker
    _name = 'ppt_lhead'
    if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
        #VC: init the raw object
        if initFlag & vizconnect.INIT_RAW:
            #VC: set some parameters
            pptHostname = 'localhost'
            markerId = 2

            #VC: create the raw object
            vrpn7 = viz.add('vrpn7.dle')
            rawTracker[_name] = vrpn7.addTracker('PPT0@' + pptHostname,
                                                 markerId - 1)

        #VC: init the wrapper (DO NOT EDIT)
        if initFlag & vizconnect.INIT_WRAPPERS:
            vizconnect.addTracker(rawTracker[_name],
                                  _name,
                                  make='WorldViz',
                                  model='PPT')

    #VC: initialize a new tracker
    _name = 'ppt_rhand'
    if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
        #VC: init the raw object
        if initFlag & vizconnect.INIT_RAW:
            #VC: set some parameters
            pptHostname = 'localhost'
            markerId = 4

            #VC: create the raw object
            vrpn7 = viz.add('vrpn7.dle')
            rawTracker[_name] = vrpn7.addTracker('PPT0@' + pptHostname,
                                                 markerId - 1)

        #VC: init the wrapper (DO NOT EDIT)
        if initFlag & vizconnect.INIT_WRAPPERS:
            vizconnect.addTracker(rawTracker[_name],
                                  _name,
                                  make='WorldViz',
                                  model='PPT')

    #VC: initialize a new tracker
    _name = 'ppt_lhand'
    if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
        #VC: init the raw object
        if initFlag & vizconnect.INIT_RAW:
            #VC: set some parameters
            pptHostname = 'localhost'
            markerId = 5

            #VC: create the raw object
            vrpn7 = viz.add('vrpn7.dle')
            rawTracker[_name] = vrpn7.addTracker('PPT0@' + pptHostname,
                                                 markerId - 1)

        #VC: init the wrapper (DO NOT EDIT)
        if initFlag & vizconnect.INIT_WRAPPERS:
            vizconnect.addTracker(rawTracker[_name],
                                  _name,
                                  make='WorldViz',
                                  model='PPT')

    #VC: initialize a new tracker
    _name = 'osv3_sensor_bus'
    if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
        #VC: init the raw object
        if initFlag & vizconnect.INIT_RAW:
            #VC: set some parameters
            port = 11
            sensorIndex = 0

            #VC: create the raw object
            InertialLabs = viz.add('InertialLabs.dle')
            sensors = InertialLabs.addSensorBus(port=port)
            try:
                sensor = sensors[sensorIndex]
            except:
                viz.logWarn(
                    "** WARNING: can't connect to InertialLabs OSv3 (Sensor Bus) on port {0} with index {1}. It's likely that not enough sensors are connected."
                    .format(port, sensorIndex))
                sensor = viz.addGroup()
                sensor.invalidTracker = True
            rawTracker[_name] = sensor

        #VC: init the wrapper (DO NOT EDIT)
        if initFlag & vizconnect.INIT_WRAPPERS:
            vizconnect.addTracker(rawTracker[_name],
                                  _name,
                                  make='Inertial Labs',
                                  model='OSv3 Sensor Bus')

        #VC: init the offsets
        if initFlag & vizconnect.INIT_OFFSETS:
            _link = vizconnect.getTracker(_name).getLink()
            #VC: clear link offsets
            _link.reset(viz.RESET_OPERATORS)

            #VC: reset orientation
            _link.preEuler([0, 0, 0], target=viz.LINK_ORI_OP, priority=-20)

            #VC: apply offsets
            _link.preEuler([90, 0, 180])

    #VC: initialize a new tracker
    _name = 'optical_heading'
    if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
        #VC: request that any dependencies be created
        if initFlag & vizconnect.INIT_INDEPENDENT:
            initTrackers(vizconnect.INIT_INDEPENDENT, ['ppt_lhead'])
            initTrackers(vizconnect.INIT_INDEPENDENT, ['ppt_rhead'])
            initTrackers(vizconnect.INIT_INDEPENDENT, ['osv3_sensor_bus'])

        #VC: init the raw object
        if initFlag & vizconnect.INIT_RAW:
            #VC: set some parameters
            leftPosTracker = vizconnect.getTracker('ppt_lhead').getNode3d()
            rightPosTracker = vizconnect.getTracker('ppt_rhead').getNode3d()
            oriTracker = vizconnect.getTracker('osv3_sensor_bus').getNode3d()
            distance = 0.39

            #VC: create the raw object
            from vizconnect.util.virtual_trackers import OpticalHeading
            rawTracker[_name] = OpticalHeading(leftPosTracker,
                                               rightPosTracker,
                                               oriTracker,
                                               distance=distance)

        #VC: init the wrapper (DO NOT EDIT)
        if initFlag & vizconnect.INIT_WRAPPERS:
            vizconnect.addTracker(rawTracker[_name],
                                  _name,
                                  make='Virtual',
                                  model='Optical Heading')

        #VC: init the offsets
        if initFlag & vizconnect.INIT_OFFSETS:
            _link = vizconnect.getTracker(_name).getLink()
            #VC: clear link offsets
            _link.reset(viz.RESET_OPERATORS)

            #VC: reset orientation
            _link.preEuler([0, 0, 0], target=viz.LINK_ORI_OP, priority=-20)

            #VC: apply offsets
            _link.preTrans([0, -0.14, 0.05])

    #VC: return values can be modified here
    return None
Exemplo n.º 13
0
def initTrackers(initFlag=vizconnect.INIT_INDEPENDENT, initList=None):
    #VC: place any general initialization code here
    rawTracker = vizconnect.getRawTrackerDict()

    #VC: initialize a new tracker
    _name = 'vrpn'
    if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
        #VC: init the raw object
        if initFlag & vizconnect.INIT_RAW:
            #VC: set some parameters
            trackerId = 'Tracker0'
            ip = 'localhost'
            sensorIndex = 38

            #VC: create the raw object
            vrpn7 = viz.add('vrpn7.dle')
            rawTracker[_name] = vrpn7.addTracker(trackerId + "@" + ip,
                                                 sensorIndex)

        #VC: init the wrapper (DO NOT EDIT)
        if initFlag & vizconnect.INIT_WRAPPERS:
            vizconnect.addTracker(rawTracker[_name],
                                  _name,
                                  make='Generic',
                                  model='VRPN')

        #VC: init the offsets
        if initFlag & vizconnect.INIT_OFFSETS:
            _link = vizconnect.getTracker(_name).getLink()
            #VC: clear link offsets
            _link.reset(viz.RESET_OPERATORS)

            #VC: apply swap
            _link.swapPos([-1, 2, 3])

        #VC: set the parent of the node
        if initFlag & vizconnect.INIT_PARENTS:
            vizconnect.getTracker(_name).setParent(
                vizconnect.getAvatar('male').getAttachmentPoint('head'))

    #VC: initialize a new tracker
    _name = 'inertiacube'
    if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
        #VC: init the raw object
        if initFlag & vizconnect.INIT_RAW:
            #VC: set some parameters
            port = 0

            #VC: create the raw object
            isense = viz.add('intersense.dle')
            isenseTracker = isense.addTracker(port=port)
            if not isenseTracker.valid():
                viz.logWarn(
                    "** WARNING: can't connect to InterSense InertiaCube at {0}."
                    .format(port))
            rawTracker[_name] = isenseTracker

        #VC: init the wrapper (DO NOT EDIT)
        if initFlag & vizconnect.INIT_WRAPPERS:
            vizconnect.addTracker(rawTracker[_name],
                                  _name,
                                  make='InterSense',
                                  model='InertiaCube')

    #VC: initialize a new tracker
    _name = 'merged'
    if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
        #VC: request that any dependencies be created
        if initFlag & vizconnect.INIT_INDEPENDENT:
            initTrackers(vizconnect.INIT_INDEPENDENT, ['vrpn'])
            initTrackers(vizconnect.INIT_INDEPENDENT, ['inertiacube'])

        #VC: init the raw object
        if initFlag & vizconnect.INIT_RAW:
            #VC: set some parameters
            posTracker = vizconnect.getTracker('vrpn').getNode3d()
            oriTracker = vizconnect.getTracker('inertiacube').getNode3d()

            #VC: create the raw object
            try:
                raw = viz.mergeLinkable(posTracker, oriTracker)
            except:
                viz.logError(
                    'Error **: unable to create merged tracker, providing empty tracker object.'
                )
                raw = viz.addGroup()
                raw.invalidTracker = True
            rawTracker[_name] = raw

        #VC: init the wrapper (DO NOT EDIT)
        if initFlag & vizconnect.INIT_WRAPPERS:
            vizconnect.addTracker(rawTracker[_name],
                                  _name,
                                  make='Virtual',
                                  model='Merged')

    #VC: initialize a new tracker
    _name = 'vrpn3'
    if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
        #VC: init the raw object
        if initFlag & vizconnect.INIT_RAW:
            #VC: set some parameters
            trackerId = 'Tracker0'
            ip = 'localhost'
            sensorIndex = 40

            #VC: create the raw object
            vrpn7 = viz.add('vrpn7.dle')
            rawTracker[_name] = vrpn7.addTracker(trackerId + "@" + ip,
                                                 sensorIndex)

        #VC: init the wrapper (DO NOT EDIT)
        if initFlag & vizconnect.INIT_WRAPPERS:
            vizconnect.addTracker(rawTracker[_name],
                                  _name,
                                  make='Generic',
                                  model='VRPN')

        #VC: init the offsets
        if initFlag & vizconnect.INIT_OFFSETS:
            _link = vizconnect.getTracker(_name).getLink()
            #VC: clear link offsets
            _link.reset(viz.RESET_OPERATORS)

            #VC: apply swap
            _link.swapPos([-1, 2, 3])
            _link.swapQuat([-1, 2, 3, -4])

        #VC: set the parent of the node
        if initFlag & vizconnect.INIT_PARENTS:
            vizconnect.getTracker(_name).setParent(vizconnect.getRoot())

    #VC: initialize a new tracker
    _name = 'vrpn2'
    if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
        #VC: init the raw object
        if initFlag & vizconnect.INIT_RAW:
            #VC: set some parameters
            trackerId = 'Tracker0'
            ip = 'localhost'
            sensorIndex = 39

            #VC: create the raw object
            vrpn7 = viz.add('vrpn7.dle')
            rawTracker[_name] = vrpn7.addTracker(trackerId + "@" + ip,
                                                 sensorIndex)

        #VC: init the wrapper (DO NOT EDIT)
        if initFlag & vizconnect.INIT_WRAPPERS:
            vizconnect.addTracker(rawTracker[_name],
                                  _name,
                                  make='Generic',
                                  model='VRPN')

        #VC: init the offsets
        if initFlag & vizconnect.INIT_OFFSETS:
            _link = vizconnect.getTracker(_name).getLink()
            #VC: clear link offsets
            _link.reset(viz.RESET_OPERATORS)

            #VC: apply swap
            _link.swapPos([-1, 2, 3])
            _link.swapQuat([-1, 2, 3, -4])

    #VC: return values can be modified here
    return None
def initTrackers(initFlag=vizconnect.INIT_INDEPENDENT, initList=None):
	#VC: place any general initialization code here
	rawTracker = vizconnect.getRawTrackerDict()

	#VC: initialize a new tracker
	_name = 'steamvr_controller_tracker'
	if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
		#VC: init the raw object
		if initFlag&vizconnect.INIT_RAW:
			#VC: set some parameters
			index = 1
			
			#VC: create the raw object
			import steamvr
			try:
				tracker = steamvr.getControllerList()[index]
			except IndexError:
				viz.logWarn("** WARNING: Not able to connect to tracker at index {0}. It's likely that not enough trackers are connected.".format(index))
				tracker = viz.addGroup()
				tracker.invalidTracker = True
			rawTracker[_name] = tracker
	
		#VC: init the wrapper (DO NOT EDIT)
		if initFlag&vizconnect.INIT_WRAPPERS:
			vizconnect.addTracker(rawTracker[_name], _name, make='Valve', model='SteamVR Controller Tracker')

	#VC: initialize a new tracker
	_name = 'steamvr_controller_tracker2'
	if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
		#VC: init the raw object
		if initFlag&vizconnect.INIT_RAW:
			#VC: set some parameters
			index = 0
			
			#VC: create the raw object
			import steamvr
			try:
				tracker = steamvr.getControllerList()[index]
			except IndexError:
				viz.logWarn("** WARNING: Not able to connect to tracker at index {0}. It's likely that not enough trackers are connected.".format(index))
				tracker = viz.addGroup()
				tracker.invalidTracker = True
			rawTracker[_name] = tracker
	
		#VC: init the wrapper (DO NOT EDIT)
		if initFlag&vizconnect.INIT_WRAPPERS:
			vizconnect.addTracker(rawTracker[_name], _name, make='Valve', model='SteamVR Controller Tracker')

	#VC: initialize a new tracker
	_name = 'steamvr_hmd_tracker'
	if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
		#VC: init the raw object
		if initFlag&vizconnect.INIT_RAW:
			#VC: set some parameters
			index = 0
			
			#VC: create the raw object
			import steamvr
			try:
				tracker = steamvr.getExtension().getHMDList()[index]
			except IndexError:
				viz.logWarn("** WARNING: Not able to connect to tracker at index {0}. It's likely that not enough trackers are connected.".format(index))
				tracker = viz.addGroup()
				tracker.invalidTracker = True
			rawTracker[_name] = tracker
	
		#VC: init the wrapper (DO NOT EDIT)
		if initFlag&vizconnect.INIT_WRAPPERS:
			vizconnect.addTracker(rawTracker[_name], _name, make='Valve', model='SteamVR HMD Tracker')
	
		#VC: init the offsets
		if initFlag&vizconnect.INIT_OFFSETS:
			_link = vizconnect.getTracker(_name).getLink()
			#VC: clear link offsets
			_link.reset(viz.RESET_OPERATORS)

	#VC: return values can be modified here
	return None
def initInputs(initFlag=vizconnect.INIT_INDEPENDENT, initList=None):
    #VC: place any general initialization code here
    rawInput = vizconnect.getRawInputDict()

    #VC: initialize a new input
    _name = 'keyboard'
    if vizconnect.isPendingInit('input', _name, initFlag, initList):
        #VC: init the raw object
        if initFlag & vizconnect.INIT_RAW:
            #VC: set some parameters
            index = 0

            #VC: create the raw object
            d = viz.add('directinput.dle')
            device = d.getKeyboardDevices()[index]
            rawInput[_name] = d.addKeyboard(device)

        #VC: init the wrapper (DO NOT EDIT)
        if initFlag & vizconnect.INIT_WRAPPERS:
            vizconnect.addInput(rawInput[_name],
                                _name,
                                make='Generic',
                                model='Keyboard')

    #VC: initialize a new input
    _name = 'r_hand_input'
    if vizconnect.isPendingInit('input', _name, initFlag, initList):
        #VC: init the raw object
        if initFlag & vizconnect.INIT_RAW:
            #VC: set some parameters
            index = 0

            #VC: create the raw object
            import steamvr
            try:
                input = steamvr.getControllerList()[index]
                input._isValid = True
            except IndexError:
                viz.logWarn(
                    "** WARNING: Not able to connect to a controller at index {0}. It's likely that not enough controllers are connected."
                    .format(index))
                input = viz.VizExtensionSensor(-1)
                input.isButtonDown = lambda e: False
                input.getTrackpad = lambda: [0, 0]
                input._isValid = False
            rawInput[_name] = input

        #VC: init the wrapper (DO NOT EDIT)
        if initFlag & vizconnect.INIT_WRAPPERS:
            vizconnect.addInput(rawInput[_name],
                                _name,
                                make='HTC',
                                model='Vive Controller')

        #VC: init the mappings for the wrapper
        if initFlag & vizconnect.INIT_WRAPPER_MAPPINGS:
            #VC: per frame mappings
            if initFlag & vizconnect.INIT_MAPPINGS_PER_FRAME:
                #VC: get the raw input dict so we have access to signals
                import vizact
                rawInput = vizconnect.getConfiguration().getRawDict('input')

                #VC: set the update function which checks for input signals
                def update(input):
                    if rawInput['r_hand_input'].isButtonDown(
                            2
                    ):  # make=HTC, model=Vive Controller, name=r_hand_input, signal=Button Trigger
                        input.setQuasimode()

                vizconnect.getInput(_name).setUpdateFunction(update)

    #VC: initialize a new input
    _name = 'l_hand_input'
    if vizconnect.isPendingInit('input', _name, initFlag, initList):
        #VC: init the raw object
        if initFlag & vizconnect.INIT_RAW:
            #VC: set some parameters
            index = 1

            #VC: create the raw object
            import steamvr
            try:
                input = steamvr.getControllerList()[index]
                input._isValid = True
            except IndexError:
                viz.logWarn(
                    "** WARNING: Not able to connect to a controller at index {0}. It's likely that not enough controllers are connected."
                    .format(index))
                input = viz.VizExtensionSensor(-1)
                input.isButtonDown = lambda e: False
                input.getTrackpad = lambda: [0, 0]
                input._isValid = False
            rawInput[_name] = input

        #VC: init the wrapper (DO NOT EDIT)
        if initFlag & vizconnect.INIT_WRAPPERS:
            vizconnect.addInput(rawInput[_name],
                                _name,
                                make='HTC',
                                model='Vive Controller')

    #VC: set the name of the default
    vizconnect.setDefault('input', 'r_hand_input')

    #VC: return values can be modified here
    return None
def initTrackers(initFlag=vizconnect.INIT_INDEPENDENT, initList=None):
	#VC: place any general initialization code here
	rawTracker = vizconnect.getRawTrackerDict()

	#VC: initialize a new tracker
	_name = 'ppt_left_eye'
	if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
		#VC: init the raw object
		if initFlag&vizconnect.INIT_RAW:
			#VC: set some parameters
			pptHostname = '171.64.33.43'
			markerId = 1
			
			#VC: create the raw object
			vrpn7 = viz.add('vrpn7.dle')
			rawTracker[_name] = vrpn7.addTracker('PPT0@'+pptHostname, markerId-1)
	
		#VC: init the wrapper (DO NOT EDIT)
		if initFlag&vizconnect.INIT_WRAPPERS:
			vizconnect.addTracker(rawTracker[_name], _name, make='WorldViz', model='PPT')

	#VC: initialize a new tracker
	_name = 'rift_orientation_tracker'
	if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
		#VC: init the raw object
		if initFlag&vizconnect.INIT_RAW:
			#VC: set some parameters
			index = 0
			
			#VC: create the raw object
			import oculus
			sensorList = oculus.getSensors()
			if index < len(sensorList):
				orientationTracker = sensorList[index]
			else:
				viz.logWarn("** WARNING: Oculus VR Rift Orientation Tracker not present.")
				orientationTracker = viz.addGroup()
				orientationTracker.invalidTracker = True
			rawTracker[_name] = orientationTracker
	
		#VC: init the wrapper (DO NOT EDIT)
		if initFlag&vizconnect.INIT_WRAPPERS:
			vizconnect.addTracker(rawTracker[_name], _name, make='Oculus VR', model='Rift Orientation Tracker')
	
		#VC: init the mappings for the wrapper
		if initFlag&vizconnect.INIT_WRAPPER_MAPPINGS:
			#VC: on-state mappings
			if initFlag&vizconnect.INIT_MAPPINGS_ON_STATE:
				vizconnect.getTracker(_name).setOnStateEventList([
						vizconnect.onstate(lambda rawInput: rawInput['keyboard'].isButtonDown(19), vizconnect.getTracker(_name).resetHeading),# make=Generic, model=Keyboard, name=keyboard, signal=Key R
				])

	#VC: initialize a new tracker
	_name = 'merged'
	if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
		#VC: request that any dependencies be created
		if initFlag&vizconnect.INIT_INDEPENDENT:
			initTrackers(vizconnect.INIT_INDEPENDENT, ['ppt_left_eye'])
			initTrackers(vizconnect.INIT_INDEPENDENT, ['rift_orientation_tracker'])
	
		#VC: init the raw object
		if initFlag&vizconnect.INIT_RAW:
			#VC: set some parameters
			posTracker = vizconnect.getTracker('ppt_left_eye').getNode3d()
			oriTracker = vizconnect.getTracker('rift_orientation_tracker').getNode3d()
			
			#VC: create the raw object
			try:
				raw = viz.mergeLinkable(posTracker, oriTracker)
			except:
				viz.logError('Error **: unable to create merged tracker, providing empty tracker object.')
				raw = viz.addGroup()
				raw.invalidTracker = True
			rawTracker[_name] = raw
	
		#VC: init the wrapper (DO NOT EDIT)
		if initFlag&vizconnect.INIT_WRAPPERS:
			vizconnect.addTracker(rawTracker[_name], _name, make='Virtual', model='Merged')
	
		#VC: init the offsets
		if initFlag&vizconnect.INIT_OFFSETS:
			_link = vizconnect.getTracker(_name).getLink()
			#VC: clear link offsets
			_link.reset(viz.RESET_OPERATORS)
			
			#VC: reset orientation
			_link.preEuler([0, 0, 0], target=viz.LINK_ORI_OP, priority=-20)

				#VC: apply offsets
			_link.preTrans([0.0975, -0.08, -0.07])

		#VC: set the parent of the node
		if initFlag&vizconnect.INIT_PARENTS:
			vizconnect.getTracker(_name).setParent(vizconnect.getTransport('wandmagiccarpet'))

	#VC: initialize a new tracker
	_name = 'rift_with_mouse_and_keyboard'
	if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
		#VC: init the raw object
		if initFlag&vizconnect.INIT_RAW:
			#VC: set some parameters
			addMouseOrientation = True
			positionSensitivity = 2.5
			heightOffset = 1.82
			sensorIndex = 0
			
			#VC: create the raw object
			import oculus
			sensorList = oculus.getSensors()
			if sensorIndex < len(sensorList):
				dk2Tracker = sensorList[sensorIndex]
				from vizconnect.util import virtual_trackers
				tracker = virtual_trackers.TrackerAndKeyboardWalking(dk2Tracker, addMouseOrientation=addMouseOrientation, positionSensitivity=positionSensitivity, heightOffset=heightOffset)
			else:
				viz.logWarn("** WARNING: Oculus Tracker not present.")
				tracker = viz.addGroup()
				tracker.invalidTracker = True
			rawTracker[_name] = tracker
	
		#VC: init the wrapper (DO NOT EDIT)
		if initFlag&vizconnect.INIT_WRAPPERS:
			vizconnect.addTracker(rawTracker[_name], _name, make='Oculus VR', model='Rift With Mouse And Keyboard')

	#VC: return values can be modified here
	return None
Exemplo n.º 17
0
def addFogEffect(mode=FOG_EXP2, color=None, density=None, start=None, end=None, height=None, colorRamp=None, radialRamp=None):
	"""Create a fog effect"""

	# Property code and default values
	propCode = []
	props = {}

	# Code for additional units
	unitCode = []

	# Get distance code
	distanceCode = 'float fogDistance = vizfx_ViewDistance;'

	# Get amount code
	if mode == FOG_LINEAR:
		propCode.append('Float vizfx_FogStart { value 0.0 }')
		propCode.append('Float vizfx_FogEnd   { value 50.0 }')
		props['vizfx_FogStart'] = start
		props['vizfx_FogEnd'] = end
		amountCode = 'float fogAmount = ( vizfx_FogEnd - fogDistance ) / ( vizfx_FogEnd - vizfx_FogStart );'

		if height is not None:
			viz.logWarn('** WARNING: Height fog not supported with linear fog')

	elif mode in (FOG_EXP,FOG_EXP2):
		propCode.append('Float vizfx_FogDensity { value 0.01 }')
		props['vizfx_FogDensity'] = density

		# Check for height factor
		if height is None:
			amountCode = ''
			densityVar = 'vizfx_FogDensity'
		else:
			propCode.append('Float vizfx_FogHeight { value 5.0 }')
			propCode.append('Float vizfx_FogHeightDensity { value 0.01 }')
			propCode.append('Float vizfx_FogHeightFalloff { value 10.0 }')
			props['vizfx_FogHeight'] = height

			# Compute view factor in vertex shader
			heightViewCode = """
			BEGIN VertexHeader
			varying float _vizfx_FogViewFactor;
			END
			BEGIN FragmentHeader
			varying float _vizfx_FogViewFactor;
			END
			BEGIN PostTransform
			_vizfx_FogViewFactor = clamp( (vizfx_FogHeight - viz_ViewMatrixInverse[3][1]) / exp2(vizfx_FogHeightFalloff), 0.0, vizfx_FogHeightDensity);
			END
			"""
			unitCode.append(heightViewCode)

			# Add height and view factor to density
			amountCode = """float density = vizfx_FogDensity;
			density += clamp( (vizfx_FogHeight - vizfx_WorldPos.y) / exp2(vizfx_FogHeightFalloff), 0.0, vizfx_FogHeightDensity) + _vizfx_FogViewFactor;
			"""

			densityVar = 'density'

		if mode == FOG_EXP:
			amountCode += 'float fogAmount = exp(-(fogDistance * {var}));'.format(var=densityVar)
		else:
			amountCode += 'float fogAmount = exp(-(fogDistance * {var} * fogDistance * {var}));'.format(var=densityVar)

	else:
		raise ValueError('Invalid fog mode: {}'.format(mode))

	# Get color code
	if radialRamp is not None:
		propCode.append("Texture2D vizfx_FogRadialRamp { coordUnit -1 }")
		props['vizfx_FogRadialRamp'] = radialRamp
		colorCode = 'vec3 fogColor = texture2D(vizfx_FogRadialRamp, vec2(1.0-fogAmount,0.5)).rgb;'

		radialRamp.wrap(viz.WRAP_S, viz.CLAMP_TO_EDGE)
		radialRamp.wrap(viz.WRAP_T, viz.CLAMP_TO_EDGE)
		radialRamp.filter(viz.MIN_FILTER, viz.LINEAR)
		radialRamp.filter(viz.MAG_FILTER, viz.LINEAR)

	elif colorRamp is not None:
		propCode.append("Texture2D vizfx_FogColorRamp { coordUnit -1 }")
		props['vizfx_FogColorRamp'] = colorRamp
		colorCode = 'vec3 fogColor = texture2D(vizfx_FogColorRamp, vec2(1.0-fogAmount,0.5)).rgb;'

		colorRamp.wrap(viz.WRAP_S, viz.CLAMP_TO_EDGE)
		colorRamp.wrap(viz.WRAP_T, viz.CLAMP_TO_EDGE)
		colorRamp.filter(viz.MIN_FILTER, viz.LINEAR)
		colorRamp.filter(viz.MAG_FILTER, viz.LINEAR)

	else:
		propCode.append('Float vizfx_FogColor { value 0 0 0 }')
		props['vizfx_FogColor'] = color
		colorCode = 'vec3 fogColor = vizfx_FogColor;'

	# Format code
	code = _fogEffect.format(properties='\n'.join(propCode), units='\n'.join(unitCode), distance=distanceCode, amount=amountCode, color=colorCode)

	# Create effect
	effect = FogEffect(code, props.keys())

	# Apply default values if specified
	if effect:
		for name,value in props.iteritems():
			if value is not None:
				effect.setProperty(name, value)

	return effect
def initTrackers(initFlag=vizconnect.INIT_INDEPENDENT, initList=None):
	#VC: place any general initialization code here
	rawTracker = vizconnect.getRawTrackerDict()

	#VC: initialize a new tracker
	_name = 'r_hand_tracker'
	if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
		#VC: init the raw object
		if initFlag&vizconnect.INIT_RAW:
			#VC: set some parameters
			scaleVelocityWithDistance = True
			extensionAccel = 100
			debug = False
			
			#VC: create the raw object
			from vizconnect.util.virtual_trackers import ScrollWheel
			rawTracker[_name] = ScrollWheel(scaleVelocityWithDistance=scaleVelocityWithDistance, extensionAccel=extensionAccel, debug=debug)
	
		#VC: init the wrapper (DO NOT EDIT)
		if initFlag&vizconnect.INIT_WRAPPERS:
			vizconnect.addTracker(rawTracker[_name], _name, make='Virtual', model='Mouse Scroll Wheel')
	
		#VC: init the offsets
		if initFlag&vizconnect.INIT_OFFSETS:
			_link = vizconnect.getTracker(_name).getLink()
			#VC: clear link offsets
			_link.reset(viz.RESET_OPERATORS)
			
			#VC: apply offsets
			_link.postTrans([0.1, -0.1, 0.4])

	#VC: initialize a new tracker
	_name = 'rift_with_mouse_and_keyboard'
	if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
		#VC: init the raw object
		if initFlag&vizconnect.INIT_RAW:
			#VC: set some parameters
			addMouseOrientation = False
			positionSensitivity = 2.5
			heightOffset = 1.82
			sensorIndex = 0
			
			#VC: create the raw object
			import oculus
			sensorList = oculus.getSensors()
			if sensorIndex < len(sensorList):
				dk2Tracker = sensorList[sensorIndex]
				from vizconnect.util import virtual_trackers
				tracker = virtual_trackers.TrackerAndKeyboardWalking(dk2Tracker, addMouseOrientation=addMouseOrientation, positionSensitivity=positionSensitivity, heightOffset=heightOffset)
			else:
				viz.logWarn("** WARNING: Oculus Tracker not present.")
				tracker = viz.addGroup()
				tracker.invalidTracker = True
			rawTracker[_name] = tracker
	
		#VC: init the wrapper (DO NOT EDIT)
		if initFlag&vizconnect.INIT_WRAPPERS:
			vizconnect.addTracker(rawTracker[_name], _name, make='Oculus VR', model='Rift With Mouse And Keyboard')
	
		#VC: set the parent of the node
		if initFlag&vizconnect.INIT_PARENTS:
			vizconnect.getTracker(_name).setParent(vizconnect.getRoot())

	#VC: return values can be modified here
	return None
def initTrackers(initFlag=vizconnect.INIT_INDEPENDENT, initList=None):
	#VC: place any general initialization code here
	rawTracker = vizconnect.getRawTrackerDict()

	#VC: initialize a new tracker
	_name = 'merged'
	if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
		#VC: request that any dependencies be created
		if initFlag&vizconnect.INIT_INDEPENDENT:
			initTrackers(vizconnect.INIT_INDEPENDENT, ['mouse_and_keyboard_flying'])
			initTrackers(vizconnect.INIT_INDEPENDENT, ['dk2'])
	
		#VC: init the raw object
		if initFlag&vizconnect.INIT_RAW:
			#VC: set some parameters
			posTracker = vizconnect.getTracker('mouse_and_keyboard_flying').getNode3d()
			oriTracker = vizconnect.getTracker('dk2').getNode3d()
			
			#VC: create the raw object
			try:
				raw = viz.mergeLinkable(posTracker, oriTracker)
			except:
				viz.logError('Error **: unable to create merged tracker, providing empty tracker object.')
				raw = viz.addGroup()
				raw.invalidTracker = True
			rawTracker[_name] = raw
	
		#VC: init the wrapper (DO NOT EDIT)
		if initFlag&vizconnect.INIT_WRAPPERS:
			vizconnect.addTracker(rawTracker[_name], _name, make='Virtual', model='Merged')

	#VC: initialize a new tracker
	_name = 'dk2'
	if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
		#VC: init the raw object
		if initFlag&vizconnect.INIT_RAW:
			#VC: set some parameters
			index = 0
			
			#VC: create the raw object
			import oculus
			sensorList = oculus.getSensors()
			if index < len(sensorList):
				orientationTracker = sensorList[index]
			else:
				viz.logWarn("** WARNING: Oculus VR Rift Orientation Tracker not present.")
				orientationTracker = viz.addGroup()
				orientationTracker.invalidTracker = True
			rawTracker[_name] = orientationTracker
	
		#VC: init the wrapper (DO NOT EDIT)
		if initFlag&vizconnect.INIT_WRAPPERS:
			vizconnect.addTracker(rawTracker[_name], _name, make='Oculus VR', model='DK2')
	
		#VC: set the parent of the node
		if initFlag&vizconnect.INIT_PARENTS:
			vizconnect.getTracker(_name).setParent(vizconnect.getRoot())

	#VC: initialize a new tracker
	_name = 'mouse_and_keyboard_flying'
	if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
		#VC: init the raw object
		if initFlag&vizconnect.INIT_RAW:
			#VC: set some parameters
			positionSensitivity = 2.5
			rotationSensitivity = 0.15
			debug = False
			
			#VC: create the raw object
			from vizconnect.util.virtual_trackers import MouseAndKeyboardFlying
			rawTracker[_name] = MouseAndKeyboardFlying(positionSensitivity=positionSensitivity, rotationSensitivity=rotationSensitivity, debug=debug)
	
		#VC: init the wrapper (DO NOT EDIT)
		if initFlag&vizconnect.INIT_WRAPPERS:
			vizconnect.addTracker(rawTracker[_name], _name, make='Virtual', model='Mouse and Keyboard Flying')
	
		#VC: set the parent of the node
		if initFlag&vizconnect.INIT_PARENTS:
			vizconnect.getTracker(_name).setParent(vizconnect.getRoot())

	#VC: return values can be modified here
	return None
Exemplo n.º 20
0
def initTrackers(initFlag=vizconnect.INIT_INDEPENDENT, initList=None):
    #VC: place any general initialization code here
    rawTracker = vizconnect.getRawTrackerDict()

    #VC: initialize a new tracker
    _name = 'head_tracker'
    if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
        #VC: request that any dependencies be created
        if initFlag & vizconnect.INIT_INDEPENDENT:
            initTrackers(vizconnect.INIT_INDEPENDENT, ['ppt_1'])
            initTrackers(vizconnect.INIT_INDEPENDENT, ['ppt_2'])
            initTrackers(vizconnect.INIT_INDEPENDENT, ['ppt_3'])
            initTrackers(vizconnect.INIT_INDEPENDENT, ['ppt_4'])
            initTrackers(vizconnect.INIT_INDEPENDENT, ['inertiacube'])

        #VC: init the raw object
        if initFlag & vizconnect.INIT_RAW:
            #VC: set some parameters
            index = 0

            #VC: create the raw object
            import steamvr
            try:
                tracker = steamvr.getExtension().getHMDList()[index]
            except IndexError:
                viz.logWarn(
                    "** WARNING: Not able to connect to tracker at index {0}. It's likely that not enough trackers are connected."
                    .format(index))
                tracker = viz.addGroup()
                tracker.invalidTracker = True
            rawTracker[_name] = tracker

        #VC: init the wrapper (DO NOT EDIT)
        if initFlag & vizconnect.INIT_WRAPPERS:
            vizconnect.addTracker(rawTracker[_name],
                                  _name,
                                  make='Valve',
                                  model='SteamVR HMD Tracker')

    #VC: initialize a new tracker
    _name = 'ppt_1'
    if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
        #VC: init the raw object
        if initFlag & vizconnect.INIT_RAW:
            #VC: set some parameters
            pptHostname = '169.254.254.71'
            markerId = 1

            #VC: create the raw object
            vrpn7 = viz.add('vrpn7.dle')
            rawTracker[_name] = vrpn7.addTracker('PPT0@' + pptHostname,
                                                 markerId - 1)

        #VC: init the wrapper (DO NOT EDIT)
        if initFlag & vizconnect.INIT_WRAPPERS:
            vizconnect.addTracker(rawTracker[_name],
                                  _name,
                                  make='WorldViz',
                                  model='PPT')

    #VC: initialize a new tracker
    _name = 'ppt_2'
    if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
        #VC: init the raw object
        if initFlag & vizconnect.INIT_RAW:
            #VC: set some parameters
            pptHostname = '169.254.254.71'
            markerId = 2

            #VC: create the raw object
            vrpn7 = viz.add('vrpn7.dle')
            rawTracker[_name] = vrpn7.addTracker('PPT0@' + pptHostname,
                                                 markerId - 1)

        #VC: init the wrapper (DO NOT EDIT)
        if initFlag & vizconnect.INIT_WRAPPERS:
            vizconnect.addTracker(rawTracker[_name],
                                  _name,
                                  make='WorldViz',
                                  model='PPT')

    #VC: initialize a new tracker
    _name = 'ppt_3'
    if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
        #VC: init the raw object
        if initFlag & vizconnect.INIT_RAW:
            #VC: set some parameters
            pptHostname = '169.254.254.71'
            markerId = 3

            #VC: create the raw object
            vrpn7 = viz.add('vrpn7.dle')
            rawTracker[_name] = vrpn7.addTracker('PPT0@' + pptHostname,
                                                 markerId - 1)

        #VC: init the wrapper (DO NOT EDIT)
        if initFlag & vizconnect.INIT_WRAPPERS:
            vizconnect.addTracker(rawTracker[_name],
                                  _name,
                                  make='WorldViz',
                                  model='PPT')

    #VC: initialize a new tracker
    _name = 'ppt_4'
    if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
        #VC: init the raw object
        if initFlag & vizconnect.INIT_RAW:
            #VC: set some parameters
            pptHostname = '169.254.254.71'
            markerId = 4

            #VC: create the raw object
            vrpn7 = viz.add('vrpn7.dle')
            rawTracker[_name] = vrpn7.addTracker('PPT0@' + pptHostname,
                                                 markerId - 1)

        #VC: init the wrapper (DO NOT EDIT)
        if initFlag & vizconnect.INIT_WRAPPERS:
            vizconnect.addTracker(rawTracker[_name],
                                  _name,
                                  make='WorldViz',
                                  model='PPT')

    #VC: initialize a new tracker
    _name = 'inertiacube'
    if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
        #VC: init the raw object
        if initFlag & vizconnect.INIT_RAW:
            #VC: set some parameters
            port = 6

            #VC: create the raw object
            isense = viz.add('intersense.dle')
            isenseTracker = isense.addTracker(port=port)
            if not isenseTracker.valid():
                viz.logWarn(
                    "** WARNING: can't connect to InterSense InertiaCube at {0}."
                    .format(port))
            rawTracker[_name] = isenseTracker

        #VC: init the wrapper (DO NOT EDIT)
        if initFlag & vizconnect.INIT_WRAPPERS:
            vizconnect.addTracker(rawTracker[_name],
                                  _name,
                                  make='InterSense',
                                  model='InertiaCube')

    #VC: initialize a new tracker
    _name = 'optical_heading'
    if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
        #VC: request that any dependencies be created
        if initFlag & vizconnect.INIT_INDEPENDENT:
            initTrackers(vizconnect.INIT_INDEPENDENT, ['ppt_3'])
            initTrackers(vizconnect.INIT_INDEPENDENT, ['ppt_4'])
            initTrackers(vizconnect.INIT_INDEPENDENT, ['inertiacube'])

        #VC: init the raw object
        if initFlag & vizconnect.INIT_RAW:
            #VC: set some parameters
            leftPosTracker = vizconnect.getTracker('ppt_3').getNode3d()
            rightPosTracker = vizconnect.getTracker('ppt_4').getNode3d()
            oriTracker = vizconnect.getTracker('inertiacube').getNode3d()
            distance = 0.195

            #VC: create the raw object
            from vizconnect.util.virtual_trackers import OpticalHeading
            rawTracker[_name] = OpticalHeading(leftPosTracker,
                                               rightPosTracker,
                                               oriTracker,
                                               distance=distance)

        #VC: init the wrapper (DO NOT EDIT)
        if initFlag & vizconnect.INIT_WRAPPERS:
            vizconnect.addTracker(rawTracker[_name],
                                  _name,
                                  make='Virtual',
                                  model='Optical Heading')

    #VC: set the name of the default
    vizconnect.setDefault('tracker', 'head_tracker')

    #VC: return values can be modified here
    return None
Exemplo n.º 21
0
def initTrackers(initFlag=vizconnect.INIT_INDEPENDENT, initList=None):
    #VC: place any general initialization code here
    rawTracker = vizconnect.getRawTrackerDict()

    #VC: initialize a new tracker
    _name = 'marker2'
    if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
        #VC: init the raw object
        if initFlag & vizconnect.INIT_RAW:
            #VC: set some parameters
            hostname = '127.0.0.1:2'
            sensorIndex = 14

            #VC: create the raw object
            try:
                phasespace = viz.add('phasespace.dle', 0, hostname)
            except:
                viz.logWarn(
                    "** WARNING: can't connect to PhaseSpace at {0}.".format(
                        hostname))

            validTracker = False
            if phasespace.id != -1:
                try:
                    sensor = phasespace.addMarker(sensorIndex)
                    validTracker = True
                except:
                    validTracker = False

            if not validTracker:
                viz.logWarn(
                    "** WARNING: can't connect to Northern Digital Optotrack with index {0}. It's likely that not enough sensors are connected."
                    .format(sensorIndex))
                sensor = viz.addGroup()
                sensor.invalidTracker = True
            rawTracker[_name] = sensor

        #VC: init the wrapper (DO NOT EDIT)
        if initFlag & vizconnect.INIT_WRAPPERS:
            vizconnect.addTracker(rawTracker[_name],
                                  _name,
                                  make='PhaseSpace',
                                  model='Marker')

    #VC: initialize a new tracker
    _name = 'look_at'
    if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
        #VC: request that any dependencies be created
        if initFlag & vizconnect.INIT_INDEPENDENT:
            initTrackers(vizconnect.INIT_INDEPENDENT, ['marker2'])
            initTrackers(vizconnect.INIT_INDEPENDENT, ['marker3'])

        #VC: init the raw object
        if initFlag & vizconnect.INIT_RAW:
            #VC: set some parameters
            eye = vizconnect.getTracker('marker2').getNode3d()
            target = vizconnect.getTracker('marker3').getNode3d()

            #VC: create the raw object
            from vizconnect.util import virtual_trackers
            if eye and target:
                raw = virtual_trackers.LookAt(eye=eye, target=target)
            else:
                viz.logError(
                    'Error **: unable to create merged tracker, providing empty tracker object.'
                )
                raw = viz.addGroup()
                raw.invalidTracker = True
            rawTracker[_name] = raw

        #VC: init the wrapper (DO NOT EDIT)
        if initFlag & vizconnect.INIT_WRAPPERS:
            vizconnect.addTracker(rawTracker[_name],
                                  _name,
                                  make='Virtual',
                                  model='Look At')

        #VC: init the offsets
        if initFlag & vizconnect.INIT_OFFSETS:
            _link = vizconnect.getTracker(_name).getLink()
            #VC: clear link offsets
            _link.reset(viz.RESET_OPERATORS)

            #VC: apply offsets
            _link.postEuler([0, 0, 2])

    #VC: initialize a new tracker
    _name = 'marker3'
    if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
        #VC: init the raw object
        if initFlag & vizconnect.INIT_RAW:
            #VC: set some parameters
            hostname = '127.0.0.1:2'
            sensorIndex = 15

            #VC: create the raw object
            try:
                phasespace = viz.add('phasespace.dle', 0, hostname)
            except:
                viz.logWarn(
                    "** WARNING: can't connect to PhaseSpace at {0}.".format(
                        hostname))

            validTracker = False
            if phasespace.id != -1:
                try:
                    sensor = phasespace.addMarker(sensorIndex)
                    validTracker = True
                except:
                    validTracker = False

            if not validTracker:
                viz.logWarn(
                    "** WARNING: can't connect to Northern Digital Optotrack with index {0}. It's likely that not enough sensors are connected."
                    .format(sensorIndex))
                sensor = viz.addGroup()
                sensor.invalidTracker = True
            rawTracker[_name] = sensor

        #VC: init the wrapper (DO NOT EDIT)
        if initFlag & vizconnect.INIT_WRAPPERS:
            vizconnect.addTracker(rawTracker[_name],
                                  _name,
                                  make='PhaseSpace',
                                  model='Marker')

    #VC: initialize a new tracker
    _name = 'head_0'
    if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
        #VC: init the raw object
        if initFlag & vizconnect.INIT_RAW:
            #VC: set some parameters
            hostname = '127.0.0.1:2'
            sensorIndex = 3

            #VC: create the raw object
            try:
                phasespace = viz.add('phasespace.dle', 0, hostname)
            except:
                viz.logWarn(
                    "** WARNING: can't connect to PhaseSpace at {0}.".format(
                        hostname))

            validTracker = False
            if phasespace.id != -1:
                try:
                    sensor = phasespace.addMarker(sensorIndex)
                    validTracker = True
                except:
                    validTracker = False

            if not validTracker:
                viz.logWarn(
                    "** WARNING: can't connect to Northern Digital Optotrack with index {0}. It's likely that not enough sensors are connected."
                    .format(sensorIndex))
                sensor = viz.addGroup()
                sensor.invalidTracker = True
            rawTracker[_name] = sensor

        #VC: init the wrapper (DO NOT EDIT)
        if initFlag & vizconnect.INIT_WRAPPERS:
            vizconnect.addTracker(rawTracker[_name],
                                  _name,
                                  make='PhaseSpace',
                                  model='Marker')

    #VC: initialize a new tracker
    _name = 'marker'
    if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
        #VC: init the raw object
        if initFlag & vizconnect.INIT_RAW:
            #VC: set some parameters
            hostname = '127.0.0.1:2'
            sensorIndex = 0

            #VC: create the raw object
            try:
                phasespace = viz.add('phasespace.dle', 0, hostname)
            except:
                viz.logWarn(
                    "** WARNING: can't connect to PhaseSpace at {0}.".format(
                        hostname))

            validTracker = False
            if phasespace.id != -1:
                try:
                    sensor = phasespace.addMarker(sensorIndex)
                    validTracker = True
                except:
                    validTracker = False

            if not validTracker:
                viz.logWarn(
                    "** WARNING: can't connect to Northern Digital Optotrack with index {0}. It's likely that not enough sensors are connected."
                    .format(sensorIndex))
                sensor = viz.addGroup()
                sensor.invalidTracker = True
            rawTracker[_name] = sensor

        #VC: init the wrapper (DO NOT EDIT)
        if initFlag & vizconnect.INIT_WRAPPERS:
            vizconnect.addTracker(rawTracker[_name],
                                  _name,
                                  make='PhaseSpace',
                                  model='Marker')

    #VC: initialize a new tracker
    _name = 'look_at2'
    if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
        #VC: request that any dependencies be created
        if initFlag & vizconnect.INIT_INDEPENDENT:
            initTrackers(vizconnect.INIT_INDEPENDENT, ['head_0'])
            initTrackers(vizconnect.INIT_INDEPENDENT, ['marker'])

        #VC: init the raw object
        if initFlag & vizconnect.INIT_RAW:
            #VC: set some parameters
            eye = vizconnect.getTracker('head_0').getNode3d()
            target = vizconnect.getTracker('marker').getNode3d()

            #VC: create the raw object
            from vizconnect.util import virtual_trackers
            if eye and target:
                raw = virtual_trackers.LookAt(eye=eye, target=target)
            else:
                viz.logError(
                    'Error **: unable to create merged tracker, providing empty tracker object.'
                )
                raw = viz.addGroup()
                raw.invalidTracker = True
            rawTracker[_name] = raw

        #VC: init the wrapper (DO NOT EDIT)
        if initFlag & vizconnect.INIT_WRAPPERS:
            vizconnect.addTracker(rawTracker[_name],
                                  _name,
                                  make='Virtual',
                                  model='Look At')

    #VC: initialize a new tracker
    _name = 'marker4'
    if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
        #VC: init the raw object
        if initFlag & vizconnect.INIT_RAW:
            #VC: set some parameters
            hostname = '127.0.0.1:2'
            sensorIndex = 21

            #VC: create the raw object
            try:
                phasespace = viz.add('phasespace.dle', 0, hostname)
            except:
                viz.logWarn(
                    "** WARNING: can't connect to PhaseSpace at {0}.".format(
                        hostname))

            validTracker = False
            if phasespace.id != -1:
                try:
                    sensor = phasespace.addMarker(sensorIndex)
                    validTracker = True
                except:
                    validTracker = False

            if not validTracker:
                viz.logWarn(
                    "** WARNING: can't connect to Northern Digital Optotrack with index {0}. It's likely that not enough sensors are connected."
                    .format(sensorIndex))
                sensor = viz.addGroup()
                sensor.invalidTracker = True
            rawTracker[_name] = sensor

        #VC: init the wrapper (DO NOT EDIT)
        if initFlag & vizconnect.INIT_WRAPPERS:
            vizconnect.addTracker(rawTracker[_name],
                                  _name,
                                  make='PhaseSpace',
                                  model='Marker')

    #VC: initialize a new tracker
    _name = 'marker5'
    if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
        #VC: init the raw object
        if initFlag & vizconnect.INIT_RAW:
            #VC: set some parameters
            hostname = '127.0.0.1:2'
            sensorIndex = 22

            #VC: create the raw object
            try:
                phasespace = viz.add('phasespace.dle', 0, hostname)
            except:
                viz.logWarn(
                    "** WARNING: can't connect to PhaseSpace at {0}.".format(
                        hostname))

            validTracker = False
            if phasespace.id != -1:
                try:
                    sensor = phasespace.addMarker(sensorIndex)
                    validTracker = True
                except:
                    validTracker = False

            if not validTracker:
                viz.logWarn(
                    "** WARNING: can't connect to Northern Digital Optotrack with index {0}. It's likely that not enough sensors are connected."
                    .format(sensorIndex))
                sensor = viz.addGroup()
                sensor.invalidTracker = True
            rawTracker[_name] = sensor

        #VC: init the wrapper (DO NOT EDIT)
        if initFlag & vizconnect.INIT_WRAPPERS:
            vizconnect.addTracker(rawTracker[_name],
                                  _name,
                                  make='PhaseSpace',
                                  model='Marker')

    #VC: initialize a new tracker
    _name = 'look_at3'
    if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
        #VC: request that any dependencies be created
        if initFlag & vizconnect.INIT_INDEPENDENT:
            initTrackers(vizconnect.INIT_INDEPENDENT, ['marker4'])
            initTrackers(vizconnect.INIT_INDEPENDENT, ['marker5'])

        #VC: init the raw object
        if initFlag & vizconnect.INIT_RAW:
            #VC: set some parameters
            eye = vizconnect.getTracker('marker4').getNode3d()
            target = vizconnect.getTracker('marker5').getNode3d()

            #VC: create the raw object
            from vizconnect.util import virtual_trackers
            if eye and target:
                raw = virtual_trackers.LookAt(eye=eye, target=target)
            else:
                viz.logError(
                    'Error **: unable to create merged tracker, providing empty tracker object.'
                )
                raw = viz.addGroup()
                raw.invalidTracker = True
            rawTracker[_name] = raw

        #VC: init the wrapper (DO NOT EDIT)
        if initFlag & vizconnect.INIT_WRAPPERS:
            vizconnect.addTracker(rawTracker[_name],
                                  _name,
                                  make='Virtual',
                                  model='Look At')

    #VC: initialize a new tracker
    _name = 'marker6'
    if vizconnect.isPendingInit('tracker', _name, initFlag, initList):
        #VC: init the raw object
        if initFlag & vizconnect.INIT_RAW:
            #VC: set some parameters
            hostname = '127.0.0.1:2'
            sensorIndex = 12

            #VC: create the raw object
            try:
                phasespace = viz.add('phasespace.dle', 0, hostname)
            except:
                viz.logWarn(
                    "** WARNING: can't connect to PhaseSpace at {0}.".format(
                        hostname))

            validTracker = False
            if phasespace.id != -1:
                try:
                    sensor = phasespace.addMarker(sensorIndex)
                    validTracker = True
                except:
                    validTracker = False

            if not validTracker:
                viz.logWarn(
                    "** WARNING: can't connect to Northern Digital Optotrack with index {0}. It's likely that not enough sensors are connected."
                    .format(sensorIndex))
                sensor = viz.addGroup()
                sensor.invalidTracker = True
            rawTracker[_name] = sensor

        #VC: init the wrapper (DO NOT EDIT)
        if initFlag & vizconnect.INIT_WRAPPERS:
            vizconnect.addTracker(rawTracker[_name],
                                  _name,
                                  make='PhaseSpace',
                                  model='Marker')

    #VC: return values can be modified here
    return None