🚧[WIP/TEST] Model : overlayの透過処理をsetTransparencyで実装

This commit is contained in:
misygauziya
2024-04-25 00:01:39 +09:00
parent 721ee76923
commit fc39dee2e0
3 changed files with 32 additions and 45 deletions

View File

@@ -78,11 +78,10 @@ class Model:
config.OVERLAY_SMALL_LOG_SETTINGS["depth"], config.OVERLAY_SMALL_LOG_SETTINGS["depth"],
config.OVERLAY_SMALL_LOG_SETTINGS["display_duration"], config.OVERLAY_SMALL_LOG_SETTINGS["display_duration"],
config.OVERLAY_SMALL_LOG_SETTINGS["fadeout_duration"], config.OVERLAY_SMALL_LOG_SETTINGS["fadeout_duration"],
config.OVERLAY_SETTINGS["opacity"],
config.OVERLAY_SETTINGS["ui_scaling"], config.OVERLAY_SETTINGS["ui_scaling"],
) )
self.overlay_image = OverlayImage( self.overlay_image = OverlayImage()
config.OVERLAY_SETTINGS["opacity"],
)
self.pre_overlay_message = None self.pre_overlay_message = None
self.th_overlay = None self.th_overlay = None
@@ -588,13 +587,13 @@ class Model:
# return self.overlay_image.create_overlay_image_long(message_type, message, your_language, translation, target_language) # return self.overlay_image.create_overlay_image_long(message_type, message, your_language, translation, target_language)
def updateOverlay(self, img): def updateOverlay(self, img):
if self.overlay.initFlag is True: if self.overlay.initialized is True:
self.overlay.uiManager.uiUpdate(img) self.overlay.uiManager.uiUpdate(img)
def startOverlay(self): def startOverlay(self):
if self.overlay.initFlag is False: if self.overlay.initialized is False:
self.overlay.init() self.overlay.init()
if self.overlay.initFlag is True: if self.overlay.initialized is True:
self.th_overlay = threadFnc(self.overlay.startOverlay) self.th_overlay = threadFnc(self.overlay.startOverlay)
self.th_overlay.daemon = True self.th_overlay.daemon = True
self.th_overlay.start() self.th_overlay.start()
@@ -605,7 +604,7 @@ class Model:
self.th_overlay = None self.th_overlay = None
def updateOverlayPosition(self): def updateOverlayPosition(self):
if self.overlay.initFlag is True: if self.overlay.initialized is True:
pos = (config.OVERLAY_SMALL_LOG_SETTINGS["x_pos"], config.OVERLAY_SMALL_LOG_SETTINGS["y_pos"]) pos = (config.OVERLAY_SMALL_LOG_SETTINGS["x_pos"], config.OVERLAY_SMALL_LOG_SETTINGS["y_pos"])
self.overlay.uiManager.setPosition(pos) self.overlay.uiManager.setPosition(pos)
depth = config.OVERLAY_SMALL_LOG_SETTINGS["depth"] depth = config.OVERLAY_SMALL_LOG_SETTINGS["depth"]
@@ -613,7 +612,7 @@ class Model:
self.overlay.uiManager.posUpdate() self.overlay.uiManager.posUpdate()
def updateOverlayTimes(self): def updateOverlayTimes(self):
if self.overlay.initFlag is True: if self.overlay.initialized is True:
display_duration = config.OVERLAY_SMALL_LOG_SETTINGS["display_duration"] display_duration = config.OVERLAY_SMALL_LOG_SETTINGS["display_duration"]
self.overlay.uiManager.setFadeTime(display_duration) self.overlay.uiManager.setFadeTime(display_duration)
fadeout_duration = config.OVERLAY_SMALL_LOG_SETTINGS["fadeout_duration"] fadeout_duration = config.OVERLAY_SMALL_LOG_SETTINGS["fadeout_duration"]
@@ -621,21 +620,13 @@ class Model:
self.overlay.uiManager.update() self.overlay.uiManager.update()
def updateOverlayImageOpacity(self): def updateOverlayImageOpacity(self):
if self.overlay.initFlag is True: if self.overlay.initialized is True:
opacity = config.OVERLAY_SETTINGS["opacity"] opacity = config.OVERLAY_SETTINGS["opacity"]
self.overlay_image.setOpacity(opacity) self.overlay.uiManager.setTransparency(opacity)
if self.pre_overlay_message is not None: self.overlay.uiManager.update()
img = self.overlay_image.createOverlayImageShort(
self.pre_overlay_message["message"],
self.pre_overlay_message["your_language"],
self.pre_overlay_message["translation"],
self.pre_overlay_message["target_language"],
self.pre_overlay_message["ui_type"]
)
self.overlay.uiManager.setImage(img)
def updateOverlayImageUiScaling(self): def updateOverlayImageUiScaling(self):
if self.overlay.initFlag is True: if self.overlay.initialized is True:
ui_scaling = config.OVERLAY_SETTINGS["ui_scaling"] ui_scaling = config.OVERLAY_SETTINGS["ui_scaling"]
self.overlay.uiManager.setUiScaling(ui_scaling) self.overlay.uiManager.setUiScaling(ui_scaling)

View File

