Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Ultimaker/Cura.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Kuipers <t.kuipers@ultimaker.com>2019-05-20 15:18:07 +0300
committerTim Kuipers <t.kuipers@ultimaker.com>2019-10-24 18:26:28 +0300
commitb88183f4a1f218b7c87d9ccd64a2fa1d95a68f9e (patch)
tree82ecd3dde0be257b80f1b4c2c15f824f5ccfb188 /plugins/ImageReader
parent88b424d36aa43d863a3e937187337af378905908 (diff)
fix translucency model using new permittance setting
Diffstat (limited to 'plugins/ImageReader')
-rw-r--r--plugins/ImageReader/ConfigUI.qml23
-rw-r--r--plugins/ImageReader/ImageReader.py9
-rw-r--r--plugins/ImageReader/ImageReaderUI.py5
3 files changed, 33 insertions, 4 deletions
diff --git a/plugins/ImageReader/ConfigUI.qml b/plugins/ImageReader/ConfigUI.qml
index ef28c174f2..491594fa58 100644
--- a/plugins/ImageReader/ConfigUI.qml
+++ b/plugins/ImageReader/ConfigUI.qml
@@ -168,6 +168,29 @@ UM.Dialog
UM.TooltipArea {
Layout.fillWidth:true
height: childrenRect.height
+ text: catalog.i18nc("@info:tooltip","The percentage of light penetrating a print with a thickness of 1 millimeter.")
+ Row {
+ width: parent.width
+
+ Label {
+ text: catalog.i18nc("@action:label", "1mm Transmittance (%)")
+ width: 150 * screenScaleFactor
+ anchors.verticalCenter: parent.verticalCenter
+ }
+ TextField {
+ id: transmittance
+ objectName: "Transmittance"
+ focus: true
+ validator: RegExpValidator {regExp: /^[1-9]\d{0,2}([\,|\.]\d*)?$/}
+ width: 180 * screenScaleFactor
+ onTextChanged: { manager.onTransmittanceChanged(text) }
+ }
+ }
+ }
+
+ UM.TooltipArea {
+ Layout.fillWidth:true
+ height: childrenRect.height
text: catalog.i18nc("@info:tooltip","The amount of smoothing to apply to the image.")
Row {
width: parent.width
diff --git a/plugins/ImageReader/ImageReader.py b/plugins/ImageReader/ImageReader.py
index bfaa6eb48c..ce3cab0b8f 100644
--- a/plugins/ImageReader/ImageReader.py
+++ b/plugins/ImageReader/ImageReader.py
@@ -48,9 +48,9 @@ class ImageReader(MeshReader):
def _read(self, file_name):
size = max(self._ui.getWidth(), self._ui.getDepth())
- return self._generateSceneNode(file_name, size, self._ui.peak_height, self._ui.base_height, self._ui.smoothing, 512, self._ui.lighter_is_higher, self._ui.use_logarithmic_function)
+ return self._generateSceneNode(file_name, size, self._ui.peak_height, self._ui.base_height, self._ui.smoothing, 512, self._ui.lighter_is_higher, self._ui.use_logarithmic_function, self._ui.transmittance_1mm)
- def _generateSceneNode(self, file_name, xz_size, peak_height, base_height, blur_iterations, max_size, lighter_is_higher, use_logarithmic_function):
+ def _generateSceneNode(self, file_name, xz_size, peak_height, base_height, blur_iterations, max_size, lighter_is_higher, use_logarithmic_function, transmittance_1mm):
scene_node = SceneNode()
mesh = MeshBuilder()
@@ -127,10 +127,11 @@ class ImageReader(MeshReader):
Job.yieldThread()
if use_logarithmic_function:
- min_luminance = 2.0 ** (peak_height - base_height)
+ p = 1.0 / math.log(transmittance_1mm / 100.0, 2)
+ min_luminance = 2.0 ** ((peak_height - base_height) / p)
for (y, x) in numpy.ndindex(height_data.shape):
mapped_luminance = min_luminance + (1.0 - min_luminance) * height_data[y, x]
- height_data[y, x] = peak_height - math.log(mapped_luminance, 2)
+ height_data[y, x] = peak_height - p * math.log(mapped_luminance, 2)
else:
height_data *= scale_vector.y
height_data += base_height
diff --git a/plugins/ImageReader/ImageReaderUI.py b/plugins/ImageReader/ImageReaderUI.py
index c769a8c264..67d6444538 100644
--- a/plugins/ImageReader/ImageReaderUI.py
+++ b/plugins/ImageReader/ImageReaderUI.py
@@ -35,6 +35,7 @@ class ImageReaderUI(QObject):
self.smoothing = 1
self.lighter_is_higher = False;
self.use_logarithmic_function = False;
+ self.transmittance_1mm = 40.0;
self._ui_lock = threading.Lock()
self._cancelled = False
@@ -76,6 +77,7 @@ class ImageReaderUI(QObject):
self._ui_view.findChild(QObject, "Base_Height").setProperty("text", str(self.base_height))
self._ui_view.findChild(QObject, "Peak_Height").setProperty("text", str(self.peak_height))
+ self._ui_view.findChild(QObject, "Transmittance").setProperty("text", str(self.transmittance_1mm))
self._ui_view.findChild(QObject, "Smoothing").setProperty("value", self.smoothing)
def _createConfigUI(self):
@@ -150,3 +152,6 @@ class ImageReaderUI(QObject):
def onConvertFunctionChanged(self, value):
self.use_logarithmic_function = (value == 0)
+ @pyqtSlot(int)
+ def onTransmittanceChanged(self, value):
+ self.transmittance_1mm = value