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 trackerIndex = -1 speed = 0.5 debug = False #VC: create the raw object from vizconnect.util.virtual_trackers import Keyboard rawTracker[_name] = Keyboard(trackerIndex=trackerIndex, speed=speed, debug=debug) #VC: init the wrapper (DO NOT EDIT) if initFlag & vizconnect.INIT_WRAPPERS: vizconnect.addTracker(rawTracker[_name], _name, make='Virtual', model='Keyboard') #VC: set the parent of the node if initFlag & vizconnect.INIT_PARENTS: vizconnect.getTracker(_name).setParent(vizconnect.getRoot()) #VC: initialize a new tracker _name = 'l_hand_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: set the parent of the node if initFlag & vizconnect.INIT_PARENTS: vizconnect.getTracker(_name).setParent(vizconnect.getRoot()) #VC: set the name of the default vizconnect.setDefault('tracker', 'r_hand_tracker') #VC: return values can be modified here return None
def initAvatars(initFlag=vizconnect.INIT_INDEPENDENT, initList=None): #VC: place any general initialization code here rawAvatar = vizconnect.getRawAvatarDict() #VC: initialize a new avatar _name = 'male' if vizconnect.isPendingInit('avatar', _name, initFlag, initList): #VC: init the raw object if initFlag & vizconnect.INIT_RAW: #VC: create the raw object avatar = viz.add('vcc_male.cfg') avatar._bodyPartDict = {} avatar._handModelDict = {} rawAvatar[_name] = avatar #VC: init the wrapper (DO NOT EDIT) if initFlag & vizconnect.INIT_WRAPPERS: vizconnect.addAvatar(rawAvatar[_name], _name, make='Complete Characters', model='Male') #VC: init the animator if initFlag & vizconnect.INIT_ANIMATOR: # need to get the raw tracker dict for animating the avatars from vizconnect.util.avatar import animator from vizconnect.util.avatar import skeleton # get the skeleton from the avatar _skeleton = skeleton.CompleteCharacters(rawAvatar[_name]) #VC: set which trackers animate which body part # format is: bone: (tracker, parent, degrees of freedom used) _trackerAssignmentDict = { vizconnect.AVATAR_HEAD: (vizconnect.getTracker('look_at2').getNode3d(), None, vizconnect.DOF_6DOF), vizconnect.AVATAR_L_FOREARM: (vizconnect.getTracker('marker6').getNode3d(), None, vizconnect.DOF_6DOF), vizconnect.AVATAR_L_HAND: (vizconnect.getTracker('look_at').getNode3d(), None, vizconnect.DOF_6DOF), vizconnect.AVATAR_R_HAND: (vizconnect.getTracker('look_at3').getNode3d(), None, vizconnect.DOF_6DOF), } #VC: create the raw object _rawAnimator = animator.InverseKinematics(rawAvatar[_name], _skeleton, _trackerAssignmentDict) #VC: set animator in wrapper (DO NOT EDIT) vizconnect.getAvatar(_name).setAnimator(_rawAnimator, make='WorldViz', model='Inverse Kinematics') #VC: return values can be modified here return None
def getCameraPosition(): # may change in future, but currently cameras have 6cm ipd r_camera.setEuler(vizconnect.getTracker('optical_heading').getEuler()) r_camera.setPosition( vizconnect.getTracker('optical_heading').getPosition() + [0.03, 0, 0]) l_camera.setEuler(vizconnect.getTracker('optical_heading').getEuler()) l_camera.setPosition( vizconnect.getTracker('optical_heading').getPosition() + [-0.03, 0, 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(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 rotationSensitivity = 0.15 debug = False #VC: create the raw object from vizconnect.util.virtual_trackers import MouseOrientation rawTracker[_name] = MouseOrientation(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 Orientation') #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.7, 0]) #VC: return values can be modified here return None
def initDisplays(initFlag=vizconnect.INIT_INDEPENDENT, initList=None): #VC: place any general initialization code here rawDisplay = vizconnect.getRawDisplayDict() #VC: initialize a new display _name = 'custom_window' if vizconnect.isPendingInit('display', _name, initFlag, initList): #VC: init the raw object if initFlag&vizconnect.INIT_RAW: #VC: set the window for the display _window = viz.MainWindow #VC: set some parameters VFOV = 60 aspect = viz.AUTO_COMPUTE stereo = viz.OFF #VC: create the raw object _window.fov(VFOV,aspect) _window.stereo(stereo) rawDisplay[_name] = _window #VC: init the wrapper (DO NOT EDIT) if initFlag&vizconnect.INIT_WRAPPERS: vizconnect.addDisplay(rawDisplay[_name], _name, make='Generic', model='Custom Window') #VC: set the parent of the node if initFlag&vizconnect.INIT_PARENTS: vizconnect.getDisplay(_name).setParent(vizconnect.getTracker('mouse_and_keyboard_walking')) #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 = '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 postInit(): """Add any code here which should be called after all of the initialization of this configuration is complete. Returned values can be obtained by calling getPostInitResult for this file's vizconnect.Configuration instance.""" vizconnect.getTracker('dtrack_head').getRaw().swapPos([1, 2, -3]) vizconnect.getTracker('dtrack_head').getRaw().swapQuat([-1, -2, 3, 4]) vizconnect.getTracker('dtrack_flystick').getRaw().swapPos([1, 2, -3]) vizconnect.getTracker('dtrack_flystick').getRaw().swapQuat([-1, -2, 3, 4]) return None
def initTransports(initFlag=vizconnect.INIT_INDEPENDENT, initList=None): #VC: place any general initialization code here rawTransport = vizconnect.getRawTransportDict() #VC: initialize a new transport _name = 'main_transport' if vizconnect.isPendingInit('transport', _name, initFlag, initList): #VC: request that any dependencies be created if initFlag&vizconnect.INIT_INDEPENDENT: initTrackers(vizconnect.INIT_INDEPENDENT, ['head_tracker']) #VC: init the raw object if initFlag&vizconnect.INIT_RAW: #VC: set some parameters orientationTracker = vizconnect.getTracker('head_tracker').getNode3d() debug = False acceleration = 2 maxSpeed = 2 rotationAcceleration = 60 maxRotationSpeed = 65 autoBreakingDragCoef = 0.1 dragCoef = 0.0001 rotationAutoBreakingDragCoef = 0.2 rotationDragCoef = 0.0001 usingPhysics = False parentedTracker = False transportationGroup = None #VC: create the raw object from transportation import wand_magic_carpet rawTransport[_name] = wand_magic_carpet.WandMagicCarpet( orientationTracker=orientationTracker, debug=debug, acceleration=acceleration, maxSpeed=maxSpeed, rotationAcceleration=rotationAcceleration, maxRotationSpeed=maxRotationSpeed, autoBreakingDragCoef=autoBreakingDragCoef, dragCoef=dragCoef, rotationAutoBreakingDragCoef=rotationAutoBreakingDragCoef, rotationDragCoef=rotationDragCoef, usingPhysics=usingPhysics, parentedTracker=parentedTracker, node=transportationGroup) #VC: init the wrapper (DO NOT EDIT) if initFlag&vizconnect.INIT_WRAPPERS: vizconnect.addTransport(rawTransport[_name], _name, make='Virtual', model='WandMagicCarpet') #VC: set the pivot of the node if initFlag&vizconnect.INIT_PIVOTS: vizconnect.getTransport(_name).setPivot(vizconnect.getAvatar('main_avatar').getAttachmentPoint('head').getNode3d()) #VC: set the name of the default vizconnect.setDefault('transport', 'main_transport') #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 initAvatars(initFlag=vizconnect.INIT_INDEPENDENT, initList=None): #VC: place any general initialization code here rawAvatar = vizconnect.getRawAvatarDict() #VC: initialize a new avatar _name = 'female' if vizconnect.isPendingInit('avatar', _name, initFlag, initList): #VC: init the raw object if initFlag&vizconnect.INIT_RAW: #VC: create the raw object avatar = viz.add('vcc_female.cfg') avatar._bodyPartDict = {} avatar._handModelDict = {} rawAvatar[_name] = avatar #VC: init the wrapper (DO NOT EDIT) if initFlag&vizconnect.INIT_WRAPPERS: vizconnect.addAvatar(rawAvatar[_name], _name, make='Complete Characters', model='Female') #VC: init the animator if initFlag&vizconnect.INIT_ANIMATOR: # need to get the raw tracker dict for animating the avatars from vizconnect.util.avatar import animator from vizconnect.util.avatar import skeleton # get the skeleton from the avatar _skeleton = skeleton.CompleteCharacters(rawAvatar[_name]) #VC: set which trackers animate which body part # format is: bone: (tracker, parent, degrees of freedom used) _trackerAssignmentDict = { vizconnect.AVATAR_HEAD:(vizconnect.getTracker('rift_orientation_tracker').getNode3d(), None, vizconnect.DOF_ORI), } #VC: create the raw object _rawAnimator = animator.InverseKinematics(rawAvatar[_name], _skeleton, _trackerAssignmentDict) #VC: set animator in wrapper (DO NOT EDIT) vizconnect.getAvatar(_name).setAnimator(_rawAnimator, make='WorldViz', model='Inverse Kinematics') #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.getAvatar(_name).setOnStateEventList([ vizconnect.onstate(lambda rawInput: rawInput['joystick'].isButtonDown(3), vizconnect.getAvatar(_name).setVisible),# make=Generic, model=Joystick, name=joystick, signal=Button 3 ]) #VC: set the parent of the node if initFlag&vizconnect.INIT_PARENTS: vizconnect.getAvatar(_name).setParent(vizconnect.getTransport('walking')) #VC: return values can be modified here return None
def __init__(self, cfg, enabled=1, displayList=None): type = cfg['type'] offset = cfg['offset'] overlap = cfg['overlap'] fov = cfg['fov'] #self.hmdstats = self.HMDStats(offset, overlap) self.enabled = enabled if enabled: if 'nvis' == type: import nvis self.hmd = nvis.nvisorSX111() #vizconfig.register(self.hmd) print "HMD type: NVIS SX111" print '*** Offset:' + str(viz.MainWindow.getViewOffset()) elif 'oculus' == type: import oculus self.hmd = oculus.Rift() print "HMD type: Oculus Rift" #vizconfig.register(self.hmd) #self.updateOverlap(self.hmdstats.overlap-self.hmd._overlap) elif 'DK2' == type: self.setupOculusMon(displayList) self.hmd = vizconnect.getTracker('rift') else: print "Unsupported HMD type when starting HMD" sys.exit(1) # import vizconfig # vizconfig.register(self.hmd) if (overlap > -1): self.updateOverlap(self.hmdstats.overlap - self.hmd._overlap) else: defaultOverlap = 100 self.hmdstats = self.HMDStats(viz.MainWindow.getViewOffset, defaultOverlap) #print 'After: ' + str(viz.MainWindow.getViewOffset()) + str(viz.MainWindow.stereoOverlap()) #self.hmdstats = self.HMDStats(viz.MainWindow.getViewOffset, viz.MainWindow.stereoOverlap) else: self.hmd = None print "HMD disabled"
def initAvatarMovement(name): rawAvatar = vizconnect.getRawAvatar(name) from vizconnect.util.avatar import animator from vizconnect.util.avatar import skeleton # get the skeleton from the avatar _skeleton = skeleton.HumanAutoParse(rawAvatar) #VC: set which trackers animate which body part # format is: bone: (tracker, parent, degrees of freedom used) _trackerAssignmentDict = { vizconnect.AVATAR_HEAD:(vizconnect.getTracker('steamvr_hmd_tracker').getNode3d(), None, vizconnect.DOF_6DOF), vizconnect.AVATAR_L_HAND:(vizconnect.getTracker('steamvr_controller_tracker').getNode3d(), None, vizconnect.DOF_6DOF), vizconnect.AVATAR_R_HAND:(vizconnect.getTracker('steamvr_controller_tracker2').getNode3d(), None, vizconnect.DOF_6DOF), } #VC: create the raw object _rawAnimator = animator.InverseKinematics(rawAvatar, _skeleton, _trackerAssignmentDict) #VC: set animator in wrapper (DO NOT EDIT) vizconnect.getAvatar(name).setAnimator(_rawAnimator, make='WorldViz', model='Inverse Kinematics')
def initDisplays(initFlag=vizconnect.INIT_INDEPENDENT, initList=None): #VC: place any general initialization code here rawDisplay = vizconnect.getRawDisplayDict() #VC: initialize a new display _name = 'zsight_60' if vizconnect.isPendingInit('display', _name, initFlag, initList): #VC: init the raw object if initFlag & vizconnect.INIT_RAW: #VC: set the window for the display _window = viz.MainWindow #VC: set the fullscreen monitor viz.window.setFullscreenMonitor(0) viz.window.setFullscreen(True) #VC: set some parameters Hofs = [0, 0] Vofs = [0, 0] Rofs = [0, 0] VerticalSpan = False #VC: create the raw object import sensics sensics.zSight_60(stereo=[viz.STEREO_HORZ, viz.STEREO_VERT][VerticalSpan], leftHorizontalShift=Hofs[0], rightHorizontalShift=Hofs[1], leftVerticalShift=Vofs[0], rightVerticalShift=Vofs[1], leftRollShift=Rofs[0], rightRollShift=Rofs[1], window=_window) rawDisplay[_name] = _window #VC: init the wrapper (DO NOT EDIT) if initFlag & vizconnect.INIT_WRAPPERS: vizconnect.addDisplay(rawDisplay[_name], _name, make='Sensics', model='zSight 60') #VC: set the parent of the node if initFlag & vizconnect.INIT_PARENTS: vizconnect.getDisplay(_name).setParent( vizconnect.getTracker('optical_heading')) #VC: set the name of the default vizconnect.setDefault('display', 'zsight_60') #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 positionSensitivity = 1.0 rotationSensitivity = 0.09 debug = False #VC: create the raw object from vizconnect.util.virtual_trackers import MouseAndKeyboardWalking rawTracker[_name] = MouseAndKeyboardWalking(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 Walking') #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 = 80 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: return values can be modified here return None
def initDisplays(initFlag=vizconnect.INIT_INDEPENDENT, initList=None): #VC: place any general initialization code here rawDisplay = vizconnect.getRawDisplayDict() #VC: initialize a new display _name = 'rift' if vizconnect.isPendingInit('display', _name, initFlag, initList): #VC: init the raw object if initFlag&vizconnect.INIT_RAW: #VC: set the window for the display _window = viz.MainWindow #VC: make the window visible only for certain clients _clusterMask = viz.MASTER with viz.cluster.MaskedContext(viz.ALLCLIENTS&~_clusterMask):# hide _window.visible(False) with viz.cluster.MaskedContext(_clusterMask):# show _window.visible(True) #VC: set the fullscreen monitor with viz.cluster.MaskedContext(viz.MASTER):# only for clients with this display viz.window.setFullscreenMonitor(1) viz.window.setFullscreen(True) #VC: set some parameters autoDetectMonitor = True timeWarpEnabled = True #VC: create the raw object import oculus try: display = oculus.Rift(window=_window, autoDetectMonitor=autoDetectMonitor) display.setTimeWarp(timeWarpEnabled) _window.displayNode = display except AttributeError: _window.displayNode = None rawDisplay[_name] = _window #VC: init the wrapper (DO NOT EDIT) if initFlag&vizconnect.INIT_WRAPPERS: vizconnect.addDisplay(rawDisplay[_name], _name, make='Oculus VR', model='Rift') #VC: set the parent of the node if initFlag&vizconnect.INIT_PARENTS: vizconnect.getDisplay(_name).setParent(vizconnect.getTracker('merged')) #VC: return values can be modified here return None
def updateHeadTracker(self): """ A specailized per-frame function That updates an empty viznode with: - position info from mocap - orientation from rift """ riftOriTracker = vizconnect.getTracker('rift_tracker').getNode3d() ori_xyz = riftOriTracker.getEuler() self.headTracker.setEuler( ori_xyz ) headRigidTracker = self.mocap.get_rigidTracker('hmd') self.headTracker.setPosition( headRigidTracker.get_position() )
def initDisplays(initFlag=vizconnect.INIT_INDEPENDENT, initList=None): #VC: place any general initialization code here rawDisplay = vizconnect.getRawDisplayDict() #VC: initialize a new display _name = 'dk2' if vizconnect.isPendingInit('display', _name, initFlag, initList): #VC: init the raw object if initFlag & vizconnect.INIT_RAW: #VC: set the window for the display _window = viz.MainWindow #VC: set some parameters autoDetectMonitor = True #VC: create the raw object import oculus try: display = oculus.Rift(window=_window, autoDetectMonitor=autoDetectMonitor) _window.displayNode = display except AttributeError: _window.displayNode = None rawDisplay[_name] = _window #VC: init the wrapper (DO NOT EDIT) if initFlag & vizconnect.INIT_WRAPPERS: vizconnect.addDisplay(rawDisplay[_name], _name, make='Oculus VR', model='DK2') #VC: set the parent of the node if initFlag & vizconnect.INIT_PARENTS: vizconnect.getDisplay(_name).setParent( vizconnect.getTracker('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 rotationSensitivity = 0.15 debug = False #VC: create the raw object from vizconnect.util.virtual_trackers import MouseOrientation rawTracker[_name] = MouseOrientation( 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 Orientation') #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.7, 0]) #VC: return values can be modified here return None
def initDisplays(initFlag=vizconnect.INIT_INDEPENDENT, initList=None): #VC: place any general initialization code here rawDisplay = vizconnect.getRawDisplayDict() #VC: initialize a new display _name = 'exp_display' if vizconnect.isPendingInit('display', _name, initFlag, initList): #VC: init the raw object if initFlag&vizconnect.INIT_RAW: #VC: set the window for the display _window = viz.addWindow() _window.setView(viz.addView()) #VC: set placement with alignment: free _window.setPosition(0, 1, mode=viz.WINDOW_NORMALIZED) _window.setSize(1, 1, mode=viz.WINDOW_NORMALIZED) #VC: make the window visible only for certain clients _clusterMask = viz.CLIENT1 with viz.cluster.MaskedContext(viz.ALLCLIENTS&~_clusterMask):# hide _window.visible(False) with viz.cluster.MaskedContext(_clusterMask):# show _window.visible(True) #VC: set the fullscreen monitor with viz.cluster.MaskedContext(viz.CLIENT1):# only for clients with this display viz.window.setFullscreenMonitor(3) viz.window.setFullscreen(True) #VC: set some parameters VFOV = 60 aspect = viz.AUTO_COMPUTE stereo = viz.OFF #VC: create the raw object _window.fov(VFOV,aspect) _window.stereo(stereo) rawDisplay[_name] = _window #VC: init the wrapper (DO NOT EDIT) if initFlag&vizconnect.INIT_WRAPPERS: vizconnect.addDisplay(rawDisplay[_name], _name, make='Generic', model='Custom Window') #VC: set the parent of the node if initFlag&vizconnect.INIT_PARENTS: vizconnect.getDisplay(_name).setParent(vizconnect.getTracker('head_tracker')) #VC: initialize a new display _name = 'rift_display' if vizconnect.isPendingInit('display', _name, initFlag, initList): #VC: init the raw object if initFlag&vizconnect.INIT_RAW: #VC: set the window for the display _window = viz.MainWindow #VC: set some parameters autoDetectMonitor = True timeWarpEnabled = True #VC: create the raw object import oculus try: display = oculus.Rift(window=_window, autoDetectMonitor=autoDetectMonitor) _window.displayNode = display viz.window.setFullscreen(True) except AttributeError: _window.displayNode = None rawDisplay[_name] = _window #VC: init the wrapper (DO NOT EDIT) if initFlag&vizconnect.INIT_WRAPPERS: vizconnect.addDisplay(rawDisplay[_name], _name, make='Oculus VR', model='DK2') #VC: set the parent of the node if initFlag&vizconnect.INIT_PARENTS: vizconnect.getDisplay(_name).setParent(vizconnect.getTracker('head_tracker')) #VC: return values can be modified here return None
def initAvatars(initFlag=vizconnect.INIT_INDEPENDENT, initList=None): #VC: place any general initialization code here rawAvatar = vizconnect.getRawAvatarDict() #VC: initialize a new avatar _name = 'main_avatar' if vizconnect.isPendingInit('avatar', _name, initFlag, initList): #VC: init the raw object if initFlag&vizconnect.INIT_RAW: #VC: set some parameters head = False rightHand = True leftHand = False torso = False lowerBody = False rightArm = False leftArm = False #VC: create the raw object # base avatar import vizfx avatar = vizfx.addChild('mark.cfg') avatar.disable(viz.LIGHTING) avatar._bodyPartDict = {} avatar._handModelDict = {} avatar.visible(head, r'mark_head.cmf') avatar.visible(rightHand, r'mark_hand_r.cmf') avatar.visible(leftHand, r'mark_hand_l.cmf') avatar.visible(torso, r'mark_torso.cmf') avatar.visible(lowerBody, r'mark_legs.cmf') avatar.visible(rightArm, r'mark_arm_r.cmf') avatar.visible(leftArm, r'mark_arm_l.cmf') rawAvatar[_name] = avatar #VC: init the wrapper (DO NOT EDIT) if initFlag&vizconnect.INIT_WRAPPERS: vizconnect.addAvatar(rawAvatar[_name], _name, make='WorldViz', model='Mark') #VC: init the gestures if initFlag&vizconnect.INIT_GESTURES: #VC: need to get the raw input dict so we have access to signals import vizact rawInput = vizconnect.getConfiguration().getRawDict('input') #VC: gestures for the avatar's r_hand import hand def initHand(): sensor = hand.InputSensor() rawAvatar[_name].handSensor = sensor sensor.createHandRenderer = lambda *args,**kw: hand._InputDeviceRenderer(*args,**kw) def appliedGetData(): #VC: set the mappings for the gestures if rawInput['r_hand_input'].getState()&viz.MOUSEBUTTON_LEFT:# make=Generic, model=Mouse Buttons, name=r_hand_input, signal=Left Mouse Button return (hand.GESTURE_FIST, False, False)# GESTURE_FIST #VC: end gesture mappings return (hand.GESTURE_FLAT_HAND,False,False) sensor.getData = appliedGetData return hand.AvatarHandModel(rawAvatar[_name], left=False, type=hand.GLOVE_5DT, sensor=sensor) rightHand = initHand() rawAvatar[_name]._bodyPartDict[vizconnect.AVATAR_R_HAND] = rightHand rawAvatar[_name]._handModelDict[vizconnect.AVATAR_R_HAND] = rightHand #VC: gestures may change the raw avatar, so refresh the raw in the wrapper vizconnect.getAvatar(_name).setRaw(rawAvatar[_name]) #VC: init the animator if initFlag&vizconnect.INIT_ANIMATOR: # need to get the raw tracker dict for animating the avatars from vizconnect.util.avatar import animator from vizconnect.util.avatar import skeleton # get the skeleton from the avatar _skeleton = skeleton.CompleteCharactersHD(rawAvatar[_name]) #VC: set which trackers animate which body part # format is: bone: (tracker, parent, degrees of freedom used) _trackerAssignmentDict = { vizconnect.AVATAR_HEAD:(vizconnect.getTracker('head_tracker').getNode3d(), None, vizconnect.DOF_6DOF), vizconnect.AVATAR_R_HAND:(vizconnect.getTracker('r_hand_tracker').getNode3d(), vizconnect.AVATAR_HEAD, vizconnect.DOF_POS), } #VC: create the raw object _rawAnimator = animator.Direct(rawAvatar[_name], _skeleton, _trackerAssignmentDict) #VC: set animator in wrapper (DO NOT EDIT) vizconnect.getAvatar(_name).setAnimator(_rawAnimator, make='Virtual', model='Direct') #VC: set the parent of the node if initFlag&vizconnect.INIT_PARENTS: vizconnect.getAvatar(_name).setParent(vizconnect.getTransport('main_transport')) #VC: set the name of the default vizconnect.setDefault('avatar', 'main_avatar') #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 = 'dtrack_head' if vizconnect.isPendingInit('tracker', _name, initFlag, initList): #VC: init the raw object if initFlag & vizconnect.INIT_RAW: #VC: set some parameters vrpnName = 'DTrack' ip = '192.168.5.160' index = 1 #VC: create the raw object vrpn7 = viz.add('vrpn7.dle') rawTracker[_name] = vrpn7.addTracker(vrpnName + '@' + ip, index) #VC: init the wrapper (DO NOT EDIT) if initFlag & vizconnect.INIT_WRAPPERS: vizconnect.addTracker(rawTracker[_name], _name, make='A.R.T.', model='DTrack') #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, 0, -0.02]) #VC: initialize a new tracker _name = 'dtrack_flystick' if vizconnect.isPendingInit('tracker', _name, initFlag, initList): #VC: init the raw object if initFlag & vizconnect.INIT_RAW: #VC: set some parameters vrpnName = 'DTrack' ip = '192.168.5.160' index = 3 #VC: create the raw object vrpn7 = viz.add('vrpn7.dle') rawTracker[_name] = vrpn7.addTracker(vrpnName + '@' + ip, index) #VC: init the wrapper (DO NOT EDIT) if initFlag & vizconnect.INIT_WRAPPERS: vizconnect.addTracker(rawTracker[_name], _name, make='A.R.T.', model='DTrack') #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['flystick'].isButtonDown(2), vizconnect.getTracker(_name).resetHeading ), # make=ART, model=Flystick, name=flystick, signal=Button 2 ]) #VC: set the name of the default vizconnect.setDefault('tracker', 'dtrack_head') #VC: return values can be modified here return None
import vizconnect import vizproximity #you already have this viz.go() #you already have this, but wondering why it's at bottom of script? piazza = viz.addChild('piazza.osgb') #don't need, just for reference to test tracking ####################################### #Vizconnect Init code ####################################### CONFIGURATION = 'vizconnect_config.py' vizconnect.go(CONFIGURATION) handTracker = vizconnect.getTracker('ppt_hand') #handTracker = vizconnect.getRawTracker('ppt_hand') target = vizproximity.Target(handTracker) print handTracker handTrackerpos = handTracker.getPosition() print handTrackerpos #or #handTracker = vizconnect.getTracker('ppt_hand') ##target = vizproximity.Target(vizproximity.Sphere(0.1,center=[0,0,0]),handTracker) #this only works for sensors, not targets #sensor = vizproximity.Sensor(vizproximity.Sphere(0.1,center=[0,0,0]),handTracker) #Create proximity manager #you already have this manager = vizproximity.Manager()
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 pptHostname = '141.82.50.174' 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: 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.preTrans([0, -0.04, -0.04]) #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 pptHostname = '141.82.50.174' 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: 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 = 'headtracker' if vizconnect.isPendingInit('tracker', _name, initFlag, initList): #VC: init the raw object if initFlag&vizconnect.INIT_RAW: #VC: set some parameters vrpnName = 'DTrack' ip = '192.168.0.10' index = 0 #VC: create the raw object vrpn7 = viz.add('vrpn7.dle') rawTracker[_name] = vrpn7.addTracker(vrpnName+'@'+ip, index) #VC: init the wrapper (DO NOT EDIT) if initFlag&vizconnect.INIT_WRAPPERS: vizconnect.addTracker(rawTracker[_name], _name, make='A.R.T.', model='DTrack') #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: initialize a new tracker _name = 'wandtracker' if vizconnect.isPendingInit('tracker', _name, initFlag, initList): #VC: init the raw object if initFlag&vizconnect.INIT_RAW: #VC: set some parameters vrpnName = 'DTrack' ip = '192.168.0.10' index = 1 #VC: create the raw object vrpn7 = viz.add('vrpn7.dle') rawTracker[_name] = vrpn7.addTracker(vrpnName+'@'+ip, index) #VC: init the wrapper (DO NOT EDIT) if initFlag&vizconnect.INIT_WRAPPERS: vizconnect.addTracker(rawTracker[_name], _name, make='A.R.T.', model='DTrack') #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 initAvatars(initFlag=vizconnect.INIT_INDEPENDENT, initList=None): #VC: place any general initialization code here rawAvatar = vizconnect.getRawAvatarDict() #VC: initialize a new avatar _name = 'main_avatar' if vizconnect.isPendingInit('avatar', _name, initFlag, initList): #VC: init the raw object if initFlag&vizconnect.INIT_RAW: #VC: set some parameters rightHandFilename = 'glove.cfg' leftHandFilename = '' #VC: create the raw object # base avatar avatar = viz.addGroup() avatar._bodyPartDict = {} avatar._handModelDict = {} # head head = viz.addGroup() head.setParent(avatar) avatar._bodyPartDict[vizconnect.AVATAR_HEAD] = head # left hand if leftHandFilename: leftHand = avatar.add(leftHandFilename) avatar.leftHandFilename = leftHandFilename else: leftHand = viz.addGroup() avatar.leftHandFilename = None leftHand.setParent(avatar) avatar._bodyPartDict[vizconnect.AVATAR_L_HAND] = leftHand # right hand if rightHandFilename: rightHand = avatar.add(rightHandFilename) avatar.rightHandFilename = rightHandFilename else: rightHand = viz.addGroup() avatar.rightHandFilename = None rightHand.setParent(avatar) avatar._bodyPartDict[vizconnect.AVATAR_R_HAND] = rightHand # done rawAvatar[_name] = avatar #VC: init the wrapper (DO NOT EDIT) if initFlag&vizconnect.INIT_WRAPPERS: vizconnect.addAvatar(rawAvatar[_name], _name, make='Generic', model='Head and Hand') #VC: init the animator if initFlag&vizconnect.INIT_ANIMATOR: # need to get the raw tracker dict for animating the avatars from vizconnect.util.avatar import animator from vizconnect.util.avatar import skeleton # get the skeleton from the avatar _skeleton = skeleton.Disembodied(rawAvatar[_name]) #VC: set which trackers animate which body part # format is: bone: (tracker, parent, degrees of freedom used) _trackerAssignmentDict = { vizconnect.AVATAR_HEAD:(vizconnect.getTracker('head_tracker').getNode3d(), None, vizconnect.DOF_6DOF), } #VC: create the raw object _rawAnimator = animator.Disembodied(rawAvatar[_name], _skeleton, _trackerAssignmentDict) #VC: set animator in wrapper (DO NOT EDIT) vizconnect.getAvatar(_name).setAnimator(_rawAnimator, make='Virtual', model='Disembodied') #VC: set the parent of the node if initFlag&vizconnect.INIT_PARENTS: vizconnect.getAvatar(_name).setParent(vizconnect.getTransport('main_transport')) #VC: set the name of the default vizconnect.setDefault('avatar', 'main_avatar') #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 = '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 initTransports(initFlag=vizconnect.INIT_INDEPENDENT, initList=None): #VC: place any general initialization code here rawTransport = vizconnect.getRawTransportDict() #VC: initialize a new transport _name = 'wandmagiccarpet' if vizconnect.isPendingInit('transport', _name, initFlag, initList): #VC: request that any dependencies be created if initFlag & vizconnect.INIT_INDEPENDENT: initTrackers(vizconnect.INIT_INDEPENDENT, ['dtrack_head']) #VC: init the raw object if initFlag & vizconnect.INIT_RAW: #VC: set some parameters orientationTracker = vizconnect.getTracker( 'dtrack_head').getNode3d() debug = False acceleration = 2 maxSpeed = 2 rotationAcceleration = 60 maxRotationSpeed = 65 autoBreakingDragCoef = 0.1 dragCoef = 0.0001 rotationAutoBreakingDragCoef = 0.2 rotationDragCoef = 0.0001 usingPhysics = False parentedTracker = False transportationGroup = None #VC: create the raw object from transportation import wand_magic_carpet rawTransport[_name] = wand_magic_carpet.WandMagicCarpet( orientationTracker=orientationTracker, debug=debug, acceleration=acceleration, maxSpeed=maxSpeed, rotationAcceleration=rotationAcceleration, maxRotationSpeed=maxRotationSpeed, autoBreakingDragCoef=autoBreakingDragCoef, dragCoef=dragCoef, rotationAutoBreakingDragCoef=rotationAutoBreakingDragCoef, rotationDragCoef=rotationDragCoef, usingPhysics=usingPhysics, parentedTracker=parentedTracker, node=transportationGroup) #VC: init the mappings for the raw object if initFlag & vizconnect.INIT_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(transport): if rawInput['flystick'].isInMode( 'None' ) and rawInput['flystick'].getJoystickPosition( )[1] > 0.05: # make=ART, model=Flystick, name=flystick, signal=Analog Down transport.moveForward(mag=abs( rawInput['flystick'].getJoystickPosition()[1])) if rawInput['flystick'].isInMode( 'None' ) and rawInput['flystick'].getJoystickPosition( )[1] < -0.05: # make=ART, model=Flystick, name=flystick, signal=Analog Up transport.moveBackward(mag=abs( rawInput['flystick'].getJoystickPosition()[1])) if rawInput['flystick'].isInMode( 'None' ) and rawInput['flystick'].getJoystickPosition( )[0] < -0.05: # make=ART, model=Flystick, name=flystick, signal=Analog Left transport.moveLeft(mag=abs( rawInput['flystick'].getJoystickPosition()[0])) if rawInput['flystick'].isInMode( 'None' ) and rawInput['flystick'].getJoystickPosition( )[0] > 0.05: # make=ART, model=Flystick, name=flystick, signal=Analog Right transport.moveRight(mag=abs( rawInput['flystick'].getJoystickPosition()[0])) if rawInput['flystick'].isInMode( 'None' ) and rawInput['flystick'].isButtonDown( 3 ): # make=ART, model=Flystick, name=flystick, signal=Button 3 transport.turnLeft(mag=1) if rawInput['flystick'].isInMode( 'None' ) and rawInput['flystick'].isButtonDown( 2 ): # make=ART, model=Flystick, name=flystick, signal=Button 2 transport.turnRight(mag=1) if rawInput['flystick'].isButtonDown( 4 ): # make=ART, model=Flystick, name=flystick, signal=Button 4 transport.lookUp(mag=1) if rawInput['flystick'].isButtonDown( 1 ): # make=ART, model=Flystick, name=flystick, signal=Button 1 transport.lookDown(mag=1) rawTransport[_name].setUpdateFunction(update) #VC: init the wrapper (DO NOT EDIT) if initFlag & vizconnect.INIT_WRAPPERS: vizconnect.addTransport(rawTransport[_name], _name, make='Virtual', model='WandMagicCarpet') #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 = 'dtrack_head' if vizconnect.isPendingInit('tracker', _name, initFlag, initList): #VC: init the raw object if initFlag & vizconnect.INIT_RAW: #VC: set some parameters vrpnName = 'DTrack' ip = 'localhost' index = 0 #VC: create the raw object vrpn7 = viz.add('vrpn7.dle') rawTracker[_name] = vrpn7.addTracker(vrpnName + '@' + ip, index) #VC: init the wrapper (DO NOT EDIT) if initFlag & vizconnect.INIT_WRAPPERS: vizconnect.addTracker(rawTracker[_name], _name, make='A.R.T.', model='DTrack') #VC: set the parent of the node if initFlag & vizconnect.INIT_PARENTS: vizconnect.getTracker(_name).setParent( vizconnect.getGroup('cave_data_file')) #VC: initialize a new tracker _name = 'dtrack_flystick' if vizconnect.isPendingInit('tracker', _name, initFlag, initList): #VC: init the raw object if initFlag & vizconnect.INIT_RAW: #VC: set some parameters vrpnName = 'DTrack' #ip = '192.168.1.51' ip = 'localhost' index = 2 #VC: create the raw object vrpn7 = viz.add('vrpn7.dle') rawTracker[_name] = vrpn7.addTracker(vrpnName + '@' + ip, index) #VC: init the wrapper (DO NOT EDIT) if initFlag & vizconnect.INIT_WRAPPERS: vizconnect.addTracker(rawTracker[_name], _name, make='A.R.T.', model='DTrack') #VC: initialize a new tracker _name = 'senso' if vizconnect.isPendingInit('tracker', _name, initFlag, initList): #VC: init the raw object if initFlag & vizconnect.INIT_RAW: #VC: set some parameters vrpnName = 'DTrack' ip = '127.0.0.1' index = 1 #VC: create the raw object vrpn7 = viz.add('vrpn7.dle') rawTracker[_name] = vrpn7.addTracker(vrpnName + '@' + ip, index) #VC: init the wrapper (DO NOT EDIT) if initFlag & vizconnect.INIT_WRAPPERS: vizconnect.addTracker(rawTracker[_name], _name, make='A.R.T.', model='DTrack') #VC: return values can be modified here return None
# h - Face Down f - Fly Down if controlType == MONITOR: HZ = 60 headTrack = viztracker.Keyboard6DOF() link = viz.link(headTrack, viz.MainView) headTrack.eyeheight(1.6) link.setEnabled(True) viz.go() elif controlType == HMD: HZ = 90 vizconnect.go('vizconnect_config.py') # Overwrite headset ipd IPD = viz.MainWindow.getIPD() vizact.onupdate(viz.UPDATE_LINKS + 1, overwriteIPD) # add Odyssey tracker ODTracker = vizconnect.getTracker('head_tracker') # Use a large size of the viewing frustum viz.clip(.001, 1000) # loads experimental conditions inputFile = os.path.abspath( os.path.join(INPUT_DIR, 'exp_a_subj' + subject + '.csv')) with open(inputFile, 'r') as file: lines = file.read().split('\n')[1:-1] conditions = [[float(x) for x in line.split(',')] for line in lines] # Define the trial, with which the experiment starts ii = START_ON_TRIAL + 3 if START_ON_TRIAL else 0
def initAvatars(initFlag=vizconnect.INIT_INDEPENDENT, initList=None): #VC: place any general initialization code here rawAvatar = vizconnect.getRawAvatarDict() #VC: initialize a new avatar _name = 'main_avatar' if vizconnect.isPendingInit('avatar', _name, initFlag, initList): #VC: init the raw object if initFlag & vizconnect.INIT_RAW: #VC: set some parameters head = False rightHand = False leftHand = False torso = False lowerBody = False rightArm = False leftArm = False #VC: create the raw object # base avatar import vizfx avatar = vizfx.addChild('mark.cfg') avatar._bodyPartDict = {} avatar._handModelDict = {} avatar.visible(head, r'mark_head.cmf') avatar.visible(rightHand, r'mark_hand_r.cmf') avatar.visible(leftHand, r'mark_hand_l.cmf') avatar.visible(torso, r'mark_torso.cmf') avatar.visible(lowerBody, r'mark_legs.cmf') avatar.visible(rightArm, r'mark_arm_r.cmf') avatar.visible(leftArm, r'mark_arm_l.cmf') rawAvatar[_name] = avatar #VC: init the wrapper (DO NOT EDIT) if initFlag & vizconnect.INIT_WRAPPERS: vizconnect.addAvatar(rawAvatar[_name], _name, make='WorldViz', model='Mark') #VC: init the animator if initFlag & vizconnect.INIT_ANIMATOR: # need to get the raw tracker dict for animating the avatars from vizconnect.util.avatar import animator from vizconnect.util.avatar import skeleton # get the skeleton from the avatar _skeleton = skeleton.CompleteCharactersHD(rawAvatar[_name]) #VC: set which trackers animate which body part # format is: bone: (tracker, parent, degrees of freedom used) _trackerAssignmentDict = { vizconnect.AVATAR_HEAD: (vizconnect.getTracker('head_tracker').getNode3d(), None, vizconnect.DOF_POS), vizconnect.AVATAR_R_HAND: (vizconnect.getTracker('r_hand_tracker').getNode3d(), None, vizconnect.DOF_POS), } #VC: create the raw object _rawAnimator = animator.Direct(rawAvatar[_name], _skeleton, _trackerAssignmentDict) #VC: set animator in wrapper (DO NOT EDIT) vizconnect.getAvatar(_name).setAnimator(_rawAnimator, make='Virtual', model='Direct') #VC: set the parent of the node if initFlag & vizconnect.INIT_PARENTS: vizconnect.getAvatar(_name).setParent( vizconnect.getGroup('main_display')) #VC: set the name of the default vizconnect.setDefault('avatar', 'main_avatar') #VC: return values can be modified here return None
from emotion.emotion import * vizconnect.go('vizconnect_config2.py') #Init Game room = viz.add('room.osgb') scientist = viz.add('./avatars/male/avatar 003.cfg') scientist.setPosition([-7.64, 0, 7.91]) scientist.setEuler(120,0,0) scientist.state(1) #Emotions for Scientist affectManager=AffectManager(24) scientist_expression=affectManager.createBasicEkmanWithExpression(scientist) head = vizconnect.getTracker('rift_orientation_tracker').getNode3d() joystick = vizconnect.getInput('joystick') transport = vizconnect.getTransport('wandmagiccarpet') avatarNova = viz.add('./avatars/female/avatar 001.cfg') avatarNova.state(1) avatarNova.setParent(transport.getNode3d()) ##Joystick## # Load DirectInput plug-in dinput = viz.add('DirectInput.dle') # Add first available joystick joy = dinput.addJoystick()
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 initAvatars(initFlag=vizconnect.INIT_INDEPENDENT, initList=None): #VC: place any general initialization code here rawAvatar = vizconnect.getRawAvatarDict() #VC: initialize a new avatar _name = 'head_and_hand' if vizconnect.isPendingInit('avatar', _name, initFlag, initList): #VC: init the raw object if initFlag&vizconnect.INIT_RAW: #VC: set some parameters rightHandFilename = 'glove.cfg' leftHandFilename = '' #VC: create the raw object # base avatar avatar = viz.addGroup() avatar._bodyPartDict = {} avatar._handModelDict = {} # head head = viz.addGroup() head.setParent(avatar) avatar._bodyPartDict[vizconnect.AVATAR_HEAD] = head # left hand if leftHandFilename: leftHand = avatar.add(leftHandFilename) avatar.leftHandFilename = leftHandFilename else: leftHand = viz.addGroup() avatar.leftHandFilename = None leftHand.setParent(avatar) avatar._bodyPartDict[vizconnect.AVATAR_L_HAND] = leftHand # right hand if rightHandFilename: rightHand = avatar.add(rightHandFilename) avatar.rightHandFilename = rightHandFilename else: rightHand = viz.addGroup() avatar.rightHandFilename = None rightHand.setParent(avatar) avatar._bodyPartDict[vizconnect.AVATAR_R_HAND] = rightHand # done rawAvatar[_name] = avatar #VC: init the wrapper (DO NOT EDIT) if initFlag&vizconnect.INIT_WRAPPERS: vizconnect.addAvatar(rawAvatar[_name], _name, make='Generic', model='Head and Hand') #VC: init the gestures if initFlag&vizconnect.INIT_GESTURES: #VC: need to get the raw input dict so we have access to signals import vizact rawInput = vizconnect.getConfiguration().getRawDict('input') #VC: gestures for the avatar's r_hand import hand # remove the old hand rightHand = rawAvatar[_name]._bodyPartDict[vizconnect.AVATAR_R_HAND] if rightHand: rightHand.remove() # add a new hand def initHand(): sensor = hand.InputSensor() rawAvatar[_name].handSensor = sensor sensor.createHandRenderer = lambda *args,**kw: hand._InputDeviceRenderer(*args,**kw) def appliedGetData(): #VC: set the mappings for the gestures if rawInput['mouse_buttons'].getState()&viz.MOUSEBUTTON_LEFT:# make=Generic, model=Mouse Buttons, name=mouse_buttons, signal=Left Mouse Button return (hand.GESTURE_FIST, False, False)# GESTURE_FIST #VC: end gesture mappings return (hand.GESTURE_FLAT_HAND,False,False) sensor.getData = appliedGetData file=None if hasattr(rawAvatar[_name], "rightHandFilename"): file = rawAvatar[_name].rightHandFilename return hand.HandModel(left=False, type=hand.GLOVE_5DT, file=file, sensor=sensor) rightHand = initHand() rightHand.setParent(rawAvatar[_name]) rawAvatar[_name]._bodyPartDict[vizconnect.AVATAR_R_HAND] = rightHand rawAvatar[_name]._handModelDict[vizconnect.AVATAR_R_HAND] = rightHand #VC: gestures may change the raw avatar, so refresh the raw in the wrapper vizconnect.getAvatar(_name).setRaw(rawAvatar[_name]) #VC: init the animator if initFlag&vizconnect.INIT_ANIMATOR: # need to get the raw tracker dict for animating the avatars from vizconnect.util.avatar import animator from vizconnect.util.avatar import skeleton # get the skeleton from the avatar _skeleton = skeleton.Disembodied(rawAvatar[_name]) #VC: set which trackers animate which body part # format is: bone: (tracker, parent, degrees of freedom used) _trackerAssignmentDict = { vizconnect.AVATAR_HEAD:(vizconnect.getTracker('mouse_and_keyboard_walking').getNode3d(), None, vizconnect.DOF_6DOF), vizconnect.AVATAR_R_HAND:(vizconnect.getTracker('mouse_scrollwheel').getNode3d(), vizconnect.AVATAR_HEAD, vizconnect.DOF_POS), } #VC: create the raw object _rawAnimator = animator.Disembodied(rawAvatar[_name], _skeleton, _trackerAssignmentDict) #VC: set animator in wrapper (DO NOT EDIT) vizconnect.getAvatar(_name).setAnimator(_rawAnimator, make='Virtual', model='Disembodied') #VC: return values can be modified here return None
def initAvatars(initFlag=vizconnect.INIT_INDEPENDENT, initList=None): #VC: place any general initialization code here rawAvatar = vizconnect.getRawAvatarDict() #VC: initialize a new avatar _name = 'head_and_hand' if vizconnect.isPendingInit('avatar', _name, initFlag, initList): #VC: init the raw object if initFlag&vizconnect.INIT_RAW: #VC: set some parameters rightHandFilename = 'glove.cfg' leftHandFilename = '' #VC: create the raw object # base avatar avatar = viz.addGroup() avatar._bodyPartDict = {} avatar._handModelDict = {} # head head = viz.addGroup() head.setParent(avatar) avatar._bodyPartDict[vizconnect.AVATAR_HEAD] = head # left hand if leftHandFilename: leftHand = avatar.add(leftHandFilename) avatar.leftHandFilename = leftHandFilename else: leftHand = viz.addGroup() avatar.leftHandFilename = None leftHand.setParent(avatar) avatar._bodyPartDict[vizconnect.AVATAR_L_HAND] = leftHand # right hand if rightHandFilename: rightHand = avatar.add(rightHandFilename) avatar.rightHandFilename = rightHandFilename else: rightHand = viz.addGroup() avatar.rightHandFilename = None rightHand.setParent(avatar) avatar._bodyPartDict[vizconnect.AVATAR_R_HAND] = rightHand # done rawAvatar[_name] = avatar #VC: init the wrapper (DO NOT EDIT) if initFlag&vizconnect.INIT_WRAPPERS: vizconnect.addAvatar(rawAvatar[_name], _name, make='Generic', model='Head and Hand') #VC: init the animator if initFlag&vizconnect.INIT_ANIMATOR: # need to get the raw tracker dict for animating the avatars from vizconnect.util.avatar import animator from vizconnect.util.avatar import skeleton # get the skeleton from the avatar _skeleton = skeleton.Disembodied(rawAvatar[_name]) #VC: set which trackers animate which body part # format is: bone: (tracker, parent, degrees of freedom used) _trackerAssignmentDict = { vizconnect.AVATAR_HEAD:(vizconnect.getTracker('headtracker').getNode3d(), None, vizconnect.DOF_6DOF), vizconnect.AVATAR_R_HAND:(vizconnect.getTracker('wandtracker').getNode3d(), None, vizconnect.DOF_6DOF), } #VC: create the raw object _rawAnimator = animator.Disembodied(rawAvatar[_name], _skeleton, _trackerAssignmentDict) #VC: set animator in wrapper (DO NOT EDIT) vizconnect.getAvatar(_name).setAnimator(_rawAnimator, make='Virtual', model='Disembodied') #VC: set the parent of the node if initFlag&vizconnect.INIT_PARENTS: vizconnect.getAvatar(_name).setParent(vizconnect.getGroup('cave_manual_configuration')) #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 initAvatars(initFlag=vizconnect.INIT_INDEPENDENT, initList=None): #VC: place any general initialization code here rawAvatar = vizconnect.getRawAvatarDict() #VC: initialize a new avatar _name = 'white_male' if vizconnect.isPendingInit('avatar', _name, initFlag, initList): #VC: init the raw object if initFlag&vizconnect.INIT_RAW: #VC: set some parameters filename = 'C:/Users/Jeremy Bailenson/Documents/GitHub/Demos/Proteus Demo Vive/assets/models/avatars/white_male.cfg' #VC: create the raw object avatar = viz.add(filename) avatar._bodyPartDict = {} avatar._handModelDict = {} rawAvatar[_name] = avatar #VC: init the wrapper (DO NOT EDIT) if initFlag&vizconnect.INIT_WRAPPERS: vizconnect.addAvatar(rawAvatar[_name], _name, make='Human', model='Auto Parse') #VC: init the animator if initFlag&vizconnect.INIT_ANIMATOR: # need to get the raw tracker dict for animating the avatars from vizconnect.util.avatar import animator from vizconnect.util.avatar import skeleton # get the skeleton from the avatar _skeleton = skeleton.HumanAutoParse(rawAvatar[_name]) #VC: set which trackers animate which body part # format is: bone: (tracker, parent, degrees of freedom used) _trackerAssignmentDict = { vizconnect.AVATAR_HEAD:(vizconnect.getTracker('steamvr_hmd_tracker').getNode3d(), None, vizconnect.DOF_6DOF), vizconnect.AVATAR_L_FOREARM:(vizconnect.getTracker('steamvr_controller_tracker').getNode3d(), None, vizconnect.DOF_6DOF), vizconnect.AVATAR_R_FOREARM:(vizconnect.getTracker('steamvr_controller_tracker2').getNode3d(), None, vizconnect.DOF_6DOF), } #VC: create the raw object _rawAnimator = animator.InverseKinematics(rawAvatar[_name], _skeleton, _trackerAssignmentDict) #VC: set animator in wrapper (DO NOT EDIT) vizconnect.getAvatar(_name).setAnimator(_rawAnimator, make='WorldViz', model='Inverse Kinematics') #VC: initialize a new avatar _name = 'black_female' if vizconnect.isPendingInit('avatar', _name, initFlag, initList): #VC: init the raw object if initFlag&vizconnect.INIT_RAW: #VC: set some parameters filename = 'C:/Users/Jeremy Bailenson/Documents/GitHub/Demos/Proteus Demo Vive/assets/models/avatars/black_female.cfg' #VC: create the raw object avatar = viz.add(filename) avatar._bodyPartDict = {} avatar._handModelDict = {} rawAvatar[_name] = avatar #VC: init the wrapper (DO NOT EDIT) if initFlag&vizconnect.INIT_WRAPPERS: vizconnect.addAvatar(rawAvatar[_name], _name, make='Human', model='Auto Parse') #VC: init the animator if initFlag&vizconnect.INIT_ANIMATOR: # need to get the raw tracker dict for animating the avatars from vizconnect.util.avatar import animator from vizconnect.util.avatar import skeleton # get the skeleton from the avatar _skeleton = skeleton.HumanAutoParse(rawAvatar[_name]) #VC: set which trackers animate which body part # format is: bone: (tracker, parent, degrees of freedom used) _trackerAssignmentDict = { vizconnect.AVATAR_HEAD:(vizconnect.getTracker('steamvr_hmd_tracker').getNode3d(), None, vizconnect.DOF_6DOF), vizconnect.AVATAR_L_FOREARM:(vizconnect.getTracker('steamvr_controller_tracker').getNode3d(), None, vizconnect.DOF_6DOF), vizconnect.AVATAR_R_FOREARM:(vizconnect.getTracker('steamvr_controller_tracker2').getNode3d(), None, vizconnect.DOF_6DOF), } #VC: create the raw object _rawAnimator = animator.InverseKinematics(rawAvatar[_name], _skeleton, _trackerAssignmentDict) #VC: set animator in wrapper (DO NOT EDIT) vizconnect.getAvatar(_name).setAnimator(_rawAnimator, make='WorldViz', model='Inverse Kinematics') #VC: initialize a new avatar _name = 'old_white_male' if vizconnect.isPendingInit('avatar', _name, initFlag, initList): #VC: init the raw object if initFlag&vizconnect.INIT_RAW: #VC: set some parameters filename = 'C:/Users/Jeremy Bailenson/Documents/GitHub/Demos/Proteus Demo Vive/assets/models/avatars/old_white_male.cfg' #VC: create the raw object avatar = viz.add(filename) avatar._bodyPartDict = {} avatar._handModelDict = {} rawAvatar[_name] = avatar #VC: init the wrapper (DO NOT EDIT) if initFlag&vizconnect.INIT_WRAPPERS: vizconnect.addAvatar(rawAvatar[_name], _name, make='Human', model='Auto Parse') #VC: init the animator if initFlag&vizconnect.INIT_ANIMATOR: # need to get the raw tracker dict for animating the avatars from vizconnect.util.avatar import animator from vizconnect.util.avatar import skeleton # get the skeleton from the avatar _skeleton = skeleton.HumanAutoParse(rawAvatar[_name]) #VC: set which trackers animate which body part # format is: bone: (tracker, parent, degrees of freedom used) _trackerAssignmentDict = { vizconnect.AVATAR_HEAD:(vizconnect.getTracker('steamvr_hmd_tracker').getNode3d(), None, vizconnect.DOF_6DOF), vizconnect.AVATAR_L_FOREARM:(vizconnect.getTracker('steamvr_controller_tracker').getNode3d(), None, vizconnect.DOF_6DOF), vizconnect.AVATAR_R_FOREARM:(vizconnect.getTracker('steamvr_controller_tracker2').getNode3d(), None, vizconnect.DOF_6DOF), } #VC: create the raw object _rawAnimator = animator.InverseKinematics(rawAvatar[_name], _skeleton, _trackerAssignmentDict) #VC: set animator in wrapper (DO NOT EDIT) vizconnect.getAvatar(_name).setAnimator(_rawAnimator, make='WorldViz', model='Inverse Kinematics') #VC: initialize a new avatar _name = 'black_male' if vizconnect.isPendingInit('avatar', _name, initFlag, initList): #VC: init the raw object if initFlag&vizconnect.INIT_RAW: #VC: set some parameters filename = 'C:/Users/Jeremy Bailenson/Documents/GitHub/Demos/Proteus Demo Vive/assets/models/avatars/Male/CC2_m016_hipoly_A0.cfg' #VC: create the raw object avatar = viz.add(filename) avatar._bodyPartDict = {} avatar._handModelDict = {} rawAvatar[_name] = avatar #VC: init the wrapper (DO NOT EDIT) if initFlag&vizconnect.INIT_WRAPPERS: vizconnect.addAvatar(rawAvatar[_name], _name, make='Human', model='Auto Parse') #VC: init the animator if initFlag&vizconnect.INIT_ANIMATOR: # need to get the raw tracker dict for animating the avatars from vizconnect.util.avatar import animator from vizconnect.util.avatar import skeleton # get the skeleton from the avatar _skeleton = skeleton.HumanAutoParse(rawAvatar[_name]) #VC: set which trackers animate which body part # format is: bone: (tracker, parent, degrees of freedom used) _trackerAssignmentDict = { vizconnect.AVATAR_HEAD:(vizconnect.getTracker('steamvr_hmd_tracker').getNode3d(), None, vizconnect.DOF_6DOF), vizconnect.AVATAR_L_FOREARM:(vizconnect.getTracker('steamvr_controller_tracker').getNode3d(), None, vizconnect.DOF_6DOF), vizconnect.AVATAR_R_FOREARM:(vizconnect.getTracker('steamvr_controller_tracker2').getNode3d(), None, vizconnect.DOF_6DOF), } #VC: create the raw object _rawAnimator = animator.InverseKinematics(rawAvatar[_name], _skeleton, _trackerAssignmentDict) #VC: set animator in wrapper (DO NOT EDIT) vizconnect.getAvatar(_name).setAnimator(_rawAnimator, make='WorldViz', model='Inverse Kinematics') #VC: initialize a new avatar _name = 'blonde_female' if vizconnect.isPendingInit('avatar', _name, initFlag, initList): #VC: init the raw object if initFlag&vizconnect.INIT_RAW: #VC: set some parameters filename = 'C:/Users/Jeremy Bailenson/Documents/GitHub/Demos/Proteus Demo Vive/assets/models/avatars/female/CC2_f010_hipoly_A0.cfg' #VC: create the raw object avatar = viz.add(filename) avatar._bodyPartDict = {} avatar._handModelDict = {} rawAvatar[_name] = avatar #VC: init the wrapper (DO NOT EDIT) if initFlag&vizconnect.INIT_WRAPPERS: vizconnect.addAvatar(rawAvatar[_name], _name, make='Human', model='Auto Parse') #VC: init the animator if initFlag&vizconnect.INIT_ANIMATOR: # need to get the raw tracker dict for animating the avatars from vizconnect.util.avatar import animator from vizconnect.util.avatar import skeleton # get the skeleton from the avatar _skeleton = skeleton.HumanAutoParse(rawAvatar[_name]) #VC: set which trackers animate which body part # format is: bone: (tracker, parent, degrees of freedom used) _trackerAssignmentDict = { vizconnect.AVATAR_HEAD:(vizconnect.getTracker('steamvr_hmd_tracker').getNode3d(), None, vizconnect.DOF_6DOF), vizconnect.AVATAR_L_FOREARM:(vizconnect.getTracker('steamvr_controller_tracker').getNode3d(), None, vizconnect.DOF_6DOF), vizconnect.AVATAR_R_FOREARM:(vizconnect.getTracker('steamvr_controller_tracker2').getNode3d(), None, vizconnect.DOF_6DOF), } #VC: create the raw object _rawAnimator = animator.InverseKinematics(rawAvatar[_name], _skeleton, _trackerAssignmentDict) #VC: set animator in wrapper (DO NOT EDIT) vizconnect.getAvatar(_name).setAnimator(_rawAnimator, make='WorldViz', model='Inverse Kinematics') #VC: return values can be modified here return None
def resetHeadOrientation(self): vizconnect.getTracker('rift_tracker').resetHeading()
def initTrackers(initFlag=vizconnect.INIT_INDEPENDENT, initList=None): #VC: place any general initialization code here rawTracker = vizconnect.getRawTrackerDict() #VC: initialize a new tracker _name = 'mouse_scrollwheel' if vizconnect.isPendingInit('tracker', _name, initFlag, initList): #VC: init the raw object if initFlag&vizconnect.INIT_RAW: #VC: set some parameters trap = False visible = True scaleVelocityWithDistance = True extensionAccel = 100 debug = False toggleTrapKey = '' #VC: create the raw object if toggleTrapKey: import vizact vizact.onkeydown(toggleTrapKey, viz.mouse.setTrap, viz.TOGGLE) from vizconnect.util.virtual_trackers import ScrollWheel rawTracker[_name] = ScrollWheel(trap=trap, visible=visible, 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 Scrollwheel') #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.7]) #VC: initialize a new tracker _name = 'mouse_and_keyboard_walking' if vizconnect.isPendingInit('tracker', _name, initFlag, initList): #VC: init the raw object if initFlag&vizconnect.INIT_RAW: #VC: set some parameters positionSensitivity = 1.5 rotationSensitivity = 0.15 trap = False visible = True debug = False toggleTrapKey = '' #VC: create the raw object if toggleTrapKey: import vizact vizact.onkeydown(toggleTrapKey, viz.mouse.setTrap, viz.TOGGLE) from vizconnect.util.virtual_trackers import MouseAndKeyboardWalking rawTracker[_name] = MouseAndKeyboardWalking(positionSensitivity=positionSensitivity, rotationSensitivity=rotationSensitivity, trap=trap, visible=visible, 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 Walking') #VC: set the name of the default vizconnect.setDefault('tracker', 'mouse_and_keyboard_walking') #VC: return values can be modified here return None
def initTransports(initFlag=vizconnect.INIT_INDEPENDENT, initList=None): #VC: place any general initialization code here rawTransport = vizconnect.getRawTransportDict() #VC: initialize a new transport _name = 'main_transport' if vizconnect.isPendingInit('transport', _name, initFlag, initList): #VC: request that any dependencies be created if initFlag & vizconnect.INIT_INDEPENDENT: initTrackers(vizconnect.INIT_INDEPENDENT, ['head_tracker']) #VC: init the raw object if initFlag & vizconnect.INIT_RAW: #VC: set some parameters orientationTracker = vizconnect.getTracker( 'head_tracker').getNode3d() debug = False acceleration = 2 maxSpeed = 2 rotationAcceleration = 60 maxRotationSpeed = 65 autoBreakingDragCoef = 0.1 dragCoef = 0.0001 rotationAutoBreakingDragCoef = 0.2 rotationDragCoef = 0.0001 usingPhysics = False parentedTracker = False transportationGroup = None #VC: create the raw object from transportation import wand_magic_carpet rawTransport[_name] = wand_magic_carpet.WandMagicCarpet( orientationTracker=orientationTracker, debug=debug, acceleration=acceleration, maxSpeed=maxSpeed, rotationAcceleration=rotationAcceleration, maxRotationSpeed=maxRotationSpeed, autoBreakingDragCoef=autoBreakingDragCoef, dragCoef=dragCoef, rotationAutoBreakingDragCoef=rotationAutoBreakingDragCoef, rotationDragCoef=rotationDragCoef, usingPhysics=usingPhysics, parentedTracker=parentedTracker, node=transportationGroup) #VC: init the mappings for the raw object if initFlag & vizconnect.INIT_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(transport): if rawInput['r_hand_input'].getTrackpad( )[1] > 0.01: # make=HTC, model=Vive Controller, name=r_hand_input, signal=Trackpad Top transport.moveForward( mag=abs(rawInput['r_hand_input'].getTrackpad()[1])) if rawInput['r_hand_input'].getTrackpad( )[1] < -0.01: # make=HTC, model=Vive Controller, name=r_hand_input, signal=Trackpad Bottom transport.moveBackward( mag=abs(rawInput['r_hand_input'].getTrackpad()[1])) if rawInput['r_hand_input'].getTrackpad( )[0] < -0.01: # make=HTC, model=Vive Controller, name=r_hand_input, signal=Trackpad Left transport.moveLeft( mag=abs(rawInput['r_hand_input'].getTrackpad()[0])) if rawInput['r_hand_input'].getTrackpad( )[0] > 0.01: # make=HTC, model=Vive Controller, name=r_hand_input, signal=Trackpad Right transport.moveRight( mag=abs(rawInput['r_hand_input'].getTrackpad()[0])) rawTransport[_name].setUpdateFunction(update) #VC: init the wrapper (DO NOT EDIT) if initFlag & vizconnect.INIT_WRAPPERS: vizconnect.addTransport(rawTransport[_name], _name, make='Virtual', model='WandMagicCarpet') #VC: set the pivot of the node if initFlag & vizconnect.INIT_PIVOTS: vizconnect.getTransport(_name).setPivot( vizconnect.getAvatar('main_avatar').getAttachmentPoint( 'head').getNode3d()) #VC: set the name of the default vizconnect.setDefault('transport', 'main_transport') #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 = 'mouse_and_keyboard_walking' 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 MouseAndKeyboardWalking rawTracker[_name] = MouseAndKeyboardWalking(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 Walking') #VC: set the parent of the node if initFlag&vizconnect.INIT_PARENTS: vizconnect.getTracker(_name).setParent(vizconnect.getRoot()) #VC: initialize a new tracker _name = 'righthand' if vizconnect.isPendingInit('tracker', _name, initFlag, initList): #VC: init the raw object if initFlag&vizconnect.INIT_RAW: #VC: set some parameters trackerIndex = -1 speed = 0.5 debug = False #VC: create the raw object from vizconnect.util.virtual_trackers import Keyboard rawTracker[_name] = Keyboard(trackerIndex=trackerIndex, speed=speed, debug=debug) #VC: init the wrapper (DO NOT EDIT) if initFlag&vizconnect.INIT_WRAPPERS: vizconnect.addTracker(rawTracker[_name], _name, make='Virtual', model='Keyboard') #VC: initialize a new tracker _name = 'lefthand' if vizconnect.isPendingInit('tracker', _name, initFlag, initList): #VC: init the raw object if initFlag&vizconnect.INIT_RAW: #VC: set some parameters trackerIndex = -1 speed = 0.5 debug = False #VC: create the raw object from vizconnect.util.virtual_trackers import Keyboard rawTracker[_name] = Keyboard(trackerIndex=trackerIndex, speed=speed, debug=debug) #VC: init the wrapper (DO NOT EDIT) if initFlag&vizconnect.INIT_WRAPPERS: vizconnect.addTracker(rawTracker[_name], _name, make='Virtual', model='Keyboard') #VC: initialize a new tracker _name = 'rightfoot' if vizconnect.isPendingInit('tracker', _name, initFlag, initList): #VC: init the raw object if initFlag&vizconnect.INIT_RAW: #VC: set some parameters trackerIndex = -1 speed = 0.5 debug = False #VC: create the raw object from vizconnect.util.virtual_trackers import Keyboard rawTracker[_name] = Keyboard(trackerIndex=trackerIndex, speed=speed, debug=debug) #VC: init the wrapper (DO NOT EDIT) if initFlag&vizconnect.INIT_WRAPPERS: vizconnect.addTracker(rawTracker[_name], _name, make='Virtual', model='Keyboard') #VC: initialize a new tracker _name = 'leftfoot' if vizconnect.isPendingInit('tracker', _name, initFlag, initList): #VC: init the raw object if initFlag&vizconnect.INIT_RAW: #VC: set some parameters trackerIndex = -1 speed = 0.5 debug = False #VC: create the raw object from vizconnect.util.virtual_trackers import Keyboard rawTracker[_name] = Keyboard(trackerIndex=trackerIndex, speed=speed, debug=debug) #VC: init the wrapper (DO NOT EDIT) if initFlag&vizconnect.INIT_WRAPPERS: vizconnect.addTracker(rawTracker[_name], _name, make='Virtual', model='Keyboard') #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 initAvatars(initFlag=vizconnect.INIT_INDEPENDENT, initList=None): #VC: place any general initialization code here rawAvatar = vizconnect.getRawAvatarDict() #VC: initialize a new avatar _name = 'head_and_hand' if vizconnect.isPendingInit('avatar', _name, initFlag, initList): #VC: init the raw object if initFlag & vizconnect.INIT_RAW: #VC: set some parameters # rightHandFilename = 'glove.cfg' rightHandFilename = '' leftHandFilename = '' #VC: create the raw object # base avatar avatar = viz.addGroup() avatar._bodyPartDict = {} avatar._handModelDict = {} # head head = viz.addGroup() head.setParent(avatar) avatar._bodyPartDict[vizconnect.AVATAR_HEAD] = head # left hand if leftHandFilename: leftHand = avatar.add(leftHandFilename) avatar.leftHandFilename = leftHandFilename else: leftHand = viz.addGroup() avatar.leftHandFilename = None leftHand.setParent(avatar) avatar._bodyPartDict[vizconnect.AVATAR_L_HAND] = leftHand # right hand if rightHandFilename: rightHand = avatar.add(rightHandFilename) avatar.rightHandFilename = rightHandFilename else: rightHand = viz.addGroup() avatar.rightHandFilename = None rightHand.setParent(avatar) avatar._bodyPartDict[vizconnect.AVATAR_R_HAND] = rightHand # done rawAvatar[_name] = avatar #VC: init the wrapper (DO NOT EDIT) if initFlag & vizconnect.INIT_WRAPPERS: vizconnect.addAvatar(rawAvatar[_name], _name, make='Generic', model='Head and Hand') #VC: init the gestures if initFlag & vizconnect.INIT_GESTURES: #VC: need to get the raw input dict so we have access to signals import vizact rawInput = vizconnect.getConfiguration().getRawDict('input') #VC: gestures for the avatar's r_hand import hand # remove the old hand rightHand = rawAvatar[_name]._bodyPartDict[ vizconnect.AVATAR_R_HAND] if rightHand: rightHand.remove() # add a new hand def initHand(): sensor = hand.InputSensor() rawAvatar[_name].handSensor = sensor sensor.createHandRenderer = lambda *args, **kw: hand._InputDeviceRenderer( *args, **kw) def appliedGetData(): #VC: set the mappings for the gestures if rawInput['flystick'].isButtonDown( 0 ): # make=ART, model=Flystick, name=flystick, signal=Button 0 return (hand.GESTURE_FIST, False, False ) # GESTURE_FIST #VC: end gesture mappings return (hand.GESTURE_FLAT_HAND, False, False) sensor.getData = appliedGetData file = None if hasattr(rawAvatar[_name], "rightHandFilename"): file = rawAvatar[_name].rightHandFilename return hand.HandModel(left=False, type=hand.GLOVE_5DT, file=file, sensor=sensor) rightHand = initHand() rightHand.setParent(rawAvatar[_name]) rawAvatar[_name]._bodyPartDict[ vizconnect.AVATAR_R_HAND] = rightHand rawAvatar[_name]._handModelDict[ vizconnect.AVATAR_R_HAND] = rightHand #VC: gestures may change the raw avatar, so refresh the raw in the wrapper vizconnect.getAvatar(_name).setRaw(rawAvatar[_name]) #VC: init the animator if initFlag & vizconnect.INIT_ANIMATOR: # need to get the raw tracker dict for animating the avatars from vizconnect.util.avatar import animator from vizconnect.util.avatar import skeleton # get the skeleton from the avatar _skeleton = skeleton.Disembodied(rawAvatar[_name]) #VC: set which trackers animate which body part # format is: bone: (tracker, parent, degrees of freedom used) _trackerAssignmentDict = { vizconnect.AVATAR_HEAD: (vizconnect.getTracker('dtrack_head').getNode3d(), None, vizconnect.DOF_6DOF), vizconnect.AVATAR_R_HAND: (vizconnect.getTracker('dtrack_flystick').getNode3d(), None, vizconnect.DOF_6DOF), } #VC: create the raw object _rawAnimator = animator.Disembodied(rawAvatar[_name], _skeleton, _trackerAssignmentDict) #VC: set animator in wrapper (DO NOT EDIT) vizconnect.getAvatar(_name).setAnimator(_rawAnimator, make='Virtual', model='Disembodied') #VC: set the parent of the node if initFlag & vizconnect.INIT_PARENTS: vizconnect.getAvatar(_name).setParent( vizconnect.getGroup('cave_manual_configuration')) #VC: set the name of the default vizconnect.setDefault('avatar', 'head_and_hand') #VC: return values can be modified here return None
def initTransports(initFlag=vizconnect.INIT_INDEPENDENT, initList=None): #VC: place any general initialization code here rawTransport = vizconnect.getRawTransportDict() #VC: initialize a new transport _name = 'wandmagiccarpet' if vizconnect.isPendingInit('transport', _name, initFlag, initList): #VC: request that any dependencies be created if initFlag&vizconnect.INIT_INDEPENDENT: initTrackers(vizconnect.INIT_INDEPENDENT, ['merged']) #VC: init the raw object if initFlag&vizconnect.INIT_RAW: #VC: set some parameters orientationTracker = vizconnect.getTracker('merged').getNode3d() debug = False acceleration = 2.0 maxSpeed = 2.0 rotationAcceleration = 60.0 maxRotationSpeed = 65.0 autoBreakingDragCoef = 0.1 dragCoef = 0.0001 rotationAutoBreakingDragCoef = 0.2 rotationDragCoef = 0.0001 usingPhysics = False parentedTracker = False transportationGroup = None #VC: create the raw object from transportation import wand_magic_carpet rawTransport[_name] = wand_magic_carpet.WandMagicCarpet( orientationTracker=orientationTracker, debug=debug, acceleration=acceleration, maxSpeed=maxSpeed, rotationAcceleration=rotationAcceleration, maxRotationSpeed=maxRotationSpeed, autoBreakingDragCoef=autoBreakingDragCoef, dragCoef=dragCoef, rotationAutoBreakingDragCoef=rotationAutoBreakingDragCoef, rotationDragCoef=rotationDragCoef, usingPhysics=usingPhysics, parentedTracker=parentedTracker, node=transportationGroup) #VC: init the mappings for the raw object if initFlag&vizconnect.INIT_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(transport): if rawInput['keyboard'].isButtonDown(17):# make=Generic, model=Keyboard, name=keyboard, signal=Key W transport.moveForward(mag=1) if rawInput['keyboard'].isButtonDown(31):# make=Generic, model=Keyboard, name=keyboard, signal=Key S transport.moveBackward(mag=1) if rawInput['keyboard'].isButtonDown(30):# make=Generic, model=Keyboard, name=keyboard, signal=Key A transport.moveLeft(mag=1) if rawInput['keyboard'].isButtonDown(32):# make=Generic, model=Keyboard, name=keyboard, signal=Key D transport.moveRight(mag=1) if rawInput['keyboard'].isButtonDown(57):# make=Generic, model=Keyboard, name=keyboard, signal=Key SPACE transport.moveUp(mag=1) if rawInput['keyboard'].isButtonDown(29):# make=Generic, model=Keyboard, name=keyboard, signal=Key CONTROL_L transport.moveDown(mag=1) if rawInput['keyboard'].isButtonDown(16):# make=Generic, model=Keyboard, name=keyboard, signal=Key Q transport.turnLeft(mag=1) if rawInput['keyboard'].isButtonDown(18):# make=Generic, model=Keyboard, name=keyboard, signal=Key E transport.turnRight(mag=1) rawTransport[_name].setUpdateFunction(update) #VC: init the wrapper (DO NOT EDIT) if initFlag&vizconnect.INIT_WRAPPERS: vizconnect.addTransport(rawTransport[_name], _name, make='Virtual', model='WandMagicCarpet') #VC: set the pivot of the node if initFlag&vizconnect.INIT_PIVOTS: vizconnect.getTransport(_name).setPivot(vizconnect.getDisplay('rift').getNode3d()) #VC: return values can be modified here return None
def initTransports(initFlag=vizconnect.INIT_INDEPENDENT, initList=None): #VC: place any general initialization code here rawTransport = vizconnect.getRawTransportDict() #VC: initialize a new transport _name = 'main_transport' if vizconnect.isPendingInit('transport', _name, initFlag, initList): #VC: request that any dependencies be created if initFlag&vizconnect.INIT_INDEPENDENT: initTrackers(vizconnect.INIT_INDEPENDENT, ['head_tracker']) #VC: init the raw object if initFlag&vizconnect.INIT_RAW: #VC: set some parameters orientationTracker = vizconnect.getTracker('head_tracker').getNode3d() debug = False acceleration = 4.0 maxSpeed = 10.44 rotationAcceleration = 90.0 maxRotationSpeed = 120.0 autoBreakingDragCoef = 0.1 dragCoef = 0.0001 rotationAutoBreakingDragCoef = 0.2 rotationDragCoef = 0.0001 usingPhysics = False parentedTracker = False transportationGroup = None #VC: create the raw object from transportation import wand_magic_carpet rawTransport[_name] = wand_magic_carpet.WandMagicCarpet( orientationTracker=orientationTracker, debug=debug, acceleration=acceleration, maxSpeed=maxSpeed, rotationAcceleration=rotationAcceleration, maxRotationSpeed=maxRotationSpeed, autoBreakingDragCoef=autoBreakingDragCoef, dragCoef=dragCoef, rotationAutoBreakingDragCoef=rotationAutoBreakingDragCoef, rotationDragCoef=rotationDragCoef, usingPhysics=usingPhysics, parentedTracker=parentedTracker, node=transportationGroup) #VC: init the mappings for the raw object if initFlag&vizconnect.INIT_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(transport): if rawInput['keyboard'].isButtonDown(17):# make=Generic, model=Keyboard, name=keyboard, signal=Key W transport.moveForward(mag=1) if rawInput['keyboard'].isButtonDown(31):# make=Generic, model=Keyboard, name=keyboard, signal=Key S transport.moveBackward(mag=1) if rawInput['keyboard'].isButtonDown(30):# make=Generic, model=Keyboard, name=keyboard, signal=Key A transport.moveLeft(mag=1) if rawInput['keyboard'].isButtonDown(32):# make=Generic, model=Keyboard, name=keyboard, signal=Key D transport.moveRight(mag=1) if rawInput['keyboard'].isButtonDown(45):# make=Generic, model=Keyboard, name=keyboard, signal=Key X transport.moveUp(mag=1) if rawInput['keyboard'].isButtonDown(44):# make=Generic, model=Keyboard, name=keyboard, signal=Key Z transport.moveDown(mag=1) if rawInput['keyboard'].isButtonDown(16):# make=Generic, model=Keyboard, name=keyboard, signal=Key Q transport.turnLeft(mag=1) if rawInput['keyboard'].isButtonDown(18):# make=Generic, model=Keyboard, name=keyboard, signal=Key E transport.turnRight(mag=1) rawTransport[_name].setUpdateFunction(update) #VC: init the wrapper (DO NOT EDIT) if initFlag&vizconnect.INIT_WRAPPERS: vizconnect.addTransport(rawTransport[_name], _name, make='Virtual', model='WandMagicCarpet') #VC: set the pivot of the node if initFlag&vizconnect.INIT_PIVOTS: vizconnect.getTransport(_name).setPivot(vizconnect.getAvatar('main_avatar').getAttachmentPoint('head').getNode3d()) #VC: set the name of the default vizconnect.setDefault('transport', 'main_transport') #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 initTransports(initFlag=vizconnect.INIT_INDEPENDENT, initList=None): #VC: place any general initialization code here rawTransport = vizconnect.getRawTransportDict() #VC: initialize a new transport _name = 'wandmagiccarpet' if vizconnect.isPendingInit('transport', _name, initFlag, initList): #VC: request that any dependencies be created if initFlag&vizconnect.INIT_INDEPENDENT: initTrackers(vizconnect.INIT_INDEPENDENT, ['rift_orientation_tracker']) #VC: init the raw object if initFlag&vizconnect.INIT_RAW: #VC: set some parameters orientationTracker = vizconnect.getTracker('rift_orientation_tracker').getNode3d() debug = False acceleration = 20 maxSpeed = 20 rotationAcceleration = 60 maxRotationSpeed = 65 autoBreakingDragCoef = 0 dragCoef = 0.5 rotationAutoBreakingDragCoef = 0 rotationDragCoef = 0.5 usingPhysics = False parentedTracker = False transportationGroup = None #VC: create the raw object from transportation import wand_magic_carpet rawTransport[_name] = wand_magic_carpet.WandMagicCarpet( orientationTracker=orientationTracker, debug=debug, acceleration=acceleration, maxSpeed=maxSpeed, rotationAcceleration=rotationAcceleration, maxRotationSpeed=maxRotationSpeed, autoBreakingDragCoef=autoBreakingDragCoef, dragCoef=dragCoef, rotationAutoBreakingDragCoef=rotationAutoBreakingDragCoef, rotationDragCoef=rotationDragCoef, usingPhysics=usingPhysics, parentedTracker=parentedTracker, node=transportationGroup) #VC: init the mappings for the raw object if initFlag&vizconnect.INIT_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(transport): if rawInput['joystick'].getPosition()[1] < -0.05:# make=Generic, model=Joystick, name=joystick, signal=Analog Up transport.moveForward(mag=abs(rawInput['joystick'].getPosition()[1])) if rawInput['joystick'].getPosition()[1] > 0.05:# make=Generic, model=Joystick, name=joystick, signal=Analog Down transport.moveBackward(mag=abs(rawInput['joystick'].getPosition()[1])) if rawInput['joystick'].getPosition()[0] < -0.05:# make=Generic, model=Joystick, name=joystick, signal=Analog Left transport.moveLeft(mag=abs(rawInput['joystick'].getPosition()[0])) if rawInput['joystick'].getPosition()[0] > 0.05:# make=Generic, model=Joystick, name=joystick, signal=Analog Right transport.moveRight(mag=abs(rawInput['joystick'].getPosition()[0])) rawTransport[_name].setUpdateFunction(update) #VC: init the wrapper (DO NOT EDIT) if initFlag&vizconnect.INIT_WRAPPERS: vizconnect.addTransport(rawTransport[_name], _name, make='Virtual', model='WandMagicCarpet') #VC: return values can be modified here return None
def initTools(initFlag=vizconnect.INIT_INDEPENDENT, initList=None): #VC: place any general initialization code here rawTool = vizconnect.getRawToolDict() #VC: initialize a new tool _name = 'grabber' if vizconnect.isPendingInit('tool', _name, initFlag, initList): #VC: init which needs to happen before viz.go if initFlag & vizconnect.INIT_PREVIZGO: viz.setOption('viz.display.stencil', 1) #VC: init the raw object if initFlag & vizconnect.INIT_RAW: #VC: initialization code needed by the parameters import tools from tools import grabber from tools import highlighter #VC: set some parameters usingPhysics = False highlightMode = tools.highlighter.MODE_OUTLINE placementMode = tools.placer.MODE_MID_AIR #VC: create the raw object rawTool[_name] = grabber.Grabber( usingPhysics=usingPhysics, usingSprings=usingPhysics, highlightMode=highlightMode, placementMode=placementMode, updatePriority=vizconnect.PRIORITY_ANIMATOR + 3) #VC: init the mappings for the raw object if initFlag & vizconnect.INIT_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(tool): #if rawInput['joystick'].isInMode('super') and rawInput['joystick'].isButtonDown(4):# make=Generic, model=Joystick, name=joystick, signal=Button 4 #tool.grab() #rawTool[_name].setUpdateFunction(update) #VC: init the wrapper (DO NOT EDIT) if initFlag & vizconnect.INIT_WRAPPERS: vizconnect.addTool(rawTool[_name], _name, make='Virtual', model='Grabber') #VC: set the parent of the node if initFlag & vizconnect.INIT_PARENTS: vizconnect.getTool(_name).setParent( vizconnect.getTracker('ppt_rhand')) #VC: initialize a new tool _name = 'grabber2' if vizconnect.isPendingInit('tool', _name, initFlag, initList): #VC: init which needs to happen before viz.go if initFlag & vizconnect.INIT_PREVIZGO: viz.setOption('viz.display.stencil', 1) #VC: init the raw object if initFlag & vizconnect.INIT_RAW: #VC: initialization code needed by the parameters import tools from tools import grabber from tools import highlighter #VC: set some parameters usingPhysics = True highlightMode = tools.highlighter.MODE_OUTLINE placementMode = tools.placer.MODE_MID_AIR #VC: create the raw object rawTool[_name] = grabber.Grabber( usingPhysics=usingPhysics, usingSprings=usingPhysics, highlightMode=highlightMode, placementMode=placementMode, updatePriority=vizconnect.PRIORITY_ANIMATOR + 3) #VC: init the wrapper (DO NOT EDIT) if initFlag & vizconnect.INIT_WRAPPERS: vizconnect.addTool(rawTool[_name], _name, make='Virtual', model='Grabber') #VC: set the name of the default vizconnect.setDefault('tool', 'grabber') #VC: return values can be modified here return None