Added layer view options

This commit is contained in:
Jack Ha 2016-12-30 14:31:53 +01:00
parent 1217281727
commit fc4c60b0dc
9 changed files with 143 additions and 90 deletions

View file

@ -30,16 +30,24 @@ class LayerPass(RenderPass):
self._layer_view = None
def setLayerView(self, layerview):
self._layerview = layerview
self._layer_view = layerview
def render(self):
if not self._layer_shader:
self._layer_shader = OpenGL.getInstance().createShaderProgram(os.path.join(PluginRegistry.getInstance().getPluginPath("LayerView"), "layers.shader"))
# Use extruder 0 if the extruder manager reports extruder index -1 (for single extrusion printers)
self._layer_shader.setUniformValue("u_active_extruder", float(max(0, self._extruder_manager.activeExtruderIndex)))
self._layer_shader.setUniformValue("u_layer_view_type", 0)
self._layer_shader.setUniformValue("u_only_color_active_extruder", 1)
self._layer_shader.setUniformValue("u_extruder_opacity", [1, 1, 1, 1])
if self._layer_view:
self._layer_shader.setUniformValue("u_layer_view_type", self._layer_view.getLayerViewType())
self._layer_shader.setUniformValue("u_only_color_active_extruder", (1 if self._layer_view.getOnlyColorActiveExtruder() else 0))
self._layer_shader.setUniformValue("u_extruder_opacity", self._layer_view.getExtruderOpacities())
self._layer_shader.setUniformValue("u_show_travel_moves", self._layer_view.getShowTravelMoves())
else:
#defaults
self._layer_shader.setUniformValue("u_layer_view_type", 1)
self._layer_shader.setUniformValue("u_only_color_active_extruder", 1)
self._layer_shader.setUniformValue("u_extruder_opacity", [1, 1, 1, 1])
self._layer_shader.setUniformValue("u_show_travel_moves", 0)
if not self._tool_handle_shader:
self._tool_handle_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "toolhandle.shader"))
@ -58,12 +66,12 @@ class LayerPass(RenderPass):
continue
# Render all layers below a certain number as line mesh instead of vertices.
if self._layerview._current_layer_num > -1 and not self._layerview._only_show_top_layers:
if self._layer_view._current_layer_num > -1 and not self._layer_view._only_show_top_layers:
start = 0
end = 0
element_counts = layer_data.getElementCounts()
for layer, counts in element_counts.items():
if layer > self._layerview._current_layer_num:
if layer > self._layer_view._current_layer_num:
break
end += counts
@ -75,11 +83,11 @@ class LayerPass(RenderPass):
# Create a new batch that is not range-limited
batch = RenderBatch(self._layer_shader, type = RenderBatch.RenderType.Solid)
if self._layerview._current_layer_mesh:
batch.addItem(node.getWorldTransformation(), self._layerview._current_layer_mesh)
if self._layer_view._current_layer_mesh:
batch.addItem(node.getWorldTransformation(), self._layer_view._current_layer_mesh)
if self._layerview._current_layer_jumps:
batch.addItem(node.getWorldTransformation(), self._layerview._current_layer_jumps)
if self._layer_view._current_layer_jumps:
batch.addItem(node.getWorldTransformation(), self._layer_view._current_layer_jumps)
if len(batch.items) > 0:
batch.render(self._scene.getActiveCamera())