From 118a5c53439e489913a8719aac1e0af133d324df Mon Sep 17 00:00:00 2001 From: daid303 Date: Mon, 22 Apr 2013 10:14:33 +0200 Subject: [PATCH] Add X-Ray feature. --- Cura/gui/sceneView.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/Cura/gui/sceneView.py b/Cura/gui/sceneView.py index 9f3b7817..b5e3ebd7 100644 --- a/Cura/gui/sceneView.py +++ b/Cura/gui/sceneView.py @@ -218,6 +218,8 @@ class SceneView(openglGui.glGuiPanel): self._selectObject(None) elif self.viewSelection.getValue() == 1: self.viewMode = 'transparent' + elif self.viewSelection.getValue() == 2: + self.viewMode = 'xray' else: self.viewMode = 'normal' self.layerSelect.setHidden(self.viewMode != 'gcode') @@ -760,6 +762,8 @@ void main(void) glBlendFunc(GL_ONE, GL_ONE) glDisable(GL_DEPTH_TEST) brightness *= 0.5 + if self.viewMode == 'xray': + glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE) glEnable(GL_STENCIL_TEST) if self._focusObj == obj: brightness = 1.2 @@ -773,6 +777,36 @@ void main(void) glDisable(GL_STENCIL_TEST) glDisable(GL_BLEND) glEnable(GL_DEPTH_TEST) + glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE) + + if obj == self._selectedObj and self.viewMode == 'xray': + glPushMatrix() + glLoadIdentity() + glEnable(GL_STENCIL_TEST) + glStencilOp (GL_KEEP, GL_KEEP, GL_KEEP) + glDisable(GL_DEPTH_TEST) + for i in xrange(2, 15, 2): + glStencilFunc(GL_EQUAL, i, 0xFF); + glColor(float(i)/10, float(i)/10, float(i)/5) + glBegin(GL_QUADS) + glVertex3f(-1000,-1000,-1) + glVertex3f( 1000,-1000,-1) + glVertex3f( 1000, 1000,-1) + glVertex3f(-1000, 1000,-1) + glEnd() + for i in xrange(1, 15, 2): + glStencilFunc(GL_EQUAL, i, 0xFF); + glColor(float(i)/10, 0, 0) + glBegin(GL_QUADS) + glVertex3f(-1000,-1000,-1) + glVertex3f( 1000,-1000,-1) + glVertex3f( 1000, 1000,-1) + glVertex3f(-1000, 1000,-1) + glEnd() + glPopMatrix() + glDisable(GL_STENCIL_TEST) + glEnable(GL_DEPTH_TEST) + self._objectShader.unbind() glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) -- 2.30.2