diff options
author | Tim Kuipers <t.kuipers@ultimaker.com> | 2019-05-20 15:18:07 +0300 |
---|---|---|
committer | Tim Kuipers <t.kuipers@ultimaker.com> | 2019-10-24 18:26:28 +0300 |
commit | b88183f4a1f218b7c87d9ccd64a2fa1d95a68f9e (patch) | |
tree | 82ecd3dde0be257b80f1b4c2c15f824f5ccfb188 /plugins/ImageReader | |
parent | 88b424d36aa43d863a3e937187337af378905908 (diff) |
fix translucency model using new permittance setting
Diffstat (limited to 'plugins/ImageReader')
-rw-r--r-- | plugins/ImageReader/ConfigUI.qml | 23 | ||||
-rw-r--r-- | plugins/ImageReader/ImageReader.py | 9 | ||||
-rw-r--r-- | plugins/ImageReader/ImageReaderUI.py | 5 |
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 |