def on_draw(): if not 'rgbtex' in globals(): create_texture() xyz, uv = projpts if xyz is None: return if not rgb is None: rgb_ = (rgb.astype(np.float32) * 4 + 70).clip(0,255).astype(np.uint8) glBindTexture(TEXTURE_TARGET, rgbtex) glTexSubImage2D(TEXTURE_TARGET, 0, 0, 0, 640, 480, GL_RGB, GL_UNSIGNED_BYTE, rgb_); glClearColor(*clearcolor) glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) glEnable(GL_DEPTH_TEST) # flush that stack in case it's broken from earlier glPushMatrix() glMatrixMode(GL_PROJECTION) glLoadIdentity() gluPerspective(60, 4/3., 0.3, 200) glMatrixMode(GL_MODELVIEW) glLoadIdentity() def mouse_rotate(xAngle, yAngle, zAngle): glRotatef(xAngle, 1.0, 0.0, 0.0); glRotatef(yAngle, 0.0, 1.0, 0.0); glRotatef(zAngle, 0.0, 0.0, 1.0); glScale(zoomdist,zoomdist,1) glTranslate(0, 0,-3.5) mouse_rotate(rotangles[0], rotangles[1], 0); glTranslate(0,0,1.5) #glTranslate(0, 0,-1) # Draw some axes if 0: glBegin(GL_LINES) glColor3f(1,0,0); glVertex3f(0,0,0); glVertex3f(1,0,0) glColor3f(0,1,0); glVertex3f(0,0,0); glVertex3f(0,1,0) glColor3f(0,0,1); glVertex3f(0,0,0); glVertex3f(0,0,1) glEnd() # We can either project the points ourselves, or embed it in the opengl matrix if 0: dec = 4 v,u = mgrid[:480,:640].astype(np.uint16) points = np.vstack((u[::dec,::dec].flatten(), v[::dec,::dec].flatten(), depth[::dec,::dec].flatten())).transpose() points = points[points[:,2]<2047,:] glMatrixMode(GL_TEXTURE) glLoadIdentity() glMultMatrixf(calibkinect.uv_matrix().transpose()) glMultMatrixf(calibkinect.xyz_matrix().transpose()) glTexCoordPointers(np.array(points)) glMatrixMode(GL_MODELVIEW) glPushMatrix() glMultMatrixf(calibkinect.xyz_matrix().transpose()) glVertexPointers(np.array(points)) else: glMatrixMode(GL_TEXTURE) glLoadIdentity() glMatrixMode(GL_MODELVIEW) glPushMatrix() glVertexPointerf(xyz) glTexCoordPointerf(uv) # Draw the points glPointSize(2) glEnableClientState(GL_VERTEX_ARRAY) glEnableClientState(GL_TEXTURE_COORD_ARRAY) glEnable(TEXTURE_TARGET) glColor3f(1,1,1) glDrawElementsui(GL_POINTS, np.array(range(xyz.shape[0]))) glDisableClientState(GL_VERTEX_ARRAY) glDisableClientState(GL_TEXTURE_COORD_ARRAY) glDisable(TEXTURE_TARGET) glPopMatrix() # if 0: inds = np.nonzero(xyz[:,2]>-0.55) glPointSize(10) glColor3f(0,1,1) glEnableClientState(GL_VERTEX_ARRAY) glDrawElementsui(GL_POINTS, np.array(inds)) glDisableClientState(GL_VERTEX_ARRAY) if 0: # Draw only the points in the near plane glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA) glEnable(GL_BLEND) glColor(0.9,0.9,1.0,0.8) glPushMatrix() glTranslate(0,0,-0.55) glScale(0.6,0.6,1) glBegin(GL_QUADS) glVertex3f(-1,-1,0); glVertex3f( 1,-1,0); glVertex3f( 1, 1,0); glVertex3f(-1, 1,0); glEnd() glPopMatrix() glDisable(GL_BLEND) glPopMatrix()
def on_draw(self): if not '_initOK' in dir(self): return clearcolor = [0, 0, 0, 0] glClearColor(*clearcolor) glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) glEnable(GL_DEPTH_TEST) # flush that stack in case it's broken from earlier try: while glPopMatrix(): pass except: pass glMatrixMode(GL_PROJECTION) glLoadIdentity() gluPerspective(60, 4 / 3., 0.3, 200) #glScale(-1,1,1) #gluOrtho2D(-10,10,-10,10) glMatrixMode(GL_MODELVIEW) glLoadIdentity() def mouse_rotate(xAngle, yAngle, zAngle): glRotatef(xAngle, 1.0, 0.0, 0.0) glRotatef(yAngle, 0.0, 1.0, 0.0) glRotatef(zAngle, 0.0, 0.0, 1.0) glScale(self.zoomdist, self.zoomdist, 1) glTranslate(0, 0, -1.5) mouse_rotate(self.rotangles[0], self.rotangles[1], 0) glTranslate(0, 0, 1.5) #glTranslate(0, 0,-1) glBindBufferARB(GL_ARRAY_BUFFER_ARB, self.xyzbuf) glVertexPointers(None) glTexCoordPointer(3, GL_SHORT, 0, None) glMatrixMode(GL_TEXTURE) glLoadIdentity() glMultMatrixf(calibkinect.uv_matrix().transpose()) glMultMatrixf(calibkinect.xyz_matrix().transpose()) glMatrixMode(GL_MODELVIEW) glPushMatrix() glMultMatrixf(calibkinect.xyz_matrix().transpose()) # Draw the points glPointSize(2) glEnableClientState(GL_VERTEX_ARRAY) glEnableClientState(GL_TEXTURE_COORD_ARRAY) #if not rgb is None: glEnable(TEXTURE_TARGET) #if not color is None: # glEnableClientState(GL_COLOR_ARRAY) # glColorPointerf(color) # glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA) # glEnable(GL_BLEND) glColor3f(1, 1, 1) glDrawElementsui(GL_POINTS, np.mgrid[:640 * 480]) glDisableClientState(GL_COLOR_ARRAY) glDisableClientState(GL_VERTEX_ARRAY) glDisableClientState(GL_TEXTURE_COORD_ARRAY) glDisable(TEXTURE_TARGET) glDisable(GL_BLEND) glPopMatrix() self._wrap('on_draw_axes')
def on_draw(): if not 'rgbtex' in globals(): create_texture() xyz, uv = projpts if xyz is None: return if not rgb is None: rgb_ = (rgb.astype(np.float32) * 4 + 70).clip(0, 255).astype(np.uint8) glBindTexture(TEXTURE_TARGET, rgbtex) glTexSubImage2D(TEXTURE_TARGET, 0, 0, 0, 640, 480, GL_RGB, GL_UNSIGNED_BYTE, rgb_) glClearColor(*clearcolor) glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) glEnable(GL_DEPTH_TEST) # flush that stack in case it's broken from earlier glPushMatrix() glMatrixMode(GL_PROJECTION) glLoadIdentity() gluPerspective(60, 4 / 3., 0.3, 200) glMatrixMode(GL_MODELVIEW) glLoadIdentity() def mouse_rotate(xAngle, yAngle, zAngle): glRotatef(xAngle, 1.0, 0.0, 0.0) glRotatef(yAngle, 0.0, 1.0, 0.0) glRotatef(zAngle, 0.0, 0.0, 1.0) glScale(zoomdist, zoomdist, 1) glTranslate(0, 0, -3.5) mouse_rotate(rotangles[0], rotangles[1], 0) glTranslate(0, 0, 1.5) #glTranslate(0, 0,-1) # Draw some axes if 0: glBegin(GL_LINES) glColor3f(1, 0, 0) glVertex3f(0, 0, 0) glVertex3f(1, 0, 0) glColor3f(0, 1, 0) glVertex3f(0, 0, 0) glVertex3f(0, 1, 0) glColor3f(0, 0, 1) glVertex3f(0, 0, 0) glVertex3f(0, 0, 1) glEnd() # We can either project the points ourselves, or embed it in the opengl matrix if 0: dec = 4 v, u = mgrid[:480, :640].astype(np.uint16) points = np.vstack( (u[::dec, ::dec].flatten(), v[::dec, ::dec].flatten(), depth[::dec, ::dec].flatten())).transpose() points = points[points[:, 2] < 2047, :] glMatrixMode(GL_TEXTURE) glLoadIdentity() glMultMatrixf(calibkinect.uv_matrix().transpose()) glMultMatrixf(calibkinect.xyz_matrix().transpose()) glTexCoordPointers(np.array(points)) glMatrixMode(GL_MODELVIEW) glPushMatrix() glMultMatrixf(calibkinect.xyz_matrix().transpose()) glVertexPointers(np.array(points)) else: glMatrixMode(GL_TEXTURE) glLoadIdentity() glMatrixMode(GL_MODELVIEW) glPushMatrix() glVertexPointerf(xyz) glTexCoordPointerf(uv) # Draw the points glPointSize(2) glEnableClientState(GL_VERTEX_ARRAY) glEnableClientState(GL_TEXTURE_COORD_ARRAY) glEnable(TEXTURE_TARGET) glColor3f(1, 1, 1) glDrawElementsui(GL_POINTS, np.array(range(xyz.shape[0]))) glDisableClientState(GL_VERTEX_ARRAY) glDisableClientState(GL_TEXTURE_COORD_ARRAY) glDisable(TEXTURE_TARGET) glPopMatrix() # if 0: inds = np.nonzero(xyz[:, 2] > -0.55) glPointSize(10) glColor3f(0, 1, 1) glEnableClientState(GL_VERTEX_ARRAY) glDrawElementsui(GL_POINTS, np.array(inds)) glDisableClientState(GL_VERTEX_ARRAY) if 0: # Draw only the points in the near plane glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) glEnable(GL_BLEND) glColor(0.9, 0.9, 1.0, 0.8) glPushMatrix() glTranslate(0, 0, -0.55) glScale(0.6, 0.6, 1) glBegin(GL_QUADS) glVertex3f(-1, -1, 0) glVertex3f(1, -1, 0) glVertex3f(1, 1, 0) glVertex3f(-1, 1, 0) glEnd() glPopMatrix() glDisable(GL_BLEND) glPopMatrix()
def on_draw(self): if not '_initOK' in dir(self): return clearcolor = [0,0,0,0] glClearColor(*clearcolor) glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) glEnable(GL_DEPTH_TEST) # flush that stack in case it's broken from earlier try: while glPopMatrix(): pass except: pass glMatrixMode(GL_PROJECTION) glLoadIdentity() gluPerspective(60, 4/3., 0.3, 200) #glScale(-1,1,1) #gluOrtho2D(-10,10,-10,10) glMatrixMode(GL_MODELVIEW) glLoadIdentity() def mouse_rotate(xAngle, yAngle, zAngle): glRotatef(xAngle, 1.0, 0.0, 0.0); glRotatef(yAngle, 0.0, 1.0, 0.0); glRotatef(zAngle, 0.0, 0.0, 1.0); glScale(self.zoomdist,self.zoomdist,1) glTranslate(0, 0,-1.5) mouse_rotate(self.rotangles[0], self.rotangles[1], 0); glTranslate(0,0,1.5) #glTranslate(0, 0,-1) glBindBufferARB(GL_ARRAY_BUFFER_ARB, self.xyzbuf) glVertexPointers(None) glTexCoordPointer(3, GL_SHORT, 0, None) glMatrixMode(GL_TEXTURE) glLoadIdentity() glMultMatrixf(calibkinect.uv_matrix().transpose()) glMultMatrixf(calibkinect.xyz_matrix().transpose()) glMatrixMode(GL_MODELVIEW) glPushMatrix() glMultMatrixf(calibkinect.xyz_matrix().transpose()) # Draw the points glPointSize(2) glEnableClientState(GL_VERTEX_ARRAY) glEnableClientState(GL_TEXTURE_COORD_ARRAY) #if not rgb is None: glEnable(TEXTURE_TARGET) #if not color is None: # glEnableClientState(GL_COLOR_ARRAY) # glColorPointerf(color) # glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA) # glEnable(GL_BLEND) glColor3f(1,1,1) glDrawElementsui(GL_POINTS, np.mgrid[:640*480]) glDisableClientState(GL_COLOR_ARRAY) glDisableClientState(GL_VERTEX_ARRAY) glDisableClientState(GL_TEXTURE_COORD_ARRAY) glDisable(TEXTURE_TARGET) glDisable(GL_BLEND) glPopMatrix() self._wrap('on_draw_axes')