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
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
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")
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
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
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
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
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')
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()
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
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
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
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
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