@@ -105,11 +105,8 @@ class UIManager:
if self.settings['Fade_interval'] != 0: if self.settings['Fade_interval'] != 0:
self.evaluateTransparencyFade(self.overlayUI, self.lastUpdate, currTime) self.evaluateTransparencyFade(self.overlayUI, self.lastUpdate, currTime)
def setImage(self, img):
self.overlayUI.setImage(img)
def uiUpdate(self, img): def uiUpdate(self, img):
self.setImage(img) self.overlayUI.setImage(img)
self.overlayUI.setTransparency(self.settings['Transparency']) self.overlayUI.setTransparency(self.settings['Transparency'])
self.lastUpdate = time.monotonic() self.lastUpdate = time.monotonic()
@@ -140,16 +137,18 @@ class UIManager:
def setUiScaling(self, ui_scaling): def setUiScaling(self, ui_scaling):
self.overlayUI.setUiScaling(ui_scaling) self.overlayUI.setUiScaling(ui_scaling)
def setTransparency(self, transparency):
self.settings["Transparency"] = transparency
class Overlay: class Overlay:
def __init__(self, x, y , depth, fade_time, fade_interval, ui_scaling): def __init__(self, x, y , depth, fade_time, fade_interval, transparency, ui_scaling):
self.initFlag = False self.initialized = False
settings = { settings = {
"Color": [1, 1, 1], "Color": [1, 1, 1],
"Transparency": 1, "Transparency": transparency,
"Normalized_icon_X_position": x, "Normalized_icon_X_position": x,
"Normalized_icon_Y_position": y, "Normalized_icon_Y_position": y,
"Icon_plane_depth": depth, "Icon_plane_depth": depth,
"Normalized_icon_width": 1,
"Fade_time": fade_time, "Fade_time": fade_time,
"Fade_interval": fade_interval, "Fade_interval": fade_interval,
"Ui_scaling": ui_scaling, "Ui_scaling": ui_scaling,
@@ -160,7 +159,7 @@ class Overlay:
try: try:
if checkSteamvrRunning() is True: if checkSteamvrRunning() is True:
openvr.init(openvr.VRApplication_Overlay) openvr.init(openvr.VRApplication_Overlay)
self.initFlag = True self.initialized = True
except Exception as e: except Exception as e:
print("Could not initialise OpenVR") print("Could not initialise OpenVR")
@@ -204,25 +203,25 @@ if __name__ == '__main__':
overlay = Overlay() overlay = Overlay()
overlay_image = OverlayImage() overlay_image = OverlayImage()
if overlay.initFlag is False: if overlay.initialized is False:
overlay.init() overlay.init()
if overlay.initFlag is True: if overlay.initialized is True:
t = threadFnc(overlay.startOverlay) t = threadFnc(overlay.startOverlay)
t.start() t.start()
time.sleep(1) time.sleep(1)
img = overlay_image.createOverlayImageShort("こんにちは、世界!さようなら", "Japanese", "Hello,World!Goodbye", "Japanese", ui_type="sakura") img = overlay_image.createOverlayImageShort("こんにちは、世界!さようなら", "Japanese", "Hello,World!Goodbye", "Japanese", ui_type="sakura")
# img = overlay_image.createOverlayImageShort("こんにちは、世界!さようなら", "Japanese", ui_type="sakura") # img = overlay_image.createOverlayImageShort("こんにちは、世界!さようなら", "Japanese", ui_type="sakura")
if overlay.initFlag is True: if overlay.initialized is True:
overlay.uiManager.uiUpdate(img) overlay.uiManager.uiUpdate(img)
time.sleep(10) time.sleep(10)
img = overlay_image.createOverlayImageShort("こんにちは、世界!さようなら", "Japanese", "안녕하세요, 세계!안녕", "Korean") img = overlay_image.createOverlayImageShort("こんにちは、世界!さようなら", "Japanese", "안녕하세요, 세계!안녕", "Korean")
if overlay.initFlag is True: if overlay.initialized is True:
overlay.uiManager.uiUpdate(img) overlay.uiManager.uiUpdate(img)
time.sleep(10) time.sleep(10)
img = overlay_image.createOverlayImageShort("こんにちは、世界!さようなら", "Japanese", "你好世界!再见", "Chinese Simplified") img = overlay_image.createOverlayImageShort("こんにちは、世界!さようなら", "Japanese", "你好世界!再见", "Chinese Simplified")
if overlay.initFlag is True: if overlay.initialized is True:
overlay.uiManager.uiUpdate(img) overlay.uiManager.uiUpdate(img)
time.sleep(10) time.sleep(10)

View File

@@ -18,8 +18,8 @@ class OverlayImage:
"Chinese Traditional": "NotoSansTC-Regular", "Chinese Traditional": "NotoSansTC-Regular",
} }
def __init__(self, opacity): def __init__(self):
self.opacity = int(opacity*255) pass
@staticmethod @staticmethod
def concatenateImagesVertically(img1: Image, img2: Image) -> Image: def concatenateImagesVertically(img1: Image, img2: Image) -> Image:
@@ -138,9 +138,6 @@ class OverlayImage:
# img = Image.alpha_composite(background, img) # img = Image.alpha_composite(background, img)
# return img # return img
def setOpacity(self, opacity):
self.opacity = int(opacity*255)
def getUiSize(self): def getUiSize(self):
return { return {
"width": 960, "width": 960,
@@ -151,13 +148,13 @@ class OverlayImage:
def getUiColors(self, ui_type): def getUiColors(self, ui_type):
match ui_type: match ui_type:
case "default": case "default":
background_color = (41, 42, 45, self.opacity) background_color = (41, 42, 45)
background_outline_color = (41, 42, 45, self.opacity) background_outline_color = (41, 42, 45)
text_color = (223, 223, 223, self.opacity) text_color = (223, 223, 223)
case "sakura": case "sakura":
background_color = (225, 40, 30, self.opacity) background_color = (225, 40, 30)
background_outline_color = (255, 255, 255, self.opacity) background_outline_color = (255, 255, 255)
text_color = (223, 223, 223, self.opacity) text_color = (223, 223, 223)
return { return {
"background_color": background_color, "background_color": background_color,
"background_outline_color": background_outline_color, "background_outline_color": background_outline_color,