mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-06 22:47:29 -06:00
Show models outside of BP clearly in layerview.
CURA-7586
This commit is contained in:
parent
8b59fe83d8
commit
99cd8ab1b0
2 changed files with 20 additions and 2 deletions
|
@ -32,6 +32,7 @@ class SimulationPass(RenderPass):
|
||||||
self._current_shader = None # This shader will be the shadow or the normal depending if the user wants to see the paths or the layers
|
self._current_shader = None # This shader will be the shadow or the normal depending if the user wants to see the paths or the layers
|
||||||
self._tool_handle_shader = None
|
self._tool_handle_shader = None
|
||||||
self._nozzle_shader = None
|
self._nozzle_shader = None
|
||||||
|
self._disabled_shader = None
|
||||||
self._old_current_layer = 0
|
self._old_current_layer = 0
|
||||||
self._old_current_path = 0
|
self._old_current_path = 0
|
||||||
self._switching_layers = True # It tracks when the user is moving the layers' slider
|
self._switching_layers = True # It tracks when the user is moving the layers' slider
|
||||||
|
@ -90,9 +91,17 @@ class SimulationPass(RenderPass):
|
||||||
self._nozzle_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "color.shader"))
|
self._nozzle_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "color.shader"))
|
||||||
self._nozzle_shader.setUniformValue("u_color", Color(*Application.getInstance().getTheme().getColor("layerview_nozzle").getRgb()))
|
self._nozzle_shader.setUniformValue("u_color", Color(*Application.getInstance().getTheme().getColor("layerview_nozzle").getRgb()))
|
||||||
|
|
||||||
|
if not self._disabled_shader:
|
||||||
|
self._disabled_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "striped.shader"))
|
||||||
|
self._disabled_shader.setUniformValue("u_diffuseColor1", Color(*Application.getInstance().getTheme().getColor("model_unslicable").getRgb()))
|
||||||
|
self._disabled_shader.setUniformValue("u_diffuseColor2", Color(*Application.getInstance().getTheme().getColor("model_unslicable_alt").getRgb()))
|
||||||
|
self._disabled_shader.setUniformValue("u_width", 50.0)
|
||||||
|
self._disabled_shader.setUniformValue("u_opacity", 0.6)
|
||||||
|
|
||||||
self.bind()
|
self.bind()
|
||||||
|
|
||||||
tool_handle_batch = RenderBatch(self._tool_handle_shader, type = RenderBatch.RenderType.Overlay, backface_cull = True)
|
tool_handle_batch = RenderBatch(self._tool_handle_shader, type = RenderBatch.RenderType.Overlay, backface_cull = True)
|
||||||
|
disabled_batch = RenderBatch(self._disabled_shader)
|
||||||
head_position = None # Indicates the current position of the print head
|
head_position = None # Indicates the current position of the print head
|
||||||
nozzle_node = None
|
nozzle_node = None
|
||||||
|
|
||||||
|
@ -105,6 +114,9 @@ class SimulationPass(RenderPass):
|
||||||
nozzle_node = node
|
nozzle_node = node
|
||||||
nozzle_node.setVisible(False)
|
nozzle_node.setVisible(False)
|
||||||
|
|
||||||
|
elif getattr(node, "_outside_buildarea", False) and isinstance(node, SceneNode) and node.getMeshData() and node.isVisible():
|
||||||
|
disabled_batch.addItem(node.getWorldTransformation(copy=False), node.getMeshData())
|
||||||
|
|
||||||
elif isinstance(node, SceneNode) and (node.getMeshData() or node.callDecoration("isBlockSlicing")) and node.isVisible():
|
elif isinstance(node, SceneNode) and (node.getMeshData() or node.callDecoration("isBlockSlicing")) and node.isVisible():
|
||||||
layer_data = node.callDecoration("getLayerData")
|
layer_data = node.callDecoration("getLayerData")
|
||||||
if not layer_data:
|
if not layer_data:
|
||||||
|
@ -183,6 +195,9 @@ class SimulationPass(RenderPass):
|
||||||
nozzle_batch.addItem(nozzle_node.getWorldTransformation(), mesh = nozzle_node.getMeshData())
|
nozzle_batch.addItem(nozzle_node.getWorldTransformation(), mesh = nozzle_node.getMeshData())
|
||||||
nozzle_batch.render(self._scene.getActiveCamera())
|
nozzle_batch.render(self._scene.getActiveCamera())
|
||||||
|
|
||||||
|
if len(disabled_batch.items) > 0:
|
||||||
|
disabled_batch.render(self._scene.getActiveCamera())
|
||||||
|
|
||||||
# Render toolhandles on top of the layerview
|
# Render toolhandles on top of the layerview
|
||||||
if len(tool_handle_batch.items) > 0:
|
if len(tool_handle_batch.items) > 0:
|
||||||
tool_handle_batch.render(self._scene.getActiveCamera())
|
tool_handle_batch.render(self._scene.getActiveCamera())
|
||||||
|
|
|
@ -29,6 +29,7 @@ fragment =
|
||||||
uniform mediump vec4 u_diffuseColor1;
|
uniform mediump vec4 u_diffuseColor1;
|
||||||
uniform mediump vec4 u_diffuseColor2;
|
uniform mediump vec4 u_diffuseColor2;
|
||||||
uniform mediump vec4 u_specularColor;
|
uniform mediump vec4 u_specularColor;
|
||||||
|
uniform mediump float u_opacity;
|
||||||
uniform highp vec3 u_lightPosition;
|
uniform highp vec3 u_lightPosition;
|
||||||
uniform mediump float u_shininess;
|
uniform mediump float u_shininess;
|
||||||
uniform highp vec3 u_viewPosition;
|
uniform highp vec3 u_viewPosition;
|
||||||
|
@ -65,7 +66,7 @@ fragment =
|
||||||
finalColor += pow(NdotR, u_shininess) * u_specularColor;
|
finalColor += pow(NdotR, u_shininess) * u_specularColor;
|
||||||
|
|
||||||
gl_FragColor = finalColor;
|
gl_FragColor = finalColor;
|
||||||
gl_FragColor.a = 1.0;
|
gl_FragColor.a = u_opacity;
|
||||||
}
|
}
|
||||||
|
|
||||||
vertex41core =
|
vertex41core =
|
||||||
|
@ -100,6 +101,7 @@ fragment41core =
|
||||||
uniform mediump vec4 u_diffuseColor1;
|
uniform mediump vec4 u_diffuseColor1;
|
||||||
uniform mediump vec4 u_diffuseColor2;
|
uniform mediump vec4 u_diffuseColor2;
|
||||||
uniform mediump vec4 u_specularColor;
|
uniform mediump vec4 u_specularColor;
|
||||||
|
uniform mediump float u_opacity;
|
||||||
uniform highp vec3 u_lightPosition;
|
uniform highp vec3 u_lightPosition;
|
||||||
uniform mediump float u_shininess;
|
uniform mediump float u_shininess;
|
||||||
uniform highp vec3 u_viewPosition;
|
uniform highp vec3 u_viewPosition;
|
||||||
|
@ -138,7 +140,7 @@ fragment41core =
|
||||||
finalColor += pow(NdotR, u_shininess) * u_specularColor;
|
finalColor += pow(NdotR, u_shininess) * u_specularColor;
|
||||||
|
|
||||||
frag_color = finalColor;
|
frag_color = finalColor;
|
||||||
frag_color.a = 1.0;
|
frag_color.a = u_opacity;
|
||||||
}
|
}
|
||||||
|
|
||||||
[defaults]
|
[defaults]
|
||||||
|
@ -146,6 +148,7 @@ u_ambientColor = [0.3, 0.3, 0.3, 1.0]
|
||||||
u_diffuseColor1 = [1.0, 0.5, 0.5, 1.0]
|
u_diffuseColor1 = [1.0, 0.5, 0.5, 1.0]
|
||||||
u_diffuseColor2 = [0.5, 0.5, 0.5, 1.0]
|
u_diffuseColor2 = [0.5, 0.5, 0.5, 1.0]
|
||||||
u_specularColor = [0.4, 0.4, 0.4, 1.0]
|
u_specularColor = [0.4, 0.4, 0.4, 1.0]
|
||||||
|
u_opacity = 1.0
|
||||||
u_shininess = 20.0
|
u_shininess = 20.0
|
||||||
u_width = 5.0
|
u_width = 5.0
|
||||||
u_vertical_stripes = 0
|
u_vertical_stripes = 0
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue