🐛[bugfix] Model : 起動処理/終了処理を修正 未起動でのパラメータ変更時のエラーを修正

This commit is contained in:
misyaguziya
2024-12-13 17:32:32 +09:00
parent 0e74833f22
commit 43b481c185

View File

@@ -177,26 +177,26 @@ class Overlay:
self.settings[size]["z_rotation"] = z_rotation self.settings[size]["z_rotation"] = z_rotation
self.settings[size]["tracker"] = tracker self.settings[size]["tracker"] = tracker
match tracker:
case "HMD":
base_matrix = getHMDBaseMatrix()
trackerIndex = openvr.k_unTrackedDeviceIndex_Hmd
case "LeftHand":
base_matrix = getLeftHandBaseMatrix()
trackerIndex = self.overlay_system.getTrackedDeviceIndexForControllerRole(openvr.TrackedControllerRole_LeftHand)
case "RightHand":
base_matrix = getRightHandBaseMatrix()
trackerIndex = self.overlay_system.getTrackedDeviceIndexForControllerRole(openvr.TrackedControllerRole_RightHand)
case _:
base_matrix = getHMDBaseMatrix()
trackerIndex = openvr.k_unTrackedDeviceIndex_Hmd
translation = (self.settings[size]["x_pos"], self.settings[size]["y_pos"], - self.settings[size]["z_pos"])
rotation = (self.settings[size]["x_rotation"], self.settings[size]["y_rotation"], self.settings[size]["z_rotation"])
transform = utils.transform_matrix(base_matrix, translation, rotation)
transform = mat34Id(transform)
if self.initialized is True: if self.initialized is True:
match tracker:
case "HMD":
base_matrix = getHMDBaseMatrix()
trackerIndex = openvr.k_unTrackedDeviceIndex_Hmd
case "LeftHand":
base_matrix = getLeftHandBaseMatrix()
trackerIndex = self.overlay_system.getTrackedDeviceIndexForControllerRole(openvr.TrackedControllerRole_LeftHand)
case "RightHand":
base_matrix = getRightHandBaseMatrix()
trackerIndex = self.overlay_system.getTrackedDeviceIndexForControllerRole(openvr.TrackedControllerRole_RightHand)
case _:
base_matrix = getHMDBaseMatrix()
trackerIndex = openvr.k_unTrackedDeviceIndex_Hmd
translation = (self.settings[size]["x_pos"], self.settings[size]["y_pos"], - self.settings[size]["z_pos"])
rotation = (self.settings[size]["x_rotation"], self.settings[size]["y_rotation"], self.settings[size]["z_rotation"])
transform = utils.transform_matrix(base_matrix, translation, rotation)
transform = mat34Id(transform)
self.overlay.setOverlayTransformTrackedDeviceRelative( self.overlay.setOverlayTransformTrackedDeviceRelative(
self.handle[size], self.handle[size],
trackerIndex, trackerIndex,
@@ -261,19 +261,20 @@ class Overlay:
self.thread_overlay.start() self.thread_overlay.start()
def shutdownOverlay(self): def shutdownOverlay(self):
if isinstance(self.thread_overlay, Thread): if self.initialized is True and self.init_process is False:
self.loop = False if isinstance(self.thread_overlay, Thread):
self.thread_overlay.join() self.loop = False
self.thread_overlay = None self.thread_overlay.join()
if isinstance(self.overlay, openvr.IVROverlay): self.thread_overlay = None
for size in self.settings.keys(): if isinstance(self.overlay, openvr.IVROverlay):
if isinstance(self.handle[size], int): for size in self.settings.keys():
self.overlay.destroyOverlay(self.handle[size]) if isinstance(self.handle[size], int):
self.overlay = None self.overlay.destroyOverlay(self.handle[size])
if isinstance(self.system, openvr.IVRSystem): self.overlay = None
openvr.shutdown() if isinstance(self.system, openvr.IVRSystem):
self.system = None openvr.shutdown()
self.initialized = False self.system = None
self.initialized = False
def reStartOverlay(self): def reStartOverlay(self):
self.shutdownOverlay() self.shutdownOverlay()