def init(): """ called from logic brick """ if not hasattr(logic, 'setRender'): print("ERROR: You require a patched Blender with bge.logic.setRender() method") return logic.endGame() scene = logic.getCurrentScene() camera = scene.objects.get('Camera.VR') if not camera: print("ERROR: Missing special Camera.VR object") return logic.endGame() backend = camera['backend'] hmd = HMD(backend) if not hmd.start(): return logic.endGame() """ waiting for the following fix to use logic.globalDict instead of globals https://developer.blender.org/T46870 (this is fixed, but it has not been merged in decklink yet) """ logic.hmd = hmd
def init(self, context): """ Initialize device :return: return True if the device was properly initialized :rtype: bool """ try: HMD = self._getHMDClass() self._hmd = HMD() # gather arguments from HMD self.setEye(0) self.width = self._hmd.width_left self.height = self._hmd.height_left self.setEye(1) self.width = self._hmd.width_right self.height = self._hmd.height_right # initialize FBO if not super(Oculus, self).init(): raise Exception("Failed to initialize HMD") # send it back to HMD if not self._setup(): raise Exception("Failed to setup Oculus") # set status to okay. self.status = "HMD Initialized" except Exception as E: self.error("init", E, True) self._hmd = None return False else: return True
def init(self, context): """ Initialize device :return: return True if the device was properly initialized :rtype: bool """ try: HMD = self._getHMDClass() self._hmd = HMD() # gather arguments from HMD self.setEye(0) self.width = self._hmd.width_left self.height = self._hmd.height_left self.setEye(1) self.width = self._hmd.width_right self.height = self._hmd.height_right # initialize FBO if not super(Oculus, self).init(): raise Exception("Failed to initialize HMD") # send it back to HMD if not self._setup(): raise Exception("Failed to setup Oculus") except Exception as E: self.error("init", E, True) self._hmd = None return False else: return True
class Oculus(HMD_Base): def __init__(self, context, error_callback): super(Oculus, self).__init__('Oculus', True, context, error_callback) checkModule('hmd_sdk_bridge') def _getHMDClass(self): from bridge.hmd.oculus import HMD return HMD @property def projection_matrix(self): if self._current_eye: matrix = self._hmd.getProjectionMatrixRight(self._near, self._far) else: matrix = self._hmd.getProjectionMatrixLeft(self._near, self._far) self.projection_matrix = matrix return super(Oculus, self).projection_matrix @projection_matrix.setter def projection_matrix(self, value): self._projection_matrix[self._current_eye] = \ self._convertMatrixTo4x4(value) def init(self, context): """ Initialize device :return: return True if the device was properly initialized :rtype: bool """ try: HMD = self._getHMDClass() self._hmd = HMD() # gather arguments from HMD self.setEye(0) self.width = self._hmd.width_left self.height = self._hmd.height_left self.setEye(1) self.width = self._hmd.width_right self.height = self._hmd.height_right # initialize FBO if not super(Oculus, self).init(): raise Exception("Failed to initialize HMD") # send it back to HMD if not self._setup(): raise Exception("Failed to setup Oculus") except Exception as E: self.error("init", E, True) self._hmd = None return False else: return True def _setup(self): return self._hmd.setup(self._color_texture[0], self._color_texture[1]) def loop(self, context): """ Get fresh tracking data """ try: data = self._hmd.update() self._eye_orientation_raw[0] = data[0] self._eye_orientation_raw[1] = data[2] self._eye_position_raw[0] = data[1] self._eye_position_raw[1] = data[3] # update matrices super(Oculus, self).loop(context) except Exception as E: self.error("loop", E, False) return False return True def frameReady(self): """ The frame is ready to be sent to the device """ try: self._hmd.frameReady() except Exception as E: self.error("frameReady", E, False) return False return True def reCenter(self): """ Re-center the HMD device :return: return True if success :rtype: bool """ return self._hmd.reCenter() def quit(self): """ Garbage collection """ self._hmd = None return super(Oculus, self).quit()
class Oculus(HMD_Base): def __init__(self, context, error_callback): super(Oculus, self).__init__('Oculus', True, context, error_callback) checkModule('hmd_sdk_bridge') def _getHMDClass(self): from bridge.hmd.oculus import HMD return HMD @property def projection_matrix(self): if self._current_eye: matrix = self._hmd.getProjectionMatrixRight(self._near, self._far) else: matrix = self._hmd.getProjectionMatrixLeft(self._near, self._far) self.projection_matrix = matrix return super(Oculus, self).projection_matrix @projection_matrix.setter def projection_matrix(self, value): self._projection_matrix[self._current_eye] = \ self._convertMatrixTo4x4(value) def init(self, context): """ Initialize device :return: return True if the device was properly initialized :rtype: bool """ try: HMD = self._getHMDClass() self._hmd = HMD() # gather arguments from HMD self.setEye(0) self.width = self._hmd.width_left self.height = self._hmd.height_left self.setEye(1) self.width = self._hmd.width_right self.height = self._hmd.height_right # initialize FBO if not super(Oculus, self).init(): raise Exception("Failed to initialize HMD") # send it back to HMD if not self._setup(): raise Exception("Failed to setup Oculus") # set status to okay. self.status = "HMD Initialized" except Exception as E: self.error("init", E, True) self._hmd = None return False else: return True def _setup(self): return self._hmd.setup(self._color_texture[0], self._color_texture[1]) def loop(self, context): """ Get fresh tracking data """ try: data = self._hmd.update() self._eye_orientation_raw[0] = data[0] self._eye_orientation_raw[1] = data[2] self._eye_position_raw[0] = data[1] self._eye_position_raw[1] = data[3] # update matrices super(Oculus, self).loop(context) except Exception as E: self.error("loop", E, False) return False return True def frameReady(self): """ The frame is ready to be sent to the device """ try: self._hmd.frameReady() except Exception as E: self.error("frameReady", E, False) return False return True def reCenter(self): """ Re-center the HMD device :return: return True if success :rtype: bool """ return self._hmd.reCenter() def quit(self): """ Garbage collection """ self._hmd = None return super(Oculus, self).quit()