diff --git a/.gitignore b/.gitignore
index 613413a6c..9258aa609 100644
--- a/.gitignore
+++ b/.gitignore
@@ -57,3 +57,4 @@ toolkit/bake_gi/resources/*.bam
toolkit/bake_gi/resources/*.blend
toolkit/bake_gi/scene
+.vscode
diff --git a/rpcore/render_pipeline.py b/rpcore/render_pipeline.py
index 6e9b66abb..513441822 100644
--- a/rpcore/render_pipeline.py
+++ b/rpcore/render_pipeline.py
@@ -668,8 +668,6 @@ def export_materials(self, pth):
material.emission.w, # arbitrary 1
) + "\n")
- self.debug("Wrote materials to", pth)
-
def update_serialized_material(self, data):
""" Internal method to update a material from a given serialized material """
name = data[0]
diff --git a/toolkit/material_editor/main.py b/toolkit/material_editor/main.py
index 5016ff18f..6eb68e5ca 100644
--- a/toolkit/material_editor/main.py
+++ b/toolkit/material_editor/main.py
@@ -32,7 +32,9 @@
import os
import sys
import time
+import math
import tempfile
+import colorsys
from threading import Thread
from functools import partial
@@ -41,7 +43,7 @@
sys.path.insert(0, "../../")
from rplibs.six import iteritems # noqa
-from rplibs.pyqt_imports import * #noqa
+from rplibs.pyqt_imports import * # noqa
from ui.main_window_generated import Ui_MainWindow # noqa
from rpcore.util.network_communication import NetworkCommunication # noqa
@@ -50,7 +52,9 @@
# ONLY for debugging the viewer.
ALLOW_OUTDATED_MATERIALS = False
+
class MaterialData:
+
def __init__(self):
self.name = ""
self.shading_model = 0
@@ -64,6 +68,7 @@ def __init__(self):
self.basecolor_g = 0.6
self.basecolor_b = 0.6
+
class MaterialEditor(QMainWindow, Ui_MainWindow):
""" Interface to change the plugin settings """
@@ -81,22 +86,22 @@ def __init__(self):
QMainWindow.__init__(self)
Ui_MainWindow.__init__(self)
- self.materials = []
self.in_update = False
+ self.materials = []
+ self.material = MaterialData()
self.setupUi(self)
self.init_shading_models()
+ self.init_bindings()
+ self.update_material_list()
+ self.on_material_selected()
- self.material = MaterialData()
-
- qt_connect(self.cb_metallic, "stateChanged", self.set_metallic)
- qt_connect(self.cb_shading_model, "currentIndexChanged", self.set_shading_model)
- qt_connect(self.cb_material, "currentIndexChanged", self.set_material)
+ def init_bindings(self):
+ qt_connect(self.cb_shading_model, "currentIndexChanged", self.read_from_ui)
+ qt_connect(self.cb_material, "currentIndexChanged", self.on_material_selected)
+ qt_connect(self.cb_metallic, "stateChanged", self.read_from_ui)
self.sliders = [
- (self.basecolor_r, self.lbl_basecolor_r, 0.0, 1.0, "basecolor_r"),
- (self.basecolor_g, self.lbl_basecolor_g, 0.0, 1.0, "basecolor_g"),
- (self.basecolor_b, self.lbl_basecolor_b, 0.0, 1.0, "basecolor_b"),
(self.slider_roughness, self.lbl_roughness, 0.0, 1.0, "roughness"),
(self.slider_specular, self.lbl_specular, 1.0, 2.51, "specular"),
(self.slider_normal, self.lbl_normal, 0.0, 1.0, "normal_strength"),
@@ -104,24 +109,92 @@ def __init__(self):
]
for slider, lbl, start, end, prop in self.sliders:
- qt_connect(slider, "valueChanged", self.update_sliders)
+ qt_connect(slider, "valueChanged", self.read_from_ui)
+
+ qt_connect(self.basecolor_1, "valueChanged", self.read_from_ui)
+ qt_connect(self.basecolor_2, "valueChanged", self.read_from_ui)
+ qt_connect(self.basecolor_3, "valueChanged", self.read_from_ui)
+
+ for cb in (self.cb_rgb, self.cb_srgb, self.cb_hsv):
+ qt_connect(cb, "toggled", self.write_to_ui)
+
+ def update_ui(self):
+ # Basecolor
+ labels = "R", "G", "B"
+ if self.cb_hsv.isChecked():
+ labels = "H", "S", "V"
+ self.lbl_basecolor1.setText(labels[0])
+ self.lbl_basecolor2.setText(labels[1])
+ self.lbl_basecolor3.setText(labels[2])
+
+ a, b, c = (self.basecolor_1.value() / 100.0,
+ self.basecolor_2.value() / 100.0,
+ self.basecolor_3.value() / 100.0)
+ rgb = self.tuple_to_basecolor(a, b, c)
+ self.lbl_basecolor_val1.setText("{:0.2f}".format(a))
+ self.lbl_basecolor_val2.setText("{:0.2f}".format(b))
+ self.lbl_basecolor_val3.setText("{:0.2f}".format(c))
+ self.lbl_color_preview.setStyleSheet("background: rgb({}, {}, {});".format(
+ int(rgb[0] * 255), int(rgb[1] * 255), int(rgb[2] * 255)))
+
+ # Shading model
+ self._update_shading_model()
+
+ def read_from_ui(self):
+ if self.in_update:
+ return
+
+ # Rest of sliders
+ for slider, lbl, start, end, prop in self.sliders:
+ val = (slider.value() / 100.0) * (end - start) + start
+ lbl.setText("{:0.2f}".format(val))
+ setattr(self.material, prop, val)
- self.update_material_list()
- self.set_material()
+ # Basecolor
+ rgb = self._get_ui_basecolor_rgb()
+ self.material.basecolor_r = rgb[0]
+ self.material.basecolor_g = rgb[1]
+ self.material.basecolor_b = rgb[2]
+
+ # Metallic
+ self.material.metallic = self.cb_metallic.isChecked()
+
+ # Shading model
+ self.material.shading_model = self.cb_shading_model.currentIndex()
+
+ self.update_ui()
+ self.send_update()
+
+ def write_to_ui(self):
+ self.in_update = True
- def update_sliders(self):
- if not self.in_update:
- self.send_update()
+ # Basecolor
+ values = self.basecolor_to_tuple(self.material)
+ self.basecolor_1.setValue(values[0] * 100.0)
+ self.basecolor_2.setValue(values[1] * 100.0)
+ self.basecolor_3.setValue(values[2] * 100.0)
- for slider, lbl, start, end, prop in self.sliders:
- val = (slider.value() / 100.0) * (end - start) + start
- lbl.setText("{:0.2f}".format(val))
- setattr(self.material, prop, val)
+ # Shading model
+ self.cb_shading_model.setCurrentIndex(self.material.shading_model)
- self.lbl_color_preview.setStyleSheet("background: rgb({}, {}, {});".format(
- int(self.material.basecolor_r * 255),
- int(self.material.basecolor_g * 255),
- int(self.material.basecolor_b * 255)))
+ # Metallics
+ self.cb_metallic.setChecked(self.material.metallic)
+ self.slider_specular.setEnabled(not self.material.metallic)
+
+ # Rest of sliders
+ for slider, lbl, start, end, prop in self.sliders:
+ val = getattr(self.material, prop)
+ slider.setValue((val - start) / (end - start) * 100.0)
+
+ self.in_update = False
+ self.update_ui()
+
+ def _get_ui_basecolor_rgb(self):
+ """ Extracts the RGB color which is currently edited in the UI """
+ a, b, c = (self.basecolor_1.value() / 100.0,
+ self.basecolor_2.value() / 100.0,
+ self.basecolor_3.value() / 100.0)
+ return self.tuple_to_basecolor(a, b, c)
def update_material_list(self):
temp_path = os.path.join(tempfile.gettempdir(), "rp_materials.data")
@@ -136,89 +209,86 @@ def update_material_list(self):
while not os.path.isfile(temp_path) and time.time() - start_time < 5.0:
time.sleep(0.5)
if not os.path.isfile(temp_path):
- QMessageBox.critical(self, "Error", "Render Pipeline not responding! Make sure a render pipeline application is running, and try again later.")
+ QMessageBox.critical(
+ self, "Error", "Render Pipeline not responding! Make sure a render pipeline application is running, and try again later.")
sys.exit(-1)
if not ALLOW_OUTDATED_MATERIALS:
time.sleep(0.5)
self._load_material_list(temp_path)
def _load_material_list(self, pth):
- self.in_update = True
self.materials = []
self.cb_material.clear()
with open(pth) as handle:
for line in handle.readlines():
parts = line.strip().split(" ")
- material = MaterialData()
- material.name = parts[0]
- material.basecolor_r = float(parts[1])
- material.basecolor_g = float(parts[2])
- material.basecolor_b = float(parts[3])
- material.roughness = float(parts[4])
- material.specular = float(parts[5])
- material.metallic = float(parts[6]) > 0.5
- material.shading_model = int(float(parts[7]))
- material.normal_strength = float(parts[8])
- material.shading_model_param1 = float(parts[9])
- material.shading_model_param2 = float(parts[10])
+ material = self._read_in_material(parts)
self.materials.append(material)
- print("Materials[] =", material.name)
self.cb_material.addItem(material.name)
- self.in_update = False
- print("Loaded material list")
- def set_material(self):
- if self.in_update:
- return
+ def _read_in_material(self, parts):
+ material = MaterialData()
+ material.name = parts[0]
+ material.basecolor_r = float(parts[1])
+ material.basecolor_g = float(parts[2])
+ material.basecolor_b = float(parts[3])
+ material.roughness = float(parts[4])
+ material.specular = float(parts[5])
+ material.metallic = float(parts[6]) > 0.5
+ material.shading_model = int(float(parts[7]))
+ material.normal_strength = float(parts[8])
+ material.shading_model_param1 = float(parts[9])
+ material.shading_model_param2 = float(parts[10])
+ return material
+
+ def basecolor_to_tuple(self, mat):
+ def to_srgb(v): return math.pow(v, 1.0 / 2.2)
+ if self.cb_rgb.isChecked():
+ return mat.basecolor_r, mat.basecolor_g, mat.basecolor_b
+ elif self.cb_srgb.isChecked():
+ return to_srgb(mat.basecolor_r), to_srgb(mat.basecolor_g), to_srgb(mat.basecolor_b)
+ elif self.cb_hsv.isChecked():
+ return colorsys.rgb_to_hsv(mat.basecolor_r, mat.basecolor_g, mat.basecolor_b)
+ else:
+ assert False
+
+ def tuple_to_basecolor(self, a, b, c):
+ def from_srgb(v): return math.pow(v, 2.2)
+ if self.cb_rgb.isChecked():
+ return a, b, c
+ elif self.cb_srgb.isChecked():
+ return from_srgb(a), from_srgb(b), from_srgb(c)
+ elif self.cb_hsv.isChecked():
+ return colorsys.hsv_to_rgb(a, b, c)
+ else:
+ assert False
+
+ def on_material_selected(self):
index = self.cb_material.currentIndex()
- if index >= len(self.materials):
+ if index < 0 or index >= len(self.materials):
print("Invalid material with index", index, "only have", len(self.materials), "materials")
return
- self.in_update = True
- material = self.materials[index]
- print("Loaded material", material.name)
- self.cb_shading_model.setCurrentIndex(material.shading_model)
- self.cb_metallic.setChecked(material.metallic)
- self.slider_roughness.setValue(material.roughness * 100.0)
- self.slider_specular.setValue(material.specular / 2.51 * 100.0)
- self.slider_normal.setValue(material.normal_strength * 100.0)
- self.basecolor_r.setValue(material.basecolor_r * 100)
- self.basecolor_g.setValue(material.basecolor_g * 100)
- self.basecolor_b.setValue(material.basecolor_b * 100)
- self.slider_param1.setValue(material.shading_model_param1 * 100)
- self.material = material
- self.in_update = False
- self.update_sliders()
- self.set_metallic()
- self.set_shading_model()
-
- def set_metallic(self):
- if not self.in_update:
- self.material.metallic = self.cb_metallic.isChecked()
- self.slider_specular.setEnabled(not self.material.metallic)
- self.send_update()
+ self.material = self.materials[index]
+ print("Loaded material", self.material.name)
+ self.write_to_ui()
def send_update(self):
- if not self.in_update:
- serialized = ("{} " * 11).format(
- self.material.name,
- self.material.basecolor_r,
- self.material.basecolor_g,
- self.material.basecolor_b,
- self.material.roughness,
- self.material.specular,
- 1.0 if self.material.metallic else 0.0,
- self.material.shading_model,
- self.material.normal_strength,
- self.material.shading_model_param1,
- self.material.shading_model_param2,
- )
- NetworkCommunication.send_async(NetworkCommunication.MATERIAL_PORT, "update_material " + serialized)
-
- def set_shading_model(self):
- if self.in_update:
- return
-
+ serialized = ("{} " * 11).format(
+ self.material.name,
+ self.material.basecolor_r,
+ self.material.basecolor_g,
+ self.material.basecolor_b,
+ self.material.roughness,
+ self.material.specular,
+ 1.0 if self.material.metallic else 0.0,
+ self.material.shading_model,
+ self.material.normal_strength,
+ self.material.shading_model_param1,
+ self.material.shading_model_param2,
+ )
+ NetworkCommunication.send_async(NetworkCommunication.MATERIAL_PORT, "update_material " + serialized)
+
+ def _update_shading_model(self):
name, val, optional_param = self.SHADING_MODELS[self.cb_shading_model.currentIndex()]
if optional_param is None:
self.slider_param1.setEnabled(False)
@@ -245,16 +315,12 @@ def set_shading_model(self):
self.cb_metallic.hide()
elif name == "Foliage":
self.cb_metallic.hide()
-
- self.material.shading_model = val
- self.send_update()
def init_shading_models(self):
self.cb_shading_model.clear()
for name, val, optional_param in self.SHADING_MODELS:
self.cb_shading_model.addItem(name)
-
# Start application
app = QApplication(sys.argv)
qt_register_fonts()
diff --git a/toolkit/material_editor/ui/main_window.ui b/toolkit/material_editor/ui/main_window.ui
index 091ea9f5c..bf64748cf 100644
--- a/toolkit/material_editor/ui/main_window.ui
+++ b/toolkit/material_editor/ui/main_window.ui
@@ -7,19 +7,19 @@
0
0
262
- 556
+ 608
262
- 556
+ 608
262
- 556
+ 5560
@@ -37,7 +37,7 @@ QSlider::groove:horizontal {
QSlider::handle:horizonal {
background: #666;
- width: 9px;
+ width: 8px;
margin: -6px 0;
}
@@ -48,7 +48,26 @@ QSlider::groove:horizontal:disabled {
background: rgba(0, 0, 0, 8);
}
+QRadioButton {
+ background: #fafafa;
+ padding: 4px 6px 3px;
+ font-size: 12px;
+ color: #333;
+}
+
+QRadioButton::indicator {
+ width: 15px;
+ height: 15px;
+ margin-top: -1px;
+}
+
+QRadioButton:checked {
+background: #eee;
+}
+QRadioButton:hover {
+background: #eaeaea;
+}
QComboBox {
border: 0;
@@ -261,9 +280,9 @@ font-weight: 600;
- 20
- 200
- 221
+ 30
+ 240
+ 201
73
@@ -273,8 +292,8 @@ font-weight: 600;
-
-
-
-
+
-
+
30
@@ -288,7 +307,7 @@ font-weight: 600;
- color: green;background: transparent;
+ background: transparent;
0.43
@@ -298,36 +317,8 @@ font-weight: 600;
- -
-
-
-
- 30
- 0
-
-
-
-
- 30
- 16777215
-
-
-
- color: red; background: transparent;
-
-
- 0.12
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
- QSlider::handle:horizontal { background: blue; }
-
+
-
+
100
@@ -339,11 +330,8 @@ font-weight: 600;
- -
-
-
- QSlider::handle:horizontal { background: red; }
-
+
-
+
100
@@ -355,11 +343,8 @@ font-weight: 600;
- -
-
-
- QSlider::handle:horizontal { background: green; }
-
+
-
+
100
@@ -371,8 +356,8 @@ font-weight: 600;
- -
-
+
-
+
30
@@ -386,7 +371,7 @@ font-weight: 600;
- color: blue;background: transparent;
+ background: transparent;
0.53
@@ -396,6 +381,79 @@ font-weight: 600;
+ -
+
+
+
+ 30
+ 0
+
+
+
+
+ 30
+ 16777215
+
+
+
+ background: transparent;
+
+
+ 0.12
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+
+ 11
+ 0
+
+
+
+ background: transparent; color: #555;
+
+
+ R
+
+
+
+ -
+
+
+
+ 11
+ 0
+
+
+
+ background: transparent; color: #555;
+
+
+ G
+
+
+
+ -
+
+
+
+ 11
+ 0
+
+
+
+ background: transparent; color: #555;
+
+
+ B
+
+
+
-
@@ -439,7 +497,7 @@ font-weight: 600;
20
- 290
+ 340
131
16
@@ -452,7 +510,7 @@ font-weight: 600;
20
- 310
+ 360
191
19
@@ -471,7 +529,7 @@ font-weight: 600;
20
- 340
+ 390
131
16
@@ -484,7 +542,7 @@ font-weight: 600;
20
- 360
+ 410
191
19
@@ -503,7 +561,7 @@ font-weight: 600;
20
- 390
+ 440
131
16
@@ -516,7 +574,7 @@ font-weight: 600;
20
- 410
+ 460
191
19
@@ -535,7 +593,7 @@ font-weight: 600;
220
- 310
+ 360
31
20
@@ -551,7 +609,7 @@ font-weight: 600;
220
- 360
+ 410
31
20
@@ -567,7 +625,7 @@ font-weight: 600;
220
- 409
+ 459
31
20
@@ -585,7 +643,7 @@ font-weight: 600;
-10
166
311
- 341
+ 561
@@ -601,7 +659,7 @@ font-weight: 600;
230
- 289
+ 339
31
20
@@ -620,7 +678,7 @@ font-weight: 600;
30
- 290
+ 340
191
19
@@ -639,7 +697,7 @@ font-weight: 600;
30
- 270
+ 320
141
16
@@ -648,6 +706,75 @@ font-weight: 600;
Shading-model-param
+
+
+
+ 30
+ 34
+ 60
+ 27
+
+
+
+ RGB
+
+
+ true
+
+
+
+
+
+ 92
+ 34
+ 71
+ 27
+
+
+
+ SRGB
+
+
+
+
+
+ 165
+ 34
+ 62
+ 27
+
+
+
+ HSV
+
+
+
+
+
+ 30
+ 59
+ 220
+ 96
+
+
+
+ QFrame { background: #eee; }
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+ lbl_param1
+ slider_param1
+ lbl_shading_model_param1
+ cb_rgb
+ cb_srgb
+ lbl_basecolor_val1
+ cb_hsv
+ frame_3
frame_2
label_2
diff --git a/toolkit/material_editor/ui/main_window_generated.py b/toolkit/material_editor/ui/main_window_generated.py
index b2f4035ea..0f6f56507 100644
--- a/toolkit/material_editor/ui/main_window_generated.py
+++ b/toolkit/material_editor/ui/main_window_generated.py
@@ -11,9 +11,9 @@
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
- MainWindow.resize(262, 556)
- MainWindow.setMinimumSize(QtCore.QSize(262, 556))
- MainWindow.setMaximumSize(QtCore.QSize(262, 556))
+ MainWindow.resize(262, 608)
+ MainWindow.setMinimumSize(QtCore.QSize(262, 608))
+ MainWindow.setMaximumSize(QtCore.QSize(262, 5560))
MainWindow.setStyleSheet("QMainWindow { background: #fff;}\n"
"*, QLabel { font-family: Roboto; font-weight: 300; }\n"
"\n"
@@ -25,7 +25,7 @@ def setupUi(self, MainWindow):
"\n"
"QSlider::handle:horizonal {\n"
" background: #666;\n"
-" width: 9px;\n"
+" width: 8px;\n"
" margin: -6px 0;\n"
"}\n"
"\n"
@@ -36,7 +36,26 @@ def setupUi(self, MainWindow):
" background: rgba(0, 0, 0, 8);\n"
"}\n"
"\n"
+"QRadioButton {\n"
+" background: #fafafa;\n"
+" padding: 4px 6px 3px;\n"
+" font-size: 12px;\n"
+" color: #333;\n"
+"}\n"
+"\n"
+"QRadioButton::indicator {\n"
+" width: 15px;\n"
+" height: 15px;\n"
+" margin-top: -1px;\n"
+"}\n"
"\n"
+"QRadioButton:checked {\n"
+"background: #eee;\n"
+"}\n"
+"\n"
+"QRadioButton:hover {\n"
+"background: #eaeaea;\n"
+"}\n"
"\n"
"QComboBox {\n"
"border: 0;\n"
@@ -127,7 +146,7 @@ def setupUi(self, MainWindow):
self.cb_metallic.setGeometry(QtCore.QRect(20, 140, 81, 17))
self.cb_metallic.setObjectName("cb_metallic")
self.horizontalLayoutWidget_3 = QtWidgets.QWidget(self.sidebar_material)
- self.horizontalLayoutWidget_3.setGeometry(QtCore.QRect(20, 200, 221, 73))
+ self.horizontalLayoutWidget_3.setGeometry(QtCore.QRect(30, 240, 201, 73))
self.horizontalLayoutWidget_3.setObjectName("horizontalLayoutWidget_3")
self.horizontalLayout_4 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_3)
self.horizontalLayout_4.setContentsMargins(0, 0, 0, 0)
@@ -135,48 +154,60 @@ def setupUi(self, MainWindow):
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
self.gridLayout = QtWidgets.QGridLayout()
self.gridLayout.setObjectName("gridLayout")
- self.lbl_basecolor_g = QtWidgets.QLabel(self.horizontalLayoutWidget_3)
- self.lbl_basecolor_g.setMinimumSize(QtCore.QSize(30, 0))
- self.lbl_basecolor_g.setMaximumSize(QtCore.QSize(30, 16777215))
- self.lbl_basecolor_g.setStyleSheet("color: green;background: transparent;")
- self.lbl_basecolor_g.setAlignment(QtCore.Qt.AlignCenter)
- self.lbl_basecolor_g.setObjectName("lbl_basecolor_g")
- self.gridLayout.addWidget(self.lbl_basecolor_g, 1, 1, 1, 1)
- self.lbl_basecolor_r = QtWidgets.QLabel(self.horizontalLayoutWidget_3)
- self.lbl_basecolor_r.setMinimumSize(QtCore.QSize(30, 0))
- self.lbl_basecolor_r.setMaximumSize(QtCore.QSize(30, 16777215))
- self.lbl_basecolor_r.setStyleSheet("color: red; background: transparent;")
- self.lbl_basecolor_r.setAlignment(QtCore.Qt.AlignCenter)
- self.lbl_basecolor_r.setObjectName("lbl_basecolor_r")
- self.gridLayout.addWidget(self.lbl_basecolor_r, 0, 1, 1, 1)
- self.basecolor_b = QtWidgets.QSlider(self.horizontalLayoutWidget_3)
- self.basecolor_b.setStyleSheet("QSlider::handle:horizontal { background: blue; }")
- self.basecolor_b.setMaximum(100)
- self.basecolor_b.setProperty("value", 53)
- self.basecolor_b.setOrientation(QtCore.Qt.Horizontal)
- self.basecolor_b.setObjectName("basecolor_b")
- self.gridLayout.addWidget(self.basecolor_b, 2, 0, 1, 1)
- self.basecolor_r = QtWidgets.QSlider(self.horizontalLayoutWidget_3)
- self.basecolor_r.setStyleSheet("QSlider::handle:horizontal { background: red; }")
- self.basecolor_r.setMaximum(100)
- self.basecolor_r.setProperty("value", 12)
- self.basecolor_r.setOrientation(QtCore.Qt.Horizontal)
- self.basecolor_r.setObjectName("basecolor_r")
- self.gridLayout.addWidget(self.basecolor_r, 0, 0, 1, 1)
- self.basecolor_g = QtWidgets.QSlider(self.horizontalLayoutWidget_3)
- self.basecolor_g.setStyleSheet("QSlider::handle:horizontal { background: green; }")
- self.basecolor_g.setMaximum(100)
- self.basecolor_g.setProperty("value", 43)
- self.basecolor_g.setOrientation(QtCore.Qt.Horizontal)
- self.basecolor_g.setObjectName("basecolor_g")
- self.gridLayout.addWidget(self.basecolor_g, 1, 0, 1, 1)
- self.lbl_basecolor_b = QtWidgets.QLabel(self.horizontalLayoutWidget_3)
- self.lbl_basecolor_b.setMinimumSize(QtCore.QSize(30, 0))
- self.lbl_basecolor_b.setMaximumSize(QtCore.QSize(30, 16777215))
- self.lbl_basecolor_b.setStyleSheet("color: blue;background: transparent;")
- self.lbl_basecolor_b.setAlignment(QtCore.Qt.AlignCenter)
- self.lbl_basecolor_b.setObjectName("lbl_basecolor_b")
- self.gridLayout.addWidget(self.lbl_basecolor_b, 2, 1, 1, 1)
+ self.lbl_basecolor_val2 = QtWidgets.QLabel(self.horizontalLayoutWidget_3)
+ self.lbl_basecolor_val2.setMinimumSize(QtCore.QSize(30, 0))
+ self.lbl_basecolor_val2.setMaximumSize(QtCore.QSize(30, 16777215))
+ self.lbl_basecolor_val2.setStyleSheet("background: transparent;")
+ self.lbl_basecolor_val2.setAlignment(QtCore.Qt.AlignCenter)
+ self.lbl_basecolor_val2.setObjectName("lbl_basecolor_val2")
+ self.gridLayout.addWidget(self.lbl_basecolor_val2, 1, 2, 1, 1)
+ self.basecolor_3 = QtWidgets.QSlider(self.horizontalLayoutWidget_3)
+ self.basecolor_3.setMaximum(100)
+ self.basecolor_3.setProperty("value", 53)
+ self.basecolor_3.setOrientation(QtCore.Qt.Horizontal)
+ self.basecolor_3.setObjectName("basecolor_3")
+ self.gridLayout.addWidget(self.basecolor_3, 2, 1, 1, 1)
+ self.basecolor_1 = QtWidgets.QSlider(self.horizontalLayoutWidget_3)
+ self.basecolor_1.setMaximum(100)
+ self.basecolor_1.setProperty("value", 12)
+ self.basecolor_1.setOrientation(QtCore.Qt.Horizontal)
+ self.basecolor_1.setObjectName("basecolor_1")
+ self.gridLayout.addWidget(self.basecolor_1, 0, 1, 1, 1)
+ self.basecolor_2 = QtWidgets.QSlider(self.horizontalLayoutWidget_3)
+ self.basecolor_2.setMaximum(100)
+ self.basecolor_2.setProperty("value", 43)
+ self.basecolor_2.setOrientation(QtCore.Qt.Horizontal)
+ self.basecolor_2.setObjectName("basecolor_2")
+ self.gridLayout.addWidget(self.basecolor_2, 1, 1, 1, 1)
+ self.lbl_basecolor_val3 = QtWidgets.QLabel(self.horizontalLayoutWidget_3)
+ self.lbl_basecolor_val3.setMinimumSize(QtCore.QSize(30, 0))
+ self.lbl_basecolor_val3.setMaximumSize(QtCore.QSize(30, 16777215))
+ self.lbl_basecolor_val3.setStyleSheet("background: transparent;")
+ self.lbl_basecolor_val3.setAlignment(QtCore.Qt.AlignCenter)
+ self.lbl_basecolor_val3.setObjectName("lbl_basecolor_val3")
+ self.gridLayout.addWidget(self.lbl_basecolor_val3, 2, 2, 1, 1)
+ self.lbl_basecolor_val1 = QtWidgets.QLabel(self.horizontalLayoutWidget_3)
+ self.lbl_basecolor_val1.setMinimumSize(QtCore.QSize(30, 0))
+ self.lbl_basecolor_val1.setMaximumSize(QtCore.QSize(30, 16777215))
+ self.lbl_basecolor_val1.setStyleSheet("background: transparent;")
+ self.lbl_basecolor_val1.setAlignment(QtCore.Qt.AlignCenter)
+ self.lbl_basecolor_val1.setObjectName("lbl_basecolor_val1")
+ self.gridLayout.addWidget(self.lbl_basecolor_val1, 0, 2, 1, 1)
+ self.lbl_basecolor1 = QtWidgets.QLabel(self.horizontalLayoutWidget_3)
+ self.lbl_basecolor1.setMinimumSize(QtCore.QSize(11, 0))
+ self.lbl_basecolor1.setStyleSheet("background: transparent; color: #555; ")
+ self.lbl_basecolor1.setObjectName("lbl_basecolor1")
+ self.gridLayout.addWidget(self.lbl_basecolor1, 0, 0, 1, 1)
+ self.lbl_basecolor2 = QtWidgets.QLabel(self.horizontalLayoutWidget_3)
+ self.lbl_basecolor2.setMinimumSize(QtCore.QSize(11, 0))
+ self.lbl_basecolor2.setStyleSheet("background: transparent; color: #555; ")
+ self.lbl_basecolor2.setObjectName("lbl_basecolor2")
+ self.gridLayout.addWidget(self.lbl_basecolor2, 1, 0, 1, 1)
+ self.lbl_basecolor3 = QtWidgets.QLabel(self.horizontalLayoutWidget_3)
+ self.lbl_basecolor3.setMinimumSize(QtCore.QSize(11, 0))
+ self.lbl_basecolor3.setStyleSheet("background: transparent; color: #555; ")
+ self.lbl_basecolor3.setObjectName("lbl_basecolor3")
+ self.gridLayout.addWidget(self.lbl_basecolor3, 2, 0, 1, 1)
self.horizontalLayout_4.addLayout(self.gridLayout)
self.lbl_color_preview = QtWidgets.QLabel(self.horizontalLayoutWidget_3)
self.lbl_color_preview.setMinimumSize(QtCore.QSize(30, 0))
@@ -189,64 +220,88 @@ def setupUi(self, MainWindow):
self.label_15.setGeometry(QtCore.QRect(20, 180, 131, 16))
self.label_15.setObjectName("label_15")
self.label_16 = QtWidgets.QLabel(self.sidebar_material)
- self.label_16.setGeometry(QtCore.QRect(20, 290, 131, 16))
+ self.label_16.setGeometry(QtCore.QRect(20, 340, 131, 16))
self.label_16.setObjectName("label_16")
self.slider_roughness = QtWidgets.QSlider(self.sidebar_material)
- self.slider_roughness.setGeometry(QtCore.QRect(20, 310, 191, 19))
+ self.slider_roughness.setGeometry(QtCore.QRect(20, 360, 191, 19))
self.slider_roughness.setMaximum(100)
self.slider_roughness.setProperty("value", 32)
self.slider_roughness.setOrientation(QtCore.Qt.Horizontal)
self.slider_roughness.setObjectName("slider_roughness")
self.label_17 = QtWidgets.QLabel(self.sidebar_material)
- self.label_17.setGeometry(QtCore.QRect(20, 340, 131, 16))
+ self.label_17.setGeometry(QtCore.QRect(20, 390, 131, 16))
self.label_17.setObjectName("label_17")
self.slider_specular = QtWidgets.QSlider(self.sidebar_material)
- self.slider_specular.setGeometry(QtCore.QRect(20, 360, 191, 19))
+ self.slider_specular.setGeometry(QtCore.QRect(20, 410, 191, 19))
self.slider_specular.setMaximum(100)
self.slider_specular.setSliderPosition(20)
self.slider_specular.setOrientation(QtCore.Qt.Horizontal)
self.slider_specular.setObjectName("slider_specular")
self.label_18 = QtWidgets.QLabel(self.sidebar_material)
- self.label_18.setGeometry(QtCore.QRect(20, 390, 131, 16))
+ self.label_18.setGeometry(QtCore.QRect(20, 440, 131, 16))
self.label_18.setObjectName("label_18")
self.slider_normal = QtWidgets.QSlider(self.sidebar_material)
- self.slider_normal.setGeometry(QtCore.QRect(20, 410, 191, 19))
+ self.slider_normal.setGeometry(QtCore.QRect(20, 460, 191, 19))
self.slider_normal.setMaximum(100)
self.slider_normal.setSliderPosition(80)
self.slider_normal.setOrientation(QtCore.Qt.Horizontal)
self.slider_normal.setObjectName("slider_normal")
self.lbl_roughness = QtWidgets.QLabel(self.sidebar_material)
- self.lbl_roughness.setGeometry(QtCore.QRect(220, 310, 31, 20))
+ self.lbl_roughness.setGeometry(QtCore.QRect(220, 360, 31, 20))
self.lbl_roughness.setStyleSheet("color: #333;")
self.lbl_roughness.setObjectName("lbl_roughness")
self.lbl_specular = QtWidgets.QLabel(self.sidebar_material)
- self.lbl_specular.setGeometry(QtCore.QRect(220, 360, 31, 20))
+ self.lbl_specular.setGeometry(QtCore.QRect(220, 410, 31, 20))
self.lbl_specular.setStyleSheet("color: #333;")
self.lbl_specular.setObjectName("lbl_specular")
self.lbl_normal = QtWidgets.QLabel(self.sidebar_material)
- self.lbl_normal.setGeometry(QtCore.QRect(220, 409, 31, 20))
+ self.lbl_normal.setGeometry(QtCore.QRect(220, 459, 31, 20))
self.lbl_normal.setStyleSheet("color: #333;")
self.lbl_normal.setObjectName("lbl_normal")
self.frame_2 = QtWidgets.QFrame(self.sidebar_material)
- self.frame_2.setGeometry(QtCore.QRect(-10, 166, 311, 341))
+ self.frame_2.setGeometry(QtCore.QRect(-10, 166, 311, 561))
self.frame_2.setStyleSheet("QFrame { background: #fff; }")
self.frame_2.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_2.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_2.setObjectName("frame_2")
self.lbl_param1 = QtWidgets.QLabel(self.frame_2)
- self.lbl_param1.setGeometry(QtCore.QRect(230, 289, 31, 20))
+ self.lbl_param1.setGeometry(QtCore.QRect(230, 339, 31, 20))
self.lbl_param1.setStyleSheet("color: #333;")
self.lbl_param1.setObjectName("lbl_param1")
self.slider_param1 = QtWidgets.QSlider(self.frame_2)
self.slider_param1.setEnabled(False)
- self.slider_param1.setGeometry(QtCore.QRect(30, 290, 191, 19))
+ self.slider_param1.setGeometry(QtCore.QRect(30, 340, 191, 19))
self.slider_param1.setMaximum(100)
self.slider_param1.setSliderPosition(80)
self.slider_param1.setOrientation(QtCore.Qt.Horizontal)
self.slider_param1.setObjectName("slider_param1")
self.lbl_shading_model_param1 = QtWidgets.QLabel(self.frame_2)
- self.lbl_shading_model_param1.setGeometry(QtCore.QRect(30, 270, 141, 16))
+ self.lbl_shading_model_param1.setGeometry(QtCore.QRect(30, 320, 141, 16))
self.lbl_shading_model_param1.setObjectName("lbl_shading_model_param1")
+ self.cb_rgb = QtWidgets.QRadioButton(self.frame_2)
+ self.cb_rgb.setGeometry(QtCore.QRect(30, 34, 60, 27))
+ self.cb_rgb.setChecked(True)
+ self.cb_rgb.setObjectName("cb_rgb")
+ self.cb_srgb = QtWidgets.QRadioButton(self.frame_2)
+ self.cb_srgb.setGeometry(QtCore.QRect(92, 34, 71, 27))
+ self.cb_srgb.setObjectName("cb_srgb")
+ self.cb_hsv = QtWidgets.QRadioButton(self.frame_2)
+ self.cb_hsv.setGeometry(QtCore.QRect(165, 34, 62, 27))
+ self.cb_hsv.setObjectName("cb_hsv")
+ self.frame_3 = QtWidgets.QFrame(self.frame_2)
+ self.frame_3.setGeometry(QtCore.QRect(30, 59, 220, 96))
+ self.frame_3.setStyleSheet("QFrame { background: #eee; }")
+ self.frame_3.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.frame_3.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.frame_3.setObjectName("frame_3")
+ self.lbl_param1.raise_()
+ self.slider_param1.raise_()
+ self.lbl_shading_model_param1.raise_()
+ self.cb_rgb.raise_()
+ self.cb_srgb.raise_()
+ self.lbl_basecolor_val1.raise_()
+ self.cb_hsv.raise_()
+ self.frame_3.raise_()
self.frame_2.raise_()
self.label_2.raise_()
self.cb_material.raise_()
@@ -283,9 +338,12 @@ def retranslateUi(self, MainWindow):
self.cb_shading_model.setItemText(1, _translate("MainWindow", "Emissive"))
self.cb_shading_model.setItemText(2, _translate("MainWindow", "Transparent"))
self.cb_metallic.setText(_translate("MainWindow", "Metallic"))
- self.lbl_basecolor_g.setText(_translate("MainWindow", "0.43"))
- self.lbl_basecolor_r.setText(_translate("MainWindow", "0.12"))
- self.lbl_basecolor_b.setText(_translate("MainWindow", "0.53"))
+ self.lbl_basecolor_val2.setText(_translate("MainWindow", "0.43"))
+ self.lbl_basecolor_val3.setText(_translate("MainWindow", "0.53"))
+ self.lbl_basecolor_val1.setText(_translate("MainWindow", "0.12"))
+ self.lbl_basecolor1.setText(_translate("MainWindow", "R"))
+ self.lbl_basecolor2.setText(_translate("MainWindow", "G"))
+ self.lbl_basecolor3.setText(_translate("MainWindow", "B"))
self.label_15.setText(_translate("MainWindow", "Basecolor"))
self.label_16.setText(_translate("MainWindow", "Roughness"))
self.label_17.setText(_translate("MainWindow", "Specular IOR"))
@@ -295,5 +353,8 @@ def retranslateUi(self, MainWindow):
self.lbl_normal.setText(_translate("MainWindow", "0.80"))
self.lbl_param1.setText(_translate("MainWindow", "0.20"))
self.lbl_shading_model_param1.setText(_translate("MainWindow", "Shading-model-param"))
+ self.cb_rgb.setText(_translate("MainWindow", "RGB"))
+ self.cb_srgb.setText(_translate("MainWindow", "SRGB"))
+ self.cb_hsv.setText(_translate("MainWindow", "HSV"))
from . import resources_rc