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 __init__(self): vizconnect.go('vizconnect_config_cave_art.py') _startPos = [28, 2.45, 160] ### Collision ### Desktop #viz.collision(viz.ON) viz.MainView.setPosition(_startPos) ### Cave ac = view_collision.AvatarCollision() ac.setCollideList([vizconnect.AVATAR_HEAD]) ac.setTransport(vizconnect.getTransport().getNode3d()) #viz.MainView.gravity(9.81) self.view = vizconnect.getGroup( 'cave_manual_configuration').getNode3d() #self.setCameraPosition([120, 3.3, 87]) self.setCameraPosition(_startPos, viz.ABS_GLOBAL) #self.view.setEuler([-90,0,7],viz.ABS_LOCAL) ### Scene Lighting self.setupLighting()
def initGroups(initFlag=vizconnect.INIT_INDEPENDENT, initList=None): #VC: place any general initialization code here rawGroup = vizconnect.getRawGroupDict() #VC: initialize a new group _name = 'cave_manual_configuration' if vizconnect.isPendingInit('group', _name, initFlag, initList): #VC: init the raw object if initFlag & vizconnect.INIT_RAW: #VC: create the raw object rawGroup[_name] = viz.addGroup() #VC: init the wrapper (DO NOT EDIT) if initFlag & vizconnect.INIT_WRAPPERS: vizconnect.addGroup(rawGroup[_name], _name, make='Virtual', model='Origin') #VC: set the parent of the node if initFlag & vizconnect.INIT_PARENTS: vizconnect.getGroup(_name).setParent( vizconnect.getTransport('wandmagiccarpet')) #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 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 = 70 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.getTransport('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 = 'wandmagiccarpet' if vizconnect.isPendingInit('transport', _name, initFlag, initList): #VC: init the raw object if initFlag&vizconnect.INIT_RAW: #VC: set some parameters orientationTracker = None 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_analog'].getData()[1] > 0.05:# make=Generic, model=VRPN Analog, name=flystick_analog, signal=Analog 1 Positive transport.moveForward(mag=abs(rawInput['flystick_analog'].getData()[1])) if rawInput['flystick_analog'].getData()[1] < -0.05:# make=Generic, model=VRPN Analog, name=flystick_analog, signal=Analog 1 Negative transport.moveBackward(mag=abs(rawInput['flystick_analog'].getData()[1])) if rawInput['flystick_analog'].getData()[0] < -0.05:# make=Generic, model=VRPN Analog, name=flystick_analog, signal=Analog 0 Negative transport.moveLeft(mag=abs(rawInput['flystick_analog'].getData()[0])) if rawInput['flystick_analog'].getData()[0] > 0.05:# make=Generic, model=VRPN Analog, name=flystick_analog, signal=Analog 0 Positive transport.moveRight(mag=abs(rawInput['flystick_analog'].getData()[0])) if rawInput['flystick_buttons'].isButtonDown(3):# make=Generic, model=VRPN Buttons, name=flystick_buttons, signal=Button 3 transport.moveUp(mag=1) if rawInput['flystick_buttons'].isButtonDown(2):# make=Generic, model=VRPN Buttons, name=flystick_buttons, signal=Button 2 transport.moveDown(mag=1) if rawInput['flystick_buttons'].isButtonDown(4):# make=Generic, model=VRPN Buttons, name=flystick_buttons, signal=Button 4 transport.turnLeft(mag=1) if rawInput['flystick_buttons'].isButtonDown(1):# make=Generic, model=VRPN Buttons, name=flystick_buttons, signal=Button 1 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('head_and_hand').getAttachmentPoint('head').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 = 'walking' if vizconnect.isPendingInit('transport', _name, initFlag, initList): #VC: init the raw object if initFlag & vizconnect.INIT_RAW: #VC: set some parameters height = 0 acceleration = 4 maxSpeed = 10.44 rotationAcceleration = 90 maxRotationSpeed = 120 autoBreakingDragCoef = 0.1 dragCoef = 0.001 rotationAutoBreakingDragCoef = 0.2 rotationDragCoef = 0.001 transportationGroup = None #VC: create the raw object from transportation import walking rawTransport[_name] = walking.Walking( node=transportationGroup, height=height, acceleration=acceleration, maxSpeed=maxSpeed, rotationAcceleration=rotationAcceleration, maxRotationSpeed=maxRotationSpeed, autoBreakingDragCoef=autoBreakingDragCoef, dragCoef=dragCoef, rotationAutoBreakingDragCoef=rotationAutoBreakingDragCoef, rotationDragCoef=rotationDragCoef) #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.25: # make=Generic, model=Joystick, name=joystick, signal=Analog Up transport.moveForward( mag=abs(rawInput['joystick'].getPosition()[1])) if rawInput['joystick'].getPosition( )[1] > 0.25: # make=Generic, model=Joystick, name=joystick, signal=Analog Down transport.moveBackward( mag=abs(rawInput['joystick'].getPosition()[1])) if rawInput['joystick'].getPosition( )[0] < -0.25: # make=Generic, model=Joystick, name=joystick, signal=Analog Left transport.moveLeft( mag=abs(rawInput['joystick'].getPosition()[0])) if rawInput['joystick'].getPosition( )[0] > 0.25: # make=Generic, model=Joystick, name=joystick, signal=Analog Right transport.moveRight( mag=abs(rawInput['joystick'].getPosition()[0])) if rawInput['joystick'].getPosition( )[2] < -0.25: # make=Generic, model=Joystick, name=joystick, signal=Analog Z Down transport.moveUp( mag=abs(rawInput['joystick'].getPosition()[2])) if rawInput['joystick'].getPosition( )[2] > 0.25: # make=Generic, model=Joystick, name=joystick, signal=Analog Z Up transport.moveDown( mag=abs(rawInput['joystick'].getPosition()[2])) if rawInput['joystick'].getRotation( )[1] > 0.25: # make=Generic, model=Joystick, name=joystick, signal=Rotate Y Right transport.lookUp( mag=abs(rawInput['joystick'].getRotation()[1])) if rawInput['joystick'].getRotation( )[1] < -0.25: # make=Generic, model=Joystick, name=joystick, signal=Rotate Y Left transport.lookDown( mag=abs(rawInput['joystick'].getRotation()[1])) if rawInput['joystick'].getRotation( )[0] < -0.25: # make=Generic, model=Joystick, name=joystick, signal=Rotate X Left transport.turnLeft( mag=abs(rawInput['joystick'].getRotation()[0])) if rawInput['joystick'].getRotation( )[0] > 0.25: # make=Generic, model=Joystick, name=joystick, signal=Rotate X Right transport.turnRight( mag=abs(rawInput['joystick'].getRotation()[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='Walking') #VC: set the parent of the node if initFlag & vizconnect.INIT_PARENTS: vizconnect.getTransport(_name).setParent(vizconnect.getRoot()) #VC: set the pivot of the node if initFlag & vizconnect.INIT_PIVOTS: vizconnect.getTransport(_name).setPivot(None) #VC: return values can be modified here return None
#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() #Left Bumper = Button 4 #Right Bumper = Button 5 leftArm = avatarNova.getBone('Bip01 L UpperArm')
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
steerdisplay = viz.addTextbox() steerdisplay.setPosition(0.11, 0.95) cardisplay = viz.addTextbox() cardisplay.setPosition(0.9, 0.02) geardisplay = viz.addTextbox() geardisplay.setPosition(0.11, 0.915) headLight = viz.MainView.getHeadLight() headLight.disable() myLight = viz.addLight() view = viz.MainView if environmentchoice == 0: myLight.intensity(1) else: myLight.intensity(0.25) myLight.setEuler(45, 12, 0) camera = vizconnect.getTransport('orientation') rotcam = viz.link(offsetNode, camera.getNode3d()) viz.mergeLinkable(rotcam, view) def ChangeCar(direction): global carchoice global speed global accel global steer if direction == 2: carchoice += 1 if carchoice > NUM_CARS: carchoice = 1 else:
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 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, ['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['ppt_wand'].getJoystickPosition( )[1] < -0.05: # make=WorldViz, model=PPT Wand, name=ppt_wand, signal=Analog Up transport.moveForward(mag=abs( rawInput['ppt_wand'].getJoystickPosition()[1])) if rawInput['ppt_wand'].getJoystickPosition( )[1] > 0.05: # make=WorldViz, model=PPT Wand, name=ppt_wand, signal=Analog Down transport.moveBackward(mag=abs( rawInput['ppt_wand'].getJoystickPosition()[1])) if rawInput['ppt_wand'].isButtonDown( 1 ): # make=WorldViz, model=PPT Wand, name=ppt_wand, signal=Top Left Button transport.moveLeft(mag=1) if rawInput['ppt_wand'].isButtonDown( 2 ): # make=WorldViz, model=PPT Wand, name=ppt_wand, signal=Top Right Button transport.moveRight(mag=1) if rawInput['ppt_wand'].isButtonDown( 0 ): # make=WorldViz, model=PPT Wand, name=ppt_wand, signal=Bottom Left Button transport.moveUp(mag=1) if rawInput['ppt_wand'].isButtonDown( 3 ): # make=WorldViz, model=PPT Wand, name=ppt_wand, signal=Bottom Right Button transport.moveDown(mag=1) if rawInput['ppt_wand'].getJoystickPosition( )[0] < -0.05: # make=WorldViz, model=PPT Wand, name=ppt_wand, signal=Analog Left transport.turnLeft(mag=abs( rawInput['ppt_wand'].getJoystickPosition()[0])) if rawInput['ppt_wand'].getJoystickPosition( )[0] > 0.05: # make=WorldViz, model=PPT Wand, name=ppt_wand, signal=Analog Right transport.turnRight(mag=abs( rawInput['ppt_wand'].getJoystickPosition()[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 parent of the node if initFlag & vizconnect.INIT_PARENTS: vizconnect.getTransport(_name).setParent(vizconnect.getRoot()) #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 = 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_6DOF), } #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 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 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['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 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('rift_with_mouse_and_keyboard').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.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: 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 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['r_hand_input'].isButtonDown(1):# make=Generic, model=Joystick, name=r_hand_input, signal=Button 1 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('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 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 = '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 = '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 initTransports(initFlag=vizconnect.INIT_INDEPENDENT, initList=None): #VC: place any general initialization code here rawTransport = vizconnect.getRawTransportDict() #VC: initialize a new transport _name = 'walking' if vizconnect.isPendingInit('transport', _name, initFlag, initList): #VC: init the raw object if initFlag&vizconnect.INIT_RAW: #VC: set some parameters height = 0 acceleration = 4 maxSpeed = 10.44 rotationAcceleration = 90 maxRotationSpeed = 120 autoBreakingDragCoef = 0.1 dragCoef = 0.0001 rotationAutoBreakingDragCoef = 0.2 rotationDragCoef = 0.0001 transportationGroup = None #VC: create the raw object from transportation import walking rawTransport[_name] = walking.Walking( node=transportationGroup, height=height, acceleration=acceleration, maxSpeed=maxSpeed, rotationAcceleration=rotationAcceleration, maxRotationSpeed=maxRotationSpeed, autoBreakingDragCoef=autoBreakingDragCoef, dragCoef=dragCoef, rotationAutoBreakingDragCoef=rotationAutoBreakingDragCoef, rotationDragCoef=rotationDragCoef) #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])) if rawInput['joystick'].getRotation()[0] < -0.05:# make=Generic, model=Joystick, name=joystick, signal=Rotate X Left transport.turnLeft(mag=abs(rawInput['joystick'].getRotation()[0])) if rawInput['joystick'].getRotation()[0] > 0.05:# make=Generic, model=Joystick, name=joystick, signal=Rotate X Right transport.turnRight(mag=abs(rawInput['joystick'].getRotation()[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='Walking') #VC: set the parent of the node if initFlag&vizconnect.INIT_PARENTS: vizconnect.getTransport(_name).setParent(vizconnect.getRoot()) #VC: set the name of the default vizconnect.setDefault('transport', 'wandmagicccarpet') #VC: return values can be modified here return None