Esempio n. 1
0
 def __init__(self, multisample=0, znear=0.1, zfar=1000, poll_tracked_device_frequency=None):
     self.vr_system = openvr.init(openvr.VRApplication_Scene)
     w, h = self.vr_system.getRecommendedRenderTargetSize()
     self.vr_framebuffers = (OpenVRFramebuffer(w, h, multisample=multisample),
                             OpenVRFramebuffer(w, h, multisample=multisample))
     self._multisample = multisample
     self.vr_compositor = openvr.VRCompositor()
     if self.vr_compositor is None:
         raise Exception('unable to create compositor')
     self.vr_framebuffers[0].init_gl()
     self.vr_framebuffers[1].init_gl()
     self._poses = (openvr.TrackedDevicePose_t * openvr.k_unMaxTrackedDeviceCount)()
     self.projection_matrices = (np.asarray(matrixForOpenVRMatrix(self.vr_system.getProjectionMatrix(openvr.Eye_Left,
                                                                                                     znear, zfar))),
                                 np.asarray(matrixForOpenVRMatrix(self.vr_system.getProjectionMatrix(openvr.Eye_Right,
                                                                                                     znear, zfar))))
     self.eye_transforms = (np.asarray(matrixForOpenVRMatrix(self.vr_system.getEyeToHeadTransform(openvr.Eye_Left)).I),
                            np.asarray(matrixForOpenVRMatrix(self.vr_system.getEyeToHeadTransform(openvr.Eye_Right)).I))
     self.view = np.eye(4, dtype=np.float32)
     self.view_matrices  = (np.empty((4,4), dtype=np.float32),
                            np.empty((4,4), dtype=np.float32))
     self.controllers = TrackedDevicesActor(self._poses)
     #self.controllers.show_controllers_only = False
     self.controllers.init_gl()
     self.vr_event = openvr.VREvent_t()
     self._poll_tracked_device_count()
     self._poll_tracked_device_frequency = poll_tracked_device_frequency
     self._frames_rendered = 0
     self._pulse_t0 = 0.0
Esempio n. 2
0
 def init_gl(self, clear_color=(0.0, 0.0, 0.0, 0.0)):
     self.vr_system = openvr.init(openvr.VRApplication_Scene)
     w, h = self.vr_system.getRecommendedRenderTargetSize()
     self.render_target_size = np.array((w, h), dtype=np.float32)
     self.vr_framebuffers = (OpenVRFramebuffer(
         w, h, multisample=self.multisample),
                             OpenVRFramebuffer(
                                 w, h, multisample=self.multisample))
     self.vr_compositor = openvr.VRCompositor()
     if self.vr_compositor is None:
         raise Exception('unable to create compositor')
     self.vr_framebuffers[0].init_gl()
     self.vr_framebuffers[1].init_gl()
     self.update_projection_matrix()
     self.eye_to_head_transforms = (
         asarray(
             matrixForOpenVRMatrix(
                 self.vr_system.getEyeToHeadTransform(openvr.Eye_Left))),
         asarray(
             matrixForOpenVRMatrix(
                 self.vr_system.getEyeToHeadTransform(openvr.Eye_Right))))
     self.eye_transforms = (asarray(
         matrixForOpenVRMatrix(
             self.vr_system.getEyeToHeadTransform(openvr.Eye_Left)).I),
                            asarray(
                                matrixForOpenVRMatrix(
                                    self.vr_system.getEyeToHeadTransform(
                                        openvr.Eye_Right)).I))
     gl.glClearColor(*clear_color)
     gl.glEnable(gl.GL_DEPTH_TEST)
 def update_projection_matrix(self):
     znear, zfar = self.znear, self.zfar
     self.projection_matrices = (np.asarray(
         matrixForOpenVRMatrix(
             self.vr_system.getProjectionMatrix(openvr.Eye_Left, znear,
                                                zfar))),
                                 np.asarray(
                                     matrixForOpenVRMatrix(
                                         self.vr_system.getProjectionMatrix(
                                             openvr.Eye_Right, znear,
                                             zfar))))
     self.projection_ltrbs = (np.array(
         self.vr_system.getProjectionRaw(openvr.Eye_Left)),
                              np.array(
                                  self.vr_system.getProjectionRaw(
                                      openvr.Eye_Right)))
Esempio n. 4
0
 def __init__(self,
              multisample=0,
              znear=0.1,
              zfar=1000,
              window_size=(960, 1080)):
     self.vr_system = openvr.init(openvr.VRApplication_Scene)
     w, h = self.vr_system.getRecommendedRenderTargetSize()
     self.window_size = window_size
     self.multisample = multisample
     self.vr_framebuffers = (OpenVRFramebuffer(w,
                                               h,
                                               multisample=multisample),
                             OpenVRFramebuffer(w,
                                               h,
                                               multisample=multisample))
     self.vr_compositor = openvr.VRCompositor()
     if self.vr_compositor is None:
         raise Exception('unable to create compositor')
     self.vr_framebuffers[0].init_gl()
     self.vr_framebuffers[1].init_gl()
     poses_t = openvr.TrackedDevicePose_t * openvr.k_unMaxTrackedDeviceCount
     self.poses = poses_t()
     self.projection_matrices = (np.asarray(
         matrixForOpenVRMatrix(
             self.vr_system.getProjectionMatrix(openvr.Eye_Left, znear,
                                                zfar))),
                                 np.asarray(
                                     matrixForOpenVRMatrix(
                                         self.vr_system.getProjectionMatrix(
                                             openvr.Eye_Right, znear,
                                             zfar))))
     self.eye_transforms = (np.asarray(
         matrixForOpenVRMatrix(
             self.vr_system.getEyeToHeadTransform(openvr.Eye_Left)).I),
                            np.asarray(
                                matrixForOpenVRMatrix(
                                    self.vr_system.getEyeToHeadTransform(
                                        openvr.Eye_Right)).I))
     self.view_matrices = (np.empty(
         (4, 4), dtype=np.float32), np.empty((4, 4), dtype=np.float32))
     self.hmd_matrix = np.eye(4, dtype=np.float32)
     self.vr_event = openvr.VREvent_t()
     self._controller_indices = []
     for i in range(openvr.k_unMaxTrackedDeviceCount):
         if self.vr_system.getTrackedDeviceClass(
                 i) == openvr.TrackedDeviceClass_Controller:
             self._controller_indices.append(i)
 def __init__(self,
              multisample=0,
              znear=0.1,
              zfar=1000,
              window_size=(960, 1080)):
     self.vr_system = openvr.init(openvr.VRApplication_Scene)
     w, h = self.vr_system.getRecommendedRenderTargetSize()
     self.render_target_size = np.array((w, h), dtype=np.float32)
     self.window_size = np.array(window_size, dtype=np.int64)
     self.multisample = multisample
     self.vr_framebuffers = (OpenVRFramebuffer(w,
                                               h,
                                               multisample=multisample),
                             OpenVRFramebuffer(w,
                                               h,
                                               multisample=multisample))
     self.vr_compositor = openvr.VRCompositor()
     if self.vr_compositor is None:
         raise Exception('unable to create compositor')
     self.vr_framebuffers[0].init_gl()
     self.vr_framebuffers[1].init_gl()
     poses_t = openvr.TrackedDevicePose_t * openvr.k_unMaxTrackedDeviceCount
     self.poses = poses_t()
     self.znear, self.zfar = znear, zfar
     self.projection_matrices = (np.asarray(
         matrixForOpenVRMatrix(
             self.vr_system.getProjectionMatrix(openvr.Eye_Left, znear,
                                                zfar))),
                                 np.asarray(
                                     matrixForOpenVRMatrix(
                                         self.vr_system.getProjectionMatrix(
                                             openvr.Eye_Right, znear,
                                             zfar))))
     self.projection_lrbts = (np.array(
         self.vr_system.getProjectionRaw(openvr.Eye_Left)),
                              np.array(
                                  self.vr_system.getProjectionRaw(
                                      openvr.Eye_Right)))
     self.eye_to_head_transforms = (
         np.asarray(
             matrixForOpenVRMatrix(
                 self.vr_system.getEyeToHeadTransform(openvr.Eye_Left))),
         np.asarray(
             matrixForOpenVRMatrix(
                 self.vr_system.getEyeToHeadTransform(openvr.Eye_Right))))
     self.eye_transforms = (np.asarray(
         matrixForOpenVRMatrix(
             self.vr_system.getEyeToHeadTransform(openvr.Eye_Left)).I),
                            np.asarray(
                                matrixForOpenVRMatrix(
                                    self.vr_system.getEyeToHeadTransform(
                                        openvr.Eye_Right)).I))
     self.eye_matrices = (np.eye(4, dtype=np.float32),
                          np.eye(4, dtype=np.float32))
     self.camera_matrices = (np.eye(4, dtype=np.float32),
                             np.eye(4, dtype=np.float32))
     self.hmd_matrix = np.eye(4, dtype=np.float32)
     self.hmd_matrix_inv = np.eye(4, dtype=np.float32)
     self.vr_event = openvr.VREvent_t()
     self._nframes = 0
     self._poll_for_controllers()