From e290fee2e2d25ffa00194ef07e85e79311bc2ade Mon Sep 17 00:00:00 2001 From: daid303 Date: Sun, 24 Mar 2013 11:40:50 +0100 Subject: [PATCH] Draw outline of selected object. --- Cura/gui/preview3d.py | 2 +- Cura/gui/sceneView.py | 27 +++++++++++++++++++++++++-- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/Cura/gui/preview3d.py b/Cura/gui/preview3d.py index b3e41cb0..01dd05c5 100644 --- a/Cura/gui/preview3d.py +++ b/Cura/gui/preview3d.py @@ -782,7 +782,7 @@ class PreviewGLCanvas(openglGui.glGuiPanel): glStencilFunc(GL_ALWAYS, 1, 1) glStencilOp(GL_INCR, GL_INCR, GL_INCR) self.drawModel(obj.displayList) - glStencilOp (GL_KEEP, GL_KEEP, GL_KEEP); + glStencilOp (GL_KEEP, GL_KEEP, GL_KEEP) glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE) glStencilFunc(GL_EQUAL, 0, 1) diff --git a/Cura/gui/sceneView.py b/Cura/gui/sceneView.py index fd1999c2..0950cb62 100644 --- a/Cura/gui/sceneView.py +++ b/Cura/gui/sceneView.py @@ -28,8 +28,8 @@ class anim(object): if self.isDone(): return self._end f = (time.time() - self._startTime) / self._runTime - ts=f*f - tc=f*f*f + ts = f*f + tc = f*f*f f = 6*tc*ts + -15*ts*ts + 10*tc return self._start + (self._end - self._start) * f @@ -232,6 +232,29 @@ void main(void) self._drawMachine() + #Draw the outline of the selected object, on top of everything else except the GUI. + if self._selectedObj is not None: + glClear(GL_STENCIL_BUFFER_BIT) + + glDisable(GL_DEPTH_TEST) + glEnable(GL_STENCIL_TEST) + glStencilFunc(GL_ALWAYS, 1, 1) + glStencilOp(GL_INCR, GL_INCR, GL_INCR) + glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE) + self._renderObject(self._selectedObj) + + glStencilFunc(GL_EQUAL, 0, 255) + glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE) + glPolygonMode(GL_FRONT, GL_NONE) + glPolygonMode(GL_BACK, GL_LINE) + glLineWidth(2) + glColor4f(1,1,1,0.5) + self._renderObject(self._selectedObj) + glPolygonMode(GL_BACK, GL_FILL) + glPolygonMode(GL_FRONT, GL_FILL) + glDisable(GL_STENCIL_TEST) + glEnable(GL_DEPTH_TEST) + def _renderObject(self, obj): glPushMatrix() glTranslate(obj.getPosition()[0], obj.getPosition()[1], 0) -- 2.30.2