Ejemplo n.º 1
0
def main():
    """ create window, add shaders & scene objects, then run rendering loop """
    width = 640
    height = 480

    camera = Camera(vec(0, 0, -5), 60, height / width, .3, 1000)
    scene = Scene(camera,
                  light=vec(-.57735026919, -.57735026919, .57735026919) * .5)

    pyramidMesh = Mesh(vertices=np.array(
        ((0, .5, 0), (.5, -.5, 0), (-.5, -.5, 0)), 'f'),
                       normals=np.array(
                           ((0, 0, -1), (0.70710678118, 0, -0.70710678118),
                            (-0.70710678118, 0, -0.70710678118)), 'f'),
                       perVertexColor=np.array(
                           ((1.0, 0.0, 0.0), (0.0, 1.0, 0.0), (0.0, 0.0, 1.0)),
                           'f'),
                       indexes=np.array((0, 1, 2), 'u4'))

    suzanne = Mesh.LoadMeshes("models/suzanne.obj")[0]

    scene.Add3DObject(
        Object3D(0,
                 translate(-1.5, 0, 1) @ rotate(vec(0.0, 1.0, 0.0), -200),
                 suzanne, Material("shaders/rainbow_shaded.frag")))

    scene.Add3DObject(
        Object3D(1,
                 translate(1.5, 0, 1) @ rotate(vec(0.0, 1.0, 0.0), 200),
                 suzanne, Material("shaders/shaded.frag")))

    renderer = Renderer(scene)
    renderer.Run()