mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-16 11:17:49 -06:00
Render non-printing objects as semi transparent objects in Solid View
This commit is contained in:
parent
0b11117d6d
commit
8f8bdc059a
2 changed files with 19 additions and 11 deletions
|
@ -27,25 +27,33 @@ class SolidView(View):
|
||||||
|
|
||||||
self._enabled_shader = None
|
self._enabled_shader = None
|
||||||
self._disabled_shader = None
|
self._disabled_shader = None
|
||||||
|
self._non_printing_shader = None
|
||||||
|
|
||||||
self._extruders_model = ExtrudersModel()
|
self._extruders_model = ExtrudersModel()
|
||||||
|
self._theme = None
|
||||||
|
|
||||||
def beginRendering(self):
|
def beginRendering(self):
|
||||||
scene = self.getController().getScene()
|
scene = self.getController().getScene()
|
||||||
renderer = self.getRenderer()
|
renderer = self.getRenderer()
|
||||||
|
|
||||||
|
if not self._theme:
|
||||||
|
self._theme = Application.getInstance().getTheme()
|
||||||
|
|
||||||
if not self._enabled_shader:
|
if not self._enabled_shader:
|
||||||
self._enabled_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "overhang.shader"))
|
self._enabled_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "overhang.shader"))
|
||||||
theme = Application.getInstance().getTheme()
|
self._enabled_shader.setUniformValue("u_overhangColor", Color(*self._theme.getColor("model_overhang").getRgb()))
|
||||||
self._enabled_shader.setUniformValue("u_overhangColor", Color(*theme.getColor("model_overhang").getRgb()))
|
|
||||||
|
|
||||||
if not self._disabled_shader:
|
if not self._disabled_shader:
|
||||||
self._disabled_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "striped.shader"))
|
self._disabled_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "striped.shader"))
|
||||||
theme = Application.getInstance().getTheme()
|
self._disabled_shader.setUniformValue("u_diffuseColor1", Color(*self._theme.getColor("model_unslicable").getRgb()))
|
||||||
self._disabled_shader.setUniformValue("u_diffuseColor1", Color(*theme.getColor("model_unslicable").getRgb()))
|
self._disabled_shader.setUniformValue("u_diffuseColor2", Color(*self._theme.getColor("model_unslicable_alt").getRgb()))
|
||||||
self._disabled_shader.setUniformValue("u_diffuseColor2", Color(*theme.getColor("model_unslicable_alt").getRgb()))
|
|
||||||
self._disabled_shader.setUniformValue("u_width", 50.0)
|
self._disabled_shader.setUniformValue("u_width", 50.0)
|
||||||
|
|
||||||
|
if not self._non_printing_shader:
|
||||||
|
self._non_printing_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "transparent_object.shader"))
|
||||||
|
self._non_printing_shader.setUniformValue("u_diffuseColor", Color(*self._theme.getColor("model_non_printing").getRgb()))
|
||||||
|
self._non_printing_shader.setUniformValue("u_opacity", 0.6)
|
||||||
|
|
||||||
multi_extrusion = False
|
multi_extrusion = False
|
||||||
|
|
||||||
global_container_stack = Application.getInstance().getGlobalContainerStack()
|
global_container_stack = Application.getInstance().getGlobalContainerStack()
|
||||||
|
@ -110,13 +118,12 @@ class SolidView(View):
|
||||||
except ValueError:
|
except ValueError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
if hasattr(node, "_outside_buildarea"):
|
if getattr(node, "_non_printing_mesh", False):
|
||||||
if node._outside_buildarea:
|
renderer.queueNode(node, shader = self._non_printing_shader, transparent = True)
|
||||||
|
elif getattr(node, "_outside_buildarea", False):
|
||||||
renderer.queueNode(node, shader = self._disabled_shader)
|
renderer.queueNode(node, shader = self._disabled_shader)
|
||||||
else:
|
else:
|
||||||
renderer.queueNode(node, shader = self._enabled_shader, uniforms = uniforms)
|
renderer.queueNode(node, shader = self._enabled_shader, uniforms = uniforms)
|
||||||
else:
|
|
||||||
renderer.queueNode(node, material = self._enabled_shader, uniforms = uniforms)
|
|
||||||
if node.callDecoration("isGroup") and Selection.isSelected(node):
|
if node.callDecoration("isGroup") and Selection.isSelected(node):
|
||||||
renderer.queueNode(scene.getRoot(), mesh = node.getBoundingBoxMesh(), mode = RenderBatch.RenderMode.LineLoop)
|
renderer.queueNode(scene.getRoot(), mesh = node.getBoundingBoxMesh(), mode = RenderBatch.RenderMode.LineLoop)
|
||||||
|
|
||||||
|
|
|
@ -256,6 +256,7 @@
|
||||||
"model_unslicable": [122, 122, 122, 255],
|
"model_unslicable": [122, 122, 122, 255],
|
||||||
"model_unslicable_alt": [172, 172, 127, 255],
|
"model_unslicable_alt": [172, 172, 127, 255],
|
||||||
"model_selection_outline": [12, 169, 227, 255],
|
"model_selection_outline": [12, 169, 227, 255],
|
||||||
|
"model_non_printing": [122, 122, 122, 255],
|
||||||
|
|
||||||
"xray": [26, 26, 62, 255],
|
"xray": [26, 26, 62, 255],
|
||||||
"xray_error": [255, 0, 0, 255],
|
"xray_error": [255, 0, 0, 255],
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue