Example #1
0
    def __init__(self, src, actor=None):
        Component.__init__(self, actor)

        # TODO Include a mesh name (e.g. 'Dragon') as ID as well as src (e.g. '../res/models/Dragon.obj')
        self.src = src
        self.filepath = Context.getInstance().getResourcePath('models', src)
        
        # OpenGL version-dependent code (NOTE assumes major version = 3)
        self.vao = None
        if Context.getInstance().GL_version_minor > 0:  # 3.1 (or greater?)
          self.vao = glGenVertexArrays(1)
        else:  # 3.0 (or less?)
          self.vao = GLuint(0)
          glGenVertexArrays(1, self.vao)
        glBindVertexArray(self.vao)

        self.loadModel(self.filepath)

        self.vbo = VBO(self.meshData, GL_STATIC_DRAW)
        self.vbo.bind()

        glEnableVertexAttribArray(0)
        glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 6*4, self.vbo+0)

        glEnableVertexAttribArray(1)
        glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 6*4, self.vbo+12)
        
        self.ebo = glGenBuffers(1)
        glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, self.ebo)
        glBufferData(GL_ELEMENT_ARRAY_BUFFER, len(self.elements)*4, self.elements, GL_STATIC_DRAW)
Example #2
0
    def __init__(self, src, actor=None):
        Component.__init__(self, actor)

        # TODO Include a mesh name (e.g. 'Dragon') as ID as well as src (e.g. '../res/models/Dragon.obj')
        self.src = src
        self.filepath = Context.getInstance().getResourcePath('models', src)

        # OpenGL version-dependent code (NOTE assumes major version = 3)
        self.vao = None
        if Context.getInstance().GL_version_minor > 0:  # 3.1 (or greater?)
            self.vao = glGenVertexArrays(1)
        else:  # 3.0 (or less?)
            self.vao = GLuint(0)
            glGenVertexArrays(1, self.vao)
        glBindVertexArray(self.vao)

        self.loadModel(self.filepath)

        self.vbo = VBO(self.meshData, GL_STATIC_DRAW)
        self.vbo.bind()

        glEnableVertexAttribArray(0)
        glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 6 * 4, self.vbo + 0)

        glEnableVertexAttribArray(1)
        glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 6 * 4, self.vbo + 12)

        self.ebo = glGenBuffers(1)
        glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, self.ebo)
        glBufferData(GL_ELEMENT_ARRAY_BUFFER,
                     len(self.elements) * 4, self.elements, GL_STATIC_DRAW)
Example #3
0
    def __init__(self, vertexFileName, fragmentFileName):
        #Read in the vertex shader from file
        with open(vertexFileName, "r") as f:
            vertexSource = f.read()
        f.close()

        #Read in the fragment shader from file
        with open(fragmentFileName, "r") as f:
            fragmentSource = f.read()
        f.close()

        # OpenGL version-dependent code (NOTE shader source must be version 150)
        if Context.getInstance().GLSL_version_string != "150":
            print "Shader.__init__(): Changing shader source version to {}".format(
                Context.getInstance().GLSL_version_string)
            vertexSource = vertexSource.replace(
                "150",
                Context.getInstance().GLSL_version_string, 1)
            fragmentSource = fragmentSource.replace(
                "150",
                Context.getInstance().GLSL_version_string, 1)
        # TODO put special version placeholder in shader source files instead of "150"

        #Create and compile the vertex shader
        vertexShader = glCreateShader(GL_VERTEX_SHADER)
        glShaderSource(vertexShader, vertexSource)
        glCompileShader(vertexShader)
        self.printShaderInfoLog(vertexShader)

        #Create and compile the fragment shader
        fragmentShader = glCreateShader(GL_FRAGMENT_SHADER)
        glShaderSource(fragmentShader, fragmentSource)
        glCompileShader(fragmentShader)
        self.printShaderInfoLog(fragmentShader)

        #Link the vertex and fragment shader into a shader program
        self.shaderProgram = glCreateProgram()
        glAttachShader(self.shaderProgram, vertexShader)
        glAttachShader(self.shaderProgram, fragmentShader)

        glBindAttribLocation(self.shaderProgram, 0, "position")
        glBindAttribLocation(self.shaderProgram, 1, "normal")
        glBindFragDataLocation(self.shaderProgram, 0, "outColor")

        glLinkProgram(self.shaderProgram)
        self.printProgramInfoLog(self.shaderProgram)
        glUseProgram(self.shaderProgram)

        #Flag the vertex and fragment shaders for deletion when not in use
        glDeleteShader(vertexShader)
        glDeleteShader(fragmentShader)
