def addUser(): global mainUser # ---- Trackers ---- # Initialize an empty composite object to store all the trackers # The composite.storeTracker() method is used to combine the individual trackers for the user's body within the composite composite = VU.VUCompositeTrackers() vrpn = viz.add('vrpn7.dle') headPos = vrpn.addTracker( 'PPT0@'+PPT_MACHINE,PPT_HEAD_ID) if not OPTICAL_HEADING: iLabs = viz.addExtension( 'inertiallabs.dle' ) headOri = iLabs.addSensorBus(port=INERTIALLABS_HEAD_PORT)[0] VU.onkeydownspecial('r', resetHead, headOri, 90 ) # ---- Display ---- import sensics sensics.zSight_60() if not OPTICAL_HEADING: headTracker = viz.mergeLinkable( headPos, headOri ) else: headTracker = headPos composite.storeTracker (composite.HEAD, headTracker ) viz.setOption('viz.fullscreen', 1 ) # Go fullscreen on monitor 1 viz.setOption('viz.fov', [37.5, 1.25]) # Set fov to match sensics specs viz.setOption('viz.setDisplayMode', [1280,1024]) # Change resolution of displays # ---- Input ---- wandpos = vrpn.addTracker('PPT0@' + PPT_MACHINE, PPT_WAND_ID) wandori = iLabs.addSensorBus(port=INERTIALLABS_HAND_PORT)[0] wandtracker = viz.mergeLinkable( wandpos, wandori ) # wandjoy = VU.VUJoystickPPTWandVRPN(hostname=PPT_MACHINE, markerid=PPT_WAND_ID+1) # wandflyer = VU.VUTrackerWandFlyerSmooth(wandjoy, wandtracker,accelerationSteps=Config.WAND_ACCELERATION_STEPS, decelerationSteps=Config.WAND_DECELERATION_STEPS, speed=Config.WAND_SPEED_SCALE, keystrokes=[Config.WAND_BUTTON1,Config.WAND_BUTTON2,Config.WAND_BUTTON3,Config.WAND_BUTTON4,Config.WAND_BUTTON5,Config.WAND_BUTTON6],buttonReset=None, buttonForward=None, buttonFist=None, oriSteer=False ) # wandflyer.getHandSensor().joystick = wandjoy # composite.addDriverNode(wandflyer) # composite.storeTracker( composite.RHAND, wandtracker ) #the following is beta: global main_sphere composite.storeTracker(composite.RHAND,wandtracker) viz.link(wandtracker, main_sphere) #end beta. #not sure if u need this in beta: composite.createRightHand(wandori) VU.onkeydownspecial('r', resetHand, wandori, 90 ) # composite.storeTracker( composite.RHAND, wandtracker ) #composite.createRightHand(wandori) # viz.link(wandtracker,ball) # ---- Avatar ---- composite.createAvatarNone() # ---- Finalize Composite ---- composite.finishTrackers() # Build up internal links for all the tracking devices composite.defineViewpoint() # Attach viewpoint to default location on the user mainUser = composite manager.addComposite(mainUser, 'Main-User')
def _setupHeadTrackers(hmd, OH): global vrpn if vrpn is None: vrpn = viz.add('vrpn7.dle') POS_TRACKER = vrpn.addTracker(PPT_ADDRESS, 0) ORI_TRACKER = hmd.getSensor() if OH: print 'vhil_devkit: Optical heading setup not yet implemented - set OH to False.' else: tracker = viz.mergeLinkable(POS_TRACKER, ORI_TRACKER) oculusViewLink = viz.link(tracker, MainView) oculusViewLink.preTrans(OCULUSVIEWLINK_PRETRANS)
def setup(): global lhPPT, rhPPT, headPPT, headLink; global lhSphere, rhSphere nvis.nvisorSX111(); #nvis.nvisorSX60(); viz.mouse.setVisible(False) #viz.cursor(viz.OFF); view = viz.MainView isense = viz.add('intersense.dle') headTracker = isense.addTracker(port=1) vizact.onkeydown('r',headTracker.resetHeading) vrpn = viz.add('vrpn7.dle'); PPT_HOSTNAME = '171.64.33.43'; headPPTorig = vrpn.addTracker('PPT0@' + PPT_HOSTNAME, 0); #Merge two links together headPPT = viz.mergeLinkable(headPPTorig,headTracker) headLink = viz.link(headPPT, viz.MainView); headLink.postTrans([EYE_VECTOR[0], EYE_VECTOR[1], EYE_VECTOR[2]]); #now add the PPT hands tracker rhPPT = vrpn.addTracker('PPT0@' + PPT_HOSTNAME, 1) lhPPT = vrpn.addTracker('PPT0@' + PPT_HOSTNAME, 2) grid = vizshape.addGrid(); grid.color([0.5] * 3); viz.callback(viz.KEYDOWN_EVENT, onKeyDown); if(DEBUG_MODE): print "adding spheres"; rhSphere = vizshape.addSphere(radius = 0.1, color = viz.WHITE); lhSphere = vizshape.addSphere(radius = 0.1, color = viz.WHITE); rfSphere = vizshape.addSphere(radius = 0.1, color = viz.WHITE); lfSphere = vizshape.addSphere(radius = 0.1, color = viz.WHITE); return;
def link(tracker, target, ori=None, offset=[0, 0, 0], pre_trans=[0, 0, 0]): """ Link the tracker to a target (with an optional rotation sensor ori) :param tracker: tracker to be linked :param target: target to link to :param ori: orientation tracker :param offset: offset from tracker to target :param pre_trans: pre multiplied with input matrix :return: link object """ if ori: # merge orientation and position trackers merged_trackers = viz.mergeLinkable(pos=tracker, ori=ori) else: merged_trackers = tracker # link to target (usually viz.MainView or an object like a glove) complete_link = viz.link(merged_trackers, target) complete_link.setOffset(offset) # distance between tracker and actual position of target complete_link.preTrans(pre_trans) # TODO: maybe different solution (offsets and stuff) return complete_link
def setup(): global leftWristPPT, rightWristPPT, lfPPT, rfPPT, headPPT, viewLink, navigationNode global lhSphere, rhSphere global hmdLink #add more trackers for trying things out global rightFingersPPT, leftFingersPPT, leftForeArmPPT, rightForeArmPPT, rightHandViveController, leftHandViveController #nvis.nvisorSX111(); #nvis.nvisorSX60(); #try the oculus rift hmd = None headOriTracker = None if some_global_variables.PPT1: vrpn = viz.add('vrpn7.dle') #trying to connect the vive now if not some_global_variables.DONT_USE_VIVE: hmd = steamvr.HMD() headOriTracker = hmd.getSensor() headPosTracker = None headPosLink = None if headOriTracker is None: print "HTC Vive is not connected. Trying Oculus Rift now" hmd = oculus.Rift() headOriTracker = hmd.getSensor() if headOriTracker is None: print "Rift is also not connected!" else: print "Connected to Rift!" vizact.onkeydown('r',headOriTracker.reset) if some_global_variables.PPT1: headPosTracker = vrpn.addTracker('PPT0@' + some_global_variables.PPT_HOSTNAME, some_global_variables.PPT_HEAD_VIRTUAL_ID - 1) headPosTrackerNode = viz.addGroup() headPosLink = viz.link(headPosTracker, headPosTrackerNode) headPosLink.preTrans(list(EYE_VECTOR)) else: print "Connected to Vive!" #Merge position and orientation links for the head tracker, if needed if headPosLink is not None: #using DK2 in PPT1 with a PPT marker for head tracking headPPT = viz.mergeLinkable(headPosLink,headOriTracker) else: #like using vive, or DK2 outside PPT1 headPPT = headOriTracker if headOriTracker is not None: some_global_variables.headTrackingActive = True viz.mouse.setVisible(False) #viz.cursor(viz.OFF); view = viz.MainView viewLink = None navigationNode = viz.addGroup() viewLink = viz.link(navigationNode, viz.MainView) if headPPT is not None: viewLink.preMultLinkable(headPPT) if not some_global_variables.PPT1: viewLink.setOffset([0,1.4,0]) # viewLink = viz.link(headPPT, viz.MainView) #viewLink.postTrans([EYE_VECTOR[0], EYE_VECTOR[1], EYE_VECTOR[2]]) #hmdLink.preTrans(EYE_VECTOR) #view.preTrans(EYE_VECTOR) #headPPT.preTrans([0,10,0]); #now add the PPT hands tracker if some_global_variables.PPT1: rightForeArmPPT = vrpn.addTracker('PPT0@' + some_global_variables.PPT_HOSTNAME, some_global_variables.PPT_RIGHT_FOREARM_VIRTUAL_ID-1) if rightForeArmPPT is not None: print "right forearm tracker is active with virtual PPT ID = " + str(some_global_variables.PPT_RIGHT_FOREARM_VIRTUAL_ID) leftForeArmPPT = vrpn.addTracker('PPT0@' + some_global_variables.PPT_HOSTNAME, some_global_variables.PPT_LEFT_FOREARM_VIRTUAL_ID-1) if leftForeArmPPT is not None: print "left forearm tracker is active with virtual PPT ID = " + str(some_global_variables.PPT_LEFT_FOREARM_VIRTUAL_ID) appendageControlWithVive = vizinput.choose('Using Vive controllers or a bunch of PPT markers?', ['Vive','4 extra PPT marker!']) if appendageControlWithVive == 0: #using vive hand controllers some_global_variables.usingViveHandControllers = True viveHandControllerList = steamvr.getControllerList() controllerCount = 0 for controller in steamvr.getControllerList(): controllerCount += 1 #Right Hand Controller Setup if controllerCount == 1: rightHandViveController = viveHandControllerList[0] #Left Hand Controller Setup elif controllerCount == 2: leftHandViveController = viveHandControllerList[1] else: #using four extra PPT markers - could be noisy due to interference rightFingersPPT = vrpn.addTracker('PPT0@' + some_global_variables.PPT_HOSTNAME, some_global_variables.PPT_RIGHT_FINGERS_VIRTUAL_ID-1) if rightFingersPPT is not None: print "right fingers tracker is active with virtual PPT ID = " + str(some_global_variables.PPT_RIGHT_FINGERS_VIRTUAL_ID) leftFingersPPT = vrpn.addTracker('PPT0@' + some_global_variables.PPT_HOSTNAME, some_global_variables.PPT_LEFT_FINGERS_VIRTUAL_ID-1) if leftFingersPPT is not None: print "left fingers tracker is active with virtual PPT ID = " + str(some_global_variables.PPT_LEFT_FINGERS_VIRTUAL_ID) rightWristPPT = vrpn.addTracker('PPT0@' + some_global_variables.PPT_HOSTNAME, some_global_variables.PPT_RIGHT_WRIST_VIRTUAL_ID-1) if rightWristPPT is not None: print "right wrist tracker is active with virtual PPT ID = " + str(some_global_variables.PPT_RIGHT_WRIST_VIRTUAL_ID) leftWristPPT = vrpn.addTracker('PPT0@' + some_global_variables.PPT_HOSTNAME, some_global_variables.PPT_LEFT_WRIST_VIRTUAL_ID-1) if leftWristPPT is not None: print "left wrist tracker is active with virtual PPT ID = " + str(some_global_variables.PPT_LEFT_WRIST_VIRTUAL_ID) grid = vizshape.addGrid() grid.color([0.5] * 3) viz.callback(viz.KEYDOWN_EVENT, onKeyDown) if(DEBUG_MODE): print "adding spheres"; rhSphere = vizshape.addSphere(radius = 0.1, color = viz.WHITE); lhSphere = vizshape.addSphere(radius = 0.1, color = viz.WHITE); rfSphere = vizshape.addSphere(radius = 0.1, color = viz.WHITE); lfSphere = vizshape.addSphere(radius = 0.1, color = viz.WHITE); return
def setup(isLeftHanded): global lhPPT, rhPPT, lfPPT, rfPPT, headPPT, headLink, headPPTmarker, rhPPTlink, lhPPTlink, offsetTimerEvent global lhSphere, rhSphere global riftLink #nvis.nvisorSX111(); #nvis.nvisorSX60(); viz.mouse.setVisible(False) #viz.cursor(viz.OFF); view = viz.MainView #isense = viz.add('intersense.dle') #headTracker = isense.addTracker(port=1) vrpn = viz.add('vrpn7.dle'); PPT_HOSTNAME = '171.64.33.43'; #ading the headPPT marker # headPPTmarker = vrpn.addTracker('PPT0@' + PPT_HOSTNAME, 0); headPPTmarker = vrpn.addTracker('PPT0@' + PPT_HOSTNAME, some_global_variables.headPPTmarkerVirtualID - 1); headMarkerNode = viz.addGroup() headMarker = viz.link(headPPTmarker, headMarkerNode) # headMarker.preTrans(list(EYE_VECTOR)) # headMarker.setOffset(some_global_variables.pptMarkerWeirdOffset) #now add the PPT hands tracker if isLeftHanded == 0: #user right-handed # rhPPT = vrpn.addTracker('PPT0@' + PPT_HOSTNAME, 1) # rhPPT = vrpn.addTracker('PPT0@' + PPT_HOSTNAME, some_global_variables.rhPPTmarkerVirtualID - 1) rhPPTmarker = vrpn.addTracker('PPT0@' + PPT_HOSTNAME, some_global_variables.rhPPTmarkerVirtualID - 1) # lhPPT = vrpn.addTracker('PPT0@' + PPT_HOSTNAME, 2) lhPPTmarker = vrpn.addTracker('PPT0@' + PPT_HOSTNAME, some_global_variables.lhPPTmarkerVirtualID - 1) else: #user left-handed # rhPPT = vrpn.addTracker('PPT0@' + PPT_HOSTNAME, 2) rhPPTmarker = vrpn.addTracker('PPT0@' + PPT_HOSTNAME, some_global_variables.rhPPTmarkerVirtualID) # lhPPT = vrpn.addTracker('PPT0@' + PPT_HOSTNAME, 1) lhPPTmarker = vrpn.addTracker('PPT0@' + PPT_HOSTNAME, some_global_variables.lhPPTmarkerVirtualID) if USE_LEG: rfPPT = vrpn.addTracker('PPT0@' + PPT_HOSTNAME, 3) lfPPT = vrpn.addTracker('PPT0@' + PPT_HOSTNAME, 4) headPPT = None headTracker = None #loading rift #rift = oculus.Rift() #headTracker = rift.getSensor() if headTracker is None: #DK2 not found, trying the vive now hmd = steamvr.HMD() headTracker = hmd.getSensor() headPPT = headTracker #activating a timer to adjust the PPT-Vive offset at runtime if some_global_variables.ADJUST_PPT_VIVE_OFFSET_AT_RUNTIME: offsetTimerEvent = vizact.ontimer(0, offsetTimer) else: vizact.onkeydown('r',headTracker.reset) headPPT = viz.mergeLinkable(headMarker,headTracker) #if rift is not available #Merge two links together #headPPT = viz.mergeLinkable(headPPTmarker,headTracker) headLink = viz.link(headPPT, viz.MainView); #headLink.postTrans([EYE_VECTOR[0], EYE_VECTOR[1], EYE_VECTOR[2]]); riftLink = headLink #riftLink.preTrans(EYE_VECTOR) #view.preTrans(EYE_VECTOR) #headPPT.preTrans([0,10,0]); rhPPT = viz.addGroup() rhPPTlink = viz.link(rhPPTmarker, rhPPT) # rhPPTlink.setOffset(some_global_variables.pptMarkerWeirdOffset) lhPPT = viz.addGroup() lhPPTlink = viz.link(lhPPTmarker, lhPPT) # lhPPTlink.setOffset(some_global_variables.pptMarkerWeirdOffset) grid = vizshape.addGrid(); grid.color([0.5] * 3); viz.callback(viz.KEYDOWN_EVENT, onKeyDown); if(DEBUG_MODE): print "adding spheres"; rhSphere = vizshape.addSphere(radius = 0.1, color = viz.WHITE); lhSphere = vizshape.addSphere(radius = 0.1, color = viz.WHITE); rfSphere = vizshape.addSphere(radius = 0.1, color = viz.WHITE); lfSphere = vizshape.addSphere(radius = 0.1, color = viz.WHITE); return;
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 = '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
cardisplay.setPosition(0.9, 0.02) geardisplay = viz.addTextbox() geardisplay.setPosition(0.11, 0.915) headLight = viz.MainView.getHeadLight() headLight.disable() myLight = viz.addLight() view = viz.MainView if environmentchoice == 0: myLight.intensity(1) else: myLight.intensity(0.25) myLight.setEuler(45, 12, 0) camera = vizconnect.getTransport('orientation') rotcam = viz.link(offsetNode, camera.getNode3d()) viz.mergeLinkable(rotcam, view) def ChangeCar(direction): global carchoice global speed global accel global steer if direction == 2: carchoice += 1 if carchoice > NUM_CARS: carchoice = 1 else: carchoice -= 1 if carchoice <= 0: carchoice = NUM_CARS
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
OCULUSVIEWLINK_PRETRANS = [0.195/2, -0.08, -0.07] x = 0 viz.go() if RIFT: hmd = oculus.Rift() # PPT1 code if PPT1: # setup the head tracker vrpn = viz.add('vrpn7.dle') POS_TRACKER = vrpn.addTracker(PPT_ADDRESS, 0) ORI_TRACKER = hmd.getSensor() tracker = viz.mergeLinkable(POS_TRACKER, ORI_TRACKER) oculusViewLink = viz.link(tracker, viz.MainView) oculusViewLink.preTrans(OCULUSVIEWLINK_PRETRANS) if OBJ: OBJ_TRACKER = vrpn.addTracker(PPT_ADDRESS, 4) else: oculusLink = viz.link(hmd.getSensor(), viz.MainView, mask=viz.LINK_ORI) #add bus BUS_OBJ_SCALE = .0365 BUS_OSGB_SCALE = 35 curscale = BUS_OSGB_SCALE bus = viz.add('bus_obj/Bus_Sept3.OSGB') bus.setScale([curscale]*3)