class Processor(blendervr.processor.getProcessor()): def __init__(self, parent): super(Processor, self).__init__(parent) if self.BlenderVR.isMaster(): self.BlenderVR.getSceneSynchronizer().getItem(bge.logic).activate(True, True) from blendervr.interactor.head_controlled_navigation import HCNav self._navigator = HCNav(self, method=None, one_per_user=True) self.registerInteractor(self._navigator) self._navigator.setPositionFactors(1, 20.0, 1.0) from blendervr.interactor.viewpoint import ViewPoint self._viewpoint = ViewPoint(self) self._viewpoint.viewpointScale = 0.2 self.registerInteractor(self._viewpoint) self._users = [] def keyboardAndMouse(self, info): """ Function called by the processor during running-time everytime a key is pressed or a mouse event is triggered. """ try: from blendervr.player import device if info['state'] == device.STATE_PRESS: if info['key'] == ord('q'): self.BlenderVR.quit("pressed 'q' key") elif info['key'] == ord('v'): self._viewpoint.activation(not self._viewpoint.isActivated()) # Head Navigation Setup elif info['key'] == ord('1'): self.logger.info("Calibrating Navigation") for user in self._users: self._navigator.update(self._navigator.CALIBRATE, user) elif info['key'] == ord('2'): self.logger.info("Start Navigation") for user in self._users: self._navigator.update(self._navigator.TOGGLE, user) elif info['key'] == ord('3'): self.logger.info("Reset Navigation") self.reset(self._users) elif info['key'] == ord('4'): self.logger.info("Quitting") self.BlenderVR.quit("Because user asked!") except (KeyError, SystemExit): pass except Exception as err: self.logger.log_traceback(err) super(Processor, self).keyboardAndMouse(info) def reset(self, users=None): """ Reset all the user position and orientations. A new calibration will be required. """ if not hasattr(self, '_navigator'): return if users is None: users = list(self.BlenderVR.getAllUsers().values()) for user in users: self._navigator.update(self._navigator.RESET, user) user.resetVehiclePosition() def user_position(self, info): """ Callback for one of the sensors of a tracker device. Defined in the XML config file. Callback defined in the XML config file to one of the VRPN tracker sensors """ try: if not self._users: for user in info['users']: self._users.append(user) for user in info['users']: self._navigator.setHeadLocation(user, info) except Exception as err: self.logger.log_traceback(err) super(Processor, self).user_position(info)
class Processor(blendervr.processor.getProcessor()): def __init__(self, parent): super(Processor, self).__init__(parent) if self.BlenderVR.isMaster(): self.BlenderVR.getSceneSynchronizer().getItem(bge.logic).activate(True, True) from blendervr.interactor.head_controlled_navigation import HCNav self._navigator = HCNav(self, method=None, one_per_user=True) self._user = self.BlenderVR.getUserByName('user A') self._navigator.setDefaultUser(self._user) self.registerInteractor(self._navigator) self._navigator.setPositionFactors(1, 20.0, 1.0) from blendervr.interactor.viewpoint import ViewPoint self._viewpoint = ViewPoint(self) self._viewpoint.viewpointScale = 0.2 self.registerInteractor(self._viewpoint) def keyboardAndMouse(self, info): """ Function called by the processor during running-time everytime a key is pressed or a mouse event is triggered. """ try: from blendervr.player import device if info['state'] == device.STATE_PRESS: if info['key'] == ord('q'): self.BlenderVR.quit("pressed 'q' key") elif info['key'] == ord('v'): self._viewpoint.activation(not self._viewpoint.isActivated()) # Head Navigation Setup elif info['key'] == ord('1'): self.logger.info("Calibrating Navigation") self._navigator.update(self._navigator.CALIBRATE, self._user) elif info['key'] == ord('2'): self.logger.info("Start Navigation") self._navigator.update(self._navigator.TOGGLE, self._user) elif info['key'] == ord('3'): self.logger.info("Reset Navigation") self.reset() elif info['key'] == ord('4'): self.logger.info("Quitting") self.BlenderVR.quit("Because user asked!") except (KeyError, SystemExit): pass except Exception as err: self.logger.log_traceback(err) super(Processor, self).keyboardAndMouse(info) def reset(self): """ Reset all the user position and orientations. A new calibration will be required. """ if not hasattr(self, '_navigator'): return self._navigator.update(self._navigator.RESET, self._user) self._user.resetVehiclePosition() def user_position(self, info): """ Callback for one of the sensors of a tracker device. Defined in the XML config file. Callback defined in the XML config file to one of the VRPN tracker sensors """ super(Processor, self).user_position(info) try: for user in info['users']: if user == self._user: self._navigator.setHeadLocation(user, info) except Exception as err: self.logger.log_traceback(err)