コード例 #1
0
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()
コード例 #2
0
    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')
コード例 #3
0
ファイル: demo_pclview.py プロジェクト: mbermudez00/Tutorials
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()
コード例 #4
0
ファイル: pclwindow.py プロジェクト: theY4Kman/blockplayer
  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')