Example #4
0
    def __init__(self, vertexFileName, fragmentFileName):
        #Read in the vertex shader from file
        with open (vertexFileName, "r") as f:
            vertexSource = f.read()
        f.close()

        #Read in the fragment shader from file
        with open (fragmentFileName, "r") as f:
            fragmentSource = f.read()
        f.close()
        
        # OpenGL version-dependent code (NOTE shader source must be version 150)
        if Context.getInstance().GLSL_version_string != "150":
          print "Shader.__init__(): Changing shader source version to {}".format(Context.getInstance().GLSL_version_string)
          vertexSource = vertexSource.replace("150", Context.getInstance().GLSL_version_string, 1)
          fragmentSource = fragmentSource.replace("150", Context.getInstance().GLSL_version_string, 1)
        # TODO put special version placeholder in shader source files instead of "150"
        
        #Create and compile the vertex shader
        vertexShader = glCreateShader(GL_VERTEX_SHADER)
        glShaderSource(vertexShader, vertexSource)
        glCompileShader(vertexShader)
        self.printShaderInfoLog( vertexShader )

        #Create and compile the fragment shader
        fragmentShader = glCreateShader(GL_FRAGMENT_SHADER)
        glShaderSource(fragmentShader, fragmentSource)
        glCompileShader(fragmentShader)
        self.printShaderInfoLog( fragmentShader )

        #Link the vertex and fragment shader into a shader program
        self.shaderProgram = glCreateProgram()
        glAttachShader(self.shaderProgram, vertexShader)
        glAttachShader(self.shaderProgram, fragmentShader)

        glBindAttribLocation( self.shaderProgram, 0, "position")
        glBindAttribLocation( self.shaderProgram, 1, "normal")
        glBindFragDataLocation(self.shaderProgram, 0, "outColor")

        glLinkProgram(self.shaderProgram)
        self.printProgramInfoLog(self.shaderProgram)
        glUseProgram(self.shaderProgram)

        #Flag the vertex and fragment shaders for deletion when not in use
	glDeleteShader(vertexShader);
	glDeleteShader(fragmentShader);
Example #5
0
 def __init__(self):
     """
 Initialize task-specific variables, load scene fragments, find tools.
 Derived classes must call through to Task.__init__(self).
 NOTE: Context must be initialized at this point.
 """
     self.context = Context.getInstance()
     self.logger = logging.getLogger(__name__)
     self.active = False
Example #6
0
 def __init__(self):
   """
   Initialize task-specific variables, load scene fragments, find tools.
   Derived classes must call through to Task.__init__(self).
   NOTE: Context must be initialized at this point.
   """
   self.context = Context.getInstance()
   self.logger = logging.getLogger(__name__)
   self.active = False
Example #7
0
 def __init__(self):
     self.context = Context.getInstance()  # NOTE must contain renderer
     assert hasattr(self.context, 'renderer') and isinstance(self.context.renderer, Renderer), "Context does not contain renderer of correct type"
     
     self.logger = logging.getLogger(__name__)
     self.hideCube = False
     self.transform = hm.identity()
     self.light = Light(self.context.renderer)
     
     self.actorFactory = ActorFactory(self.context.renderer)
     self.actors = []
     self.actorsById = dict()
