def __init__(self): super().__init__() vr_sys = openvr.init(openvr.VRApplication_Scene) poses_t = openvr.TrackedDevicePose_t * openvr.k_unMaxTrackedDeviceCount poses = poses_t() print("Recommended W H:", vr_sys.getRecommendedRenderTargetSize()) ctrls = [] for i in range(5): c = vr_sys.getTrackedDeviceClass(i) if c == openvr.TrackedDeviceClass_HMD: HMD_id = i elif c == openvr.TrackedDeviceClass_Controller: print("Controller:", i) ctrls.append(i) self.ov = openvr.VROverlay() self.cmp = openvr.VRCompositor() self.vrsys = openvr.VRSystem() self.CONTROLLERS = ctrls self.VRposes = poses k = random.randint(0, 1000) self.vrBuf1 = self.ov.createOverlay("Buffer 1 " + str(k), "A") self.vrBuf2 = self.ov.createOverlay("Buffer 2 " + str(k), "B") # FOV 80 size 0.2 # FOV 120 size 0.6 self.ov.setOverlayWidthInMeters(self.vrBuf1, 0.6) self.ov.setOverlayWidthInMeters(self.vrBuf2, 0.6) self.ov.setOverlayFromFile(self.vrBuf1, PATH + "lib/Combat.png") self.ov.setOverlayFromFile(self.vrBuf2, PATH + "lib/Combat.png") self.ov.showOverlay(self.vrBuf1) self.ov.showOverlay(self.vrBuf2) mt = [(ctypes.c_float * 4)(1, 0, 0, 0.02), (ctypes.c_float * 4)(0, 1, 0, 0), (ctypes.c_float * 4)(0, 0, 1, -0.2)] y = openvr.HmdMatrix34_t(*mt) self.ov.setOverlayTransformTrackedDeviceRelative( self.vrBuf1, HMD_id, y) self.ov.setOverlayTransformTrackedDeviceRelative( self.vrBuf2, HMD_id, y) self.VRMode = True
def check_result(result): if result: error_name = openvr.VROverlay().getOverlayErrorNameFromEnum(result) raise Exception("OpenVR Error:", error_name)