👍️[Update] Model : Overlayのフェードの処理を修正

This commit is contained in:
misyaguziya
2024-11-30 15:50:31 +09:00
parent 6e0455ef78
commit 663534acf8
2 changed files with 66 additions and 41 deletions

View File

@@ -708,6 +708,14 @@ class Model:
def updateOverlaySmallLogSettings(self): def updateOverlaySmallLogSettings(self):
size = "small" size = "small"
if (self.overlay.settings[size]["x_pos"] != config.OVERLAY_SMALL_LOG_SETTINGS["x_pos"] or
self.overlay.settings[size]["y_pos"] != config.OVERLAY_SMALL_LOG_SETTINGS["y_pos"] or
self.overlay.settings[size]["z_pos"] != config.OVERLAY_SMALL_LOG_SETTINGS["z_pos"] or
self.overlay.settings[size]["x_rotation"] != config.OVERLAY_SMALL_LOG_SETTINGS["x_rotation"] or
self.overlay.settings[size]["y_rotation"] != config.OVERLAY_SMALL_LOG_SETTINGS["y_rotation"] or
self.overlay.settings[size]["z_rotation"] != config.OVERLAY_SMALL_LOG_SETTINGS["z_rotation"] or
self.overlay.settings[size]["tracker"] != config.OVERLAY_SMALL_LOG_SETTINGS["tracker"]):
self.overlay.updatePosition( self.overlay.updatePosition(
config.OVERLAY_SMALL_LOG_SETTINGS["x_pos"], config.OVERLAY_SMALL_LOG_SETTINGS["x_pos"],
config.OVERLAY_SMALL_LOG_SETTINGS["y_pos"], config.OVERLAY_SMALL_LOG_SETTINGS["y_pos"],
@@ -718,11 +726,16 @@ class Model:
config.OVERLAY_SMALL_LOG_SETTINGS["tracker"], config.OVERLAY_SMALL_LOG_SETTINGS["tracker"],
size, size,
) )
if (self.overlay.settings[size]["display_duration"] != config.OVERLAY_SMALL_LOG_SETTINGS["display_duration"]):
self.overlay.updateDisplayDuration(config.OVERLAY_SMALL_LOG_SETTINGS["display_duration"], size) self.overlay.updateDisplayDuration(config.OVERLAY_SMALL_LOG_SETTINGS["display_duration"], size)
if (self.overlay.settings[size]["fadeout_duration"] != config.OVERLAY_SMALL_LOG_SETTINGS["fadeout_duration"]):
self.overlay.updateFadeoutDuration(config.OVERLAY_SMALL_LOG_SETTINGS["fadeout_duration"], size) self.overlay.updateFadeoutDuration(config.OVERLAY_SMALL_LOG_SETTINGS["fadeout_duration"], size)
if (self.overlay.settings[size]["opacity"] != config.OVERLAY_SMALL_LOG_SETTINGS["opacity"]):
self.overlay.updateOpacity(config.OVERLAY_SMALL_LOG_SETTINGS["opacity"], size, True) self.overlay.updateOpacity(config.OVERLAY_SMALL_LOG_SETTINGS["opacity"], size, True)
if (self.overlay.settings[size]["ui_scaling"] != config.OVERLAY_SMALL_LOG_SETTINGS["ui_scaling"]):
self.overlay.updateUiScaling(config.OVERLAY_SMALL_LOG_SETTINGS["ui_scaling"], size) self.overlay.updateUiScaling(config.OVERLAY_SMALL_LOG_SETTINGS["ui_scaling"], size)
def createOverlayImageLargeLog(self, message_type:str, message:str, translation:str): def createOverlayImageLargeLog(self, message_type:str, message:str, translation:str):
your_language = config.SELECTED_TARGET_LANGUAGES[config.SELECTED_TAB_NO]["primary"]["language"] your_language = config.SELECTED_TARGET_LANGUAGES[config.SELECTED_TAB_NO]["primary"]["language"]
target_language = config.SELECTED_YOUR_LANGUAGES[config.SELECTED_TAB_NO]["primary"]["language"] target_language = config.SELECTED_YOUR_LANGUAGES[config.SELECTED_TAB_NO]["primary"]["language"]
@@ -736,6 +749,13 @@ class Model:
def updateOverlayLargeLogSettings(self): def updateOverlayLargeLogSettings(self):
size = "large" size = "large"
if (self.overlay.settings[size]["x_pos"] != config.OVERLAY_LARGE_LOG_SETTINGS["x_pos"] or
self.overlay.settings[size]["y_pos"] != config.OVERLAY_LARGE_LOG_SETTINGS["y_pos"] or
self.overlay.settings[size]["z_pos"] != config.OVERLAY_LARGE_LOG_SETTINGS["z_pos"] or
self.overlay.settings[size]["x_rotation"] != config.OVERLAY_LARGE_LOG_SETTINGS["x_rotation"] or
self.overlay.settings[size]["y_rotation"] != config.OVERLAY_LARGE_LOG_SETTINGS["y_rotation"] or
self.overlay.settings[size]["z_rotation"] != config.OVERLAY_LARGE_LOG_SETTINGS["z_rotation"] or
self.overlay.settings[size]["tracker"] != config.OVERLAY_LARGE_LOG_SETTINGS["tracker"]):
self.overlay.updatePosition( self.overlay.updatePosition(
config.OVERLAY_LARGE_LOG_SETTINGS["x_pos"], config.OVERLAY_LARGE_LOG_SETTINGS["x_pos"],
config.OVERLAY_LARGE_LOG_SETTINGS["y_pos"], config.OVERLAY_LARGE_LOG_SETTINGS["y_pos"],
@@ -746,9 +766,13 @@ class Model:
config.OVERLAY_LARGE_LOG_SETTINGS["tracker"], config.OVERLAY_LARGE_LOG_SETTINGS["tracker"],
size, size,
) )
if (self.overlay.settings[size]["display_duration"] != config.OVERLAY_LARGE_LOG_SETTINGS["display_duration"]):
self.overlay.updateDisplayDuration(config.OVERLAY_LARGE_LOG_SETTINGS["display_duration"], size) self.overlay.updateDisplayDuration(config.OVERLAY_LARGE_LOG_SETTINGS["display_duration"], size)
if (self.overlay.settings[size]["fadeout_duration"] != config.OVERLAY_LARGE_LOG_SETTINGS["fadeout_duration"]):
self.overlay.updateFadeoutDuration(config.OVERLAY_LARGE_LOG_SETTINGS["fadeout_duration"], size) self.overlay.updateFadeoutDuration(config.OVERLAY_LARGE_LOG_SETTINGS["fadeout_duration"], size)
if (self.overlay.settings[size]["opacity"] != config.OVERLAY_LARGE_LOG_SETTINGS["opacity"]):
self.overlay.updateOpacity(config.OVERLAY_LARGE_LOG_SETTINGS["opacity"], size, True) self.overlay.updateOpacity(config.OVERLAY_LARGE_LOG_SETTINGS["opacity"], size, True)
if (self.overlay.settings[size]["ui_scaling"] != config.OVERLAY_LARGE_LOG_SETTINGS["ui_scaling"]):
self.overlay.updateUiScaling(config.OVERLAY_LARGE_LOG_SETTINGS["ui_scaling"] * 0.25, size) self.overlay.updateUiScaling(config.OVERLAY_LARGE_LOG_SETTINGS["ui_scaling"] * 0.25, size)
def startOverlay(self): def startOverlay(self):

View File

@@ -73,7 +73,7 @@ class Overlay:
self.handle = None self.handle = None
self.init_process = False self.init_process = False
self.initialized = False self.initialized = False
self.loop = True self.loop = False
self.thread_overlay = None self.thread_overlay = None
self.settings = {} self.settings = {}
@@ -132,6 +132,7 @@ class Overlay:
while self.initialized is False: while self.initialized is False:
time.sleep(0.1) time.sleep(0.1)
self.overlay.setOverlayRaw(self.handle[size], img, width, height, 4) self.overlay.setOverlayRaw(self.handle[size], img, width, height, 4)
self.fadeRatio[size] = 1
self.updateOpacity(self.settings[size]["opacity"], size, True) self.updateOpacity(self.settings[size]["opacity"], size, True)
self.lastUpdate[size] = time.monotonic() self.lastUpdate[size] = time.monotonic()
@@ -221,18 +222,18 @@ class Overlay:
printLog("error:Could not check SteamVR running", e) printLog("error:Could not check SteamVR running", e)
return False return False
def evaluateOpacityFade(self, lastUpdate, currentTime, size): def evaluateOpacityFade(self, size):
if (currentTime - lastUpdate) > self.settings[size]["display_duration"]: currentTime = time.monotonic()
timeThroughInterval = currentTime - lastUpdate - self.settings[size]["display_duration"] if (currentTime - self.lastUpdate[size]) > self.settings[size]["display_duration"]:
timeThroughInterval = currentTime - self.lastUpdate[size] - self.settings[size]["display_duration"]
self.fadeRatio[size] = 1 - timeThroughInterval / self.settings[size]["fadeout_duration"] self.fadeRatio[size] = 1 - timeThroughInterval / self.settings[size]["fadeout_duration"]
if self.fadeRatio[size] < 0: if self.fadeRatio[size] < 0:
self.fadeRatio[size] = 0 self.fadeRatio[size] = 0
self.overlay.setOverlayAlpha(self.handle[size], self.fadeRatio[size] * self.settings[size]["opacity"]) self.overlay.setOverlayAlpha(self.handle[size], self.fadeRatio[size] * self.settings[size]["opacity"])
def update(self, size): def update(self, size):
currTime = time.monotonic()
if self.settings[size]["fadeout_duration"] != 0: if self.settings[size]["fadeout_duration"] != 0:
self.evaluateOpacityFade(self.lastUpdate[size], currTime, size) self.evaluateOpacityFade(size)
else: else:
self.updateOpacity(self.settings[size]["opacity"], size, True) self.updateOpacity(self.settings[size]["opacity"], size, True)
@@ -297,8 +298,8 @@ if __name__ == "__main__":
"x_rotation": 0.0, "x_rotation": 0.0,
"y_rotation": 0.0, "y_rotation": 0.0,
"z_rotation": 0.0, "z_rotation": 0.0,
"display_duration": 0, "display_duration": 5,
"fadeout_duration": 100, "fadeout_duration": 2,
"opacity": 1.0, "opacity": 1.0,
"ui_scaling": 1.0, "ui_scaling": 1.0,
"tracker": "HMD", "tracker": "HMD",
@@ -311,11 +312,11 @@ if __name__ == "__main__":
"x_rotation": 0.0, "x_rotation": 0.0,
"y_rotation": 0.0, "y_rotation": 0.0,
"z_rotation": 0.0, "z_rotation": 0.0,
"display_duration": 0, "display_duration": 5,
"fadeout_duration": 100, "fadeout_duration": 2,
"opacity": 1.0, "opacity": 1.0,
"ui_scaling": 1.0, "ui_scaling": 0.25,
"tracker": "RightHand", "tracker": "LeftHand",
} }
settings_dict = { settings_dict = {
@@ -341,7 +342,7 @@ if __name__ == "__main__":
overlay.updateImage(img, "large") overlay.updateImage(img, "large")
img = overlay_image.createOverlayImageSmallLog(f"こんにちは、世界さようなら_{i}", "Japanese", "Hello,World!Goodbye", "Japanese") img = overlay_image.createOverlayImageSmallLog(f"こんにちは、世界さようなら_{i}", "Japanese", "Hello,World!Goodbye", "Japanese")
overlay.updateImage(img, "small") overlay.updateImage(img, "small")
time.sleep(1) time.sleep(15)
except openvr.error_code.OverlayError_InvalidParameter as e: except openvr.error_code.OverlayError_InvalidParameter as e:
logging.error(f"OverlayError_InvalidParameter: {e}") logging.error(f"OverlayError_InvalidParameter: {e}")
break break