Example #8
0
    def __init__(self):
        self.context = Context.getInstance()  # NOTE must contain renderer
        assert hasattr(self.context, 'renderer') and isinstance(
            self.context.renderer,
            Renderer), "Context does not contain renderer of correct type"

        self.logger = logging.getLogger(__name__)
        self.hideCube = False
        self.transform = hm.identity()
        self.light = Light(self.context.renderer)

        self.actorFactory = ActorFactory(self.context.renderer)
        self.actors = []
        self.actorsById = dict()
Example #9
0
    def __init__(self):
        self.context = Context.getInstance()  # NOTE must be initialized
        self.logger = logging.getLogger(__name__)

        self.windowWidth = 640
        self.windowHeight = 480

        self.initialize()

        self.colorShader = Shader(self.context.getResourcePath('shaders', 'ADS.vert'), self.context.getResourcePath('shaders', 'ADS.frag'))

        self.proj = hm.perspective(hm.identity(), 35, float(self.windowWidth) / self.windowHeight, 1.0, 1000.0)
        self.view = hm.lookat(hm.identity(), np.array([0.0, 0.0, 0.0, 1.0], dtype = np.float32), np.array([0.0, 0.0, 1.0, 1.0], dtype = np.float32), np.array([0.0, -1.0, 0.0, 1.0], dtype = np.float32))
        self.cameraMatrix = np.dot(self.proj, self.view)
        self.setCameraMatrix(self.cameraMatrix)
Example #10
0
    def __init__(self):
        self.context = Context.getInstance()  # NOTE must contain scene

        self.timer = time.clock()

        #self.wheelPosition = glfw.GetMouseWheel()
        self.oldMouseX, self.oldMouseY = glfw.GetMousePos()
        self.curMouseX = self.oldMouseX
        self.curMouseY = self.oldMouseY
        self.leftPressed = False
        self.rightPressed = False

        self.manualControl = False

        self.doQuit = False  # flag to signal stop condition
        self.quitting = False  # to prevent multiple key-presses
Example #11
0
    def __init__(self):
        self.context = Context.getInstance()  # NOTE must contain scene

        self.timer = time.clock()

        # self.wheelPosition = glfw.GetMouseWheel()
        self.oldMouseX, self.oldMouseY = glfw.GetMousePos()
        self.curMouseX = self.oldMouseX
        self.curMouseY = self.oldMouseY
        self.leftPressed = False
        self.rightPressed = False

        self.manualControl = False

        self.doQuit = False  # flag to signal stop condition
        self.quitting = False  # to prevent multiple key-presses
Example #12
0
    def __init__(self):
        self.context = Context.getInstance()  # NOTE must be initialized
        self.logger = logging.getLogger(__name__)

        self.windowWidth = 640
        self.windowHeight = 480

        self.initialize()

        self.colorShader = Shader(
            self.context.getResourcePath('shaders', 'ADS.vert'),
            self.context.getResourcePath('shaders', 'ADS.frag'))

        self.proj = hm.perspective(hm.identity(), 35,
                                   float(self.windowWidth) / self.windowHeight,
                                   1.0, 1000.0)
        self.view = hm.lookat(
            hm.identity(), np.array([0.0, 0.0, 0.0, 1.0], dtype=np.float32),
            np.array([0.0, 0.0, 1.0, 1.0], dtype=np.float32),
            np.array([0.0, -1.0, 0.0, 1.0], dtype=np.float32))
        self.cameraMatrix = np.dot(self.proj, self.view)
        self.setCameraMatrix(self.cameraMatrix)
Example #13
0
 def __init__(self):
     """Initialize tool-specific behavior here."""
     self.context = Context.getInstance()
     self.logger = logging.getLogger(__name__)
     self.active = False
Example #14
0
 def __init__(self):
   """Initialize tool-specific behavior here."""
   self.context = Context.getInstance()
   self.logger = logging.getLogger(__name__)
   self.active = False