Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- """
- Navigation paradigm in PyOpenGL
- Needs to have PyOpenGl e.g., pip install pyopengl.
- It draws a scene for navigation paradigm to test
- if it is possible to transfer it to MALTAB with
- Psychtoolbox installed.
- Michael Tesar 2017
- Ceske Budejovice
- """
- from OpenGL.GLUT import *
- from OpenGL.GLU import *
- from OpenGL.GL import *
- import sys
- name = 'Navigation paradigm'
- def main():
- """
- Main function which handles scene and also
- OpenGL (PyOpenGl) basic functions as drawing
- of screen, enabling shader and light etc.
- :return: void
- """
- glutInit(sys.argv)
- glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH)
- glutInitWindowSize(800, 800)
- glutInitWindowPosition(350, 200)
- glutCreateWindow(name)
- glClearColor(0., 0., 0., 1.)
- glShadeModel(GL_SMOOTH)
- glEnable(GL_CULL_FACE)
- glEnable(GL_DEPTH_TEST)
- glEnable(GL_LIGHTING)
- lightZeroPosition = [10., 4., 10., 1.]
- lightZeroColor = [0.8, 1.0, 0.8, 1.0]
- glLightfv(GL_LIGHT0, GL_POSITION, lightZeroPosition)
- glLightfv(GL_LIGHT0, GL_DIFFUSE, lightZeroColor)
- glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 0.1)
- glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.05)
- glEnable(GL_LIGHT0)
- glutDisplayFunc(displayscene)
- glMatrixMode(GL_PROJECTION)
- gluPerspective(40., 1., 1., 40.)
- glMatrixMode(GL_MODELVIEW)
- gluLookAt(0, 0, 10,
- 0, 0, 0,
- 0, 1, 0)
- glPushMatrix()
- glutMainLoop()
- return
- def displayscene():
- """
- Draws two spheres and arena with
- basic texture on it.
- :return: void
- """
- glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
- glPushMatrix()
- # Left sphere
- color = [1.0, 0.0, 0.0, 1.0]
- glMaterialfv(GL_FRONT, GL_DIFFUSE, color)
- glTranslatef(-2, 0, 0)
- glutSolidSphere(1, 100, 20)
- # Right sphere
- color = [0.0, 1.0, 0.0, 1.0]
- glMaterialfv(GL_FRONT, GL_DIFFUSE, color)
- glTranslatef(4, 0, 0)
- glutSolidSphere(1, 100, 20)
- glPopMatrix()
- glutSwapBuffers()
- return
- def loadtexture():
- """
- Defines a global texture for applying
- in any time as fucntion
- :return:
- """
- image = open("brick.jpg")
- ix = image.size[0]
- iy = image.size[1]
- image = image.tostring("raw", "RGBX", 0, -1)
- glPixelStorei(GL_UNPACK_ALIGNMENT, 1)
- glTexImage2D(GL_TEXTURE_2D, 0, 3, ix, iy, 0, GL_RGBA, GL_UNSIGNED_BYTE, image)
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP)
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP)
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT)
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT)
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST)
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST)
- glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL)
- return image
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement