def initializeGL(self): glClearColor(0.8, 0.8, 1.0, 1.0) glEnable(GL_TEXTURE_2D) glEnable(GL_BLEND) glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA) glDisable(GL_DEPTH_TEST) glDisable(GL_CULL_FACE) #glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH) glClearColor(0.2, 0.4, 0.8, 1.0) glClearDepth(1.0) self._normal_shader = ShaderProgram("SimpleTransformTexture.vert", "NormalSphereShader.frag")
class LambertRenderer(BaseRenderer): ## Constructor def __init__(self): super(LambertRenderer, self).__init__() self._shader = None self._normal_texture = None def initializeGL(self): self._shader = ShaderProgram("SimpleTransformTexture.vert", "LambertShader.frag") self._shader.setUniformValue("normalTex", 0) def setNormalTexture(self, normal_texture): self._normal_texture = normal_texture def _render(self, offline=False): self._shader.bind() glActiveTexture(GL_TEXTURE0) self._normal_texture.gl() glEnable(GL_BLEND) glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) self._viewQuads() glFlush() self._shader.release()
class NormalEditor(GLView): ## Constructor def __init__(self): super(NormalEditor, self).__init__() self._normal_shader = None self.setMaximumSize(128, 128) self._N = np.array([0.0, 0.0, 1.0]) def setNormal(self, N): self._N = N def normal(self): return self._N def initializeGL(self): glClearColor(0.8, 0.8, 1.0, 1.0) glEnable(GL_TEXTURE_2D) glEnable(GL_BLEND) glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA) glDisable(GL_DEPTH_TEST) glDisable(GL_CULL_FACE) #glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH) glClearColor(0.2, 0.4, 0.8, 1.0) glClearDepth(1.0) self._normal_shader = ShaderProgram("SimpleTransformTexture.vert", "NormalSphereShader.frag") def paintGL(self): #glColorMask(True, True, True, True) glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) self._renderBackGround() glLoadIdentity() self._normal_shader.bind() glEnable(GL_BLEND) glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) glBegin(GL_QUADS) glTexCoord2f(0.0, 0.0) glVertex2f(-1.0, -1.0) glTexCoord2f(0.0, 1.0) glVertex2f(-1.0, 1.0) glTexCoord2f(1.0, 1.0) glVertex2f(1.0, 1.0) glTexCoord2f(1.0, 0.0) glVertex2f(1.0, -1.0) glEnd() glFlush() self._normal_shader.release() self.drawNormal() def resizeGL(self, width, height): if height == 0: height = 1 glViewport(0, 0, width, height) aspect = width / float(height) glMatrixMode(GL_PROJECTION) glLoadIdentity() glOrtho(-aspect, aspect, -1, 1, -10.0, 10.0) def mousePressEvent(self, e): pass def mouseMoveEvent(self, e): if not e.buttons() & Qt.LeftButton: return p = self._numpy_position(e) Nx = 2.0 * p[0] / float(self.size().width()) - 1.0 Ny = -(2.0 * p[1] / float(self.size().height()) - 1.0) r = np.linalg.norm(np.array([Nx, Ny])) Nz = np.sqrt(max(0.001, 1.0 - r * r)) N = np.array([Nx, Ny, Nz]) N /= np.linalg.norm(N) self.setNormal(N) self.updateGL() def drawNormal(self, color=[1.0, 0.0, 0.0, 0.5], point_size=10): glEnable(GL_POINT_SMOOTH) glPointSize(point_size) glBegin(GL_POINTS) position = self._N glColor4f(color[0], color[1], color[2], color[3]) glVertex3f(position[0], position[1], position[2]) glEnd() def _qpoint_to_numpy(self, qp): return np.array([qp.x(), qp.y()]) def _numpy_position(self, e): pos = e.pos() return self._qpoint_to_numpy(pos)
def initializeGL(self): self._shader = ShaderProgram("SimpleTransformTexture.vert", "LambertShader.frag") self._shader.setUniformValue("normalTex", 0)
def initializeGL(self): self._shader = ShaderProgram("SimpleTransformTexture.vert", "LambertRelightingShader.frag") self._shader.setUniformValue("normalTex", 0) self._shader.setUniformValue("colorTex", 1)
def initializeGL(self): self._shader = ShaderProgram("SimpleTransformTexture.vert", "ToonShader.frag") self._shader.setUniformValue("normalTex", 0) self._shader.setUniformValue("colorMapTex", 1)