Beispiel #1
0
def main():
    """ Run the rendering loop for the scene. """
    viewer = Viewer()

    origin = (-100,-120, -100)
    widthScale = 3

    ground = Ground(origin, widthScale, 0.8)
    viewer.add(ground)

    #Generate trees according to a uniform law for appearance
    trees = []
    for x, z in ground.iterPos():
        if(not(x%10) and not(z%10)): #generating
            if(np.random.uniform() > 0.75):
                tree = Tree(x*widthScale, ground.getHeight(x, z)+2, z*widthScale)
                trees.append(tree)
                viewer.add(tree.node)
    

    control = Control()
    viewer.add(control)

    dino = Dino(ground)
    viewer.add(dino)

    viewer.run(dino)
Beispiel #2
0
def main():
    cam = Camera("hw2")
    cam.createView(Point3f(0.0, 0.0, 30.0), Vector3f(0.0, 1.0, 0.0))

    cam.setNear(1)
    cam.setFar(1000)

    viewer = Viewer(cam)
    color_shader = Shader("vert.vs", "frag.fs")
    geom_shader = Shader("point_shadows_depth.vs", "point_shadows_depth.fs",
                         "point_shadows_depth.gs")

    lighter_shader = Shader("light_vert.vs", "light_frag.fs")
    """
    image = load_texture("textures/cube2.png")
    second_image = load_texture("textures/cube.png")
    """

    sphere_obj = ObjLoader()
    sphere_obj.load_model("object_files/sphere.obj")

    cornell_obj = ObjLoader()
    cornell_obj.load_modell_cornell("object_files/cornell.obj")

    LighterObject = LightObject(lighter_shader, [18, 3, 0], sphere_obj,
                                [1.0, 1.0, 3.0], True)
    LighterObject2 = LightObject(lighter_shader, [0, 40, 0], sphere_obj,
                                 [1.0, 1.0, 3.0], False)
    ShadowsObject = RenderShadows(cam, color_shader, geom_shader, [0, 0, -5],
                                  cornell_obj, None, None, LighterObject,
                                  LighterObject2)
    CornellObject = ShapeFromObjectFile(cam, color_shader, [0, 0, -5],
                                        cornell_obj, None, None, LighterObject,
                                        LighterObject2)

    viewer.add(
        ["Shadow", True, ShadowsObject, False, LighterObject, LighterObject2])
    viewer.add(
        ["Cornell", True, CornellObject, False, LighterObject, LighterObject2])
    viewer.add([
        "Lighter1", True, LighterObject, False, LighterObject, LighterObject2
    ])
    viewer.add([
        "Lighter2", True, LighterObject2, False, LighterObject, LighterObject2
    ])
    print("Press a to enable/disable lighter1 animation.")
    print("Press 1 and 2 to enable/disable lighters.")
    print("Press b to enable/disable blinn specular formula for lighters.")
    print("Press x and Shift +x to move in x direction.")
    print("Press y and Shift +y to move in y direction.")
    print("Press z and Shift +z to move in z direction.")
    glutMainLoop()
Beispiel #3
0
def main():
    """ create a window, add scene objects, then run rendering loop """
    viewer = Viewer()

    # environment node
    environment = Node()

    # set skybox
    shader = Shader("./shaders/skybox.vert", "./shaders/skybox.frag")
    environment.add(Skybox(shader, "./../assets/skybox/underwater/"))

    # set seabed
    shader = Shader("./shaders/texture.vert", "./shaders/texture.frag")
    src = './../assets/models/seabed/seabed.fbx'
    texFile = './../assets/models/seabed/seabed.jpg'
    seabed = Node(transform=scale(0.008, 0.01, 0.008) @ translate(0, -100, 0))
    model = Model(src, shader)
    for m in model.load_phong_textured_skinned(texFile):
        seabed.add(m)

    # plants node
    plants = Node()

    # add seaweed
    shader = Shader("./shaders/texture.vert", "./shaders/texture.frag")
    src = './../assets/models/plants/seaweed/seaweed.fbx'
    texFile = './../assets/models/plants/seaweed/seaweed.png'
    seaweed = Node(transform=scale(2, 2, 2))
    seaweed_density = 80
    for i in range(seaweed_density):
        model = Model(src, shader)
        temp = Node(
            transform=translate(randrange(-50, 50), 3.5, randrange(-50, 50)))

        temp2 = Node(
            transform=translate(randrange(-20, 20), 15, randrange(-20, 0)))

        for m in model.load_textured(texFile):
            temp.add(m)
            if (i % 2 == 0):
                temp2.add(m)

        seaweed.add(temp)
        if (i % 2 == 0):
            seaweed.add(temp2)

    plants.add(seaweed)

    # add coral
    coral_count = 7
    src = './../assets/models/plants/coral/coral.obj'
    texFile = './../assets/models/plants/coral/coral.jpg'
    coral = Node(transform=scale(0.1, 0.1, 0.1))
    for i in range(coral_count):
        model = Model(src, shader)
        temp = Node(transform=translate(randrange(-300, 300), 350,
                                        randrange(-300, -100)))

        for m in model.load_textured(texFile):
            temp.add(m)

        coral.add(temp)

    plants.add(coral)

    seabed.add(plants)

    environment.add(seabed)

    # add fish models
    shader = Shader("./shaders/phong_texture_skinning.vert",
                    "./shaders/phong_texture_skinning.frag")

    fishes = []
    fish_count = 20

    fish_no = randint(1, 24)
    src = './../assets/models/fish/%d/model.fbx' % fish_no
    texFile = './../assets/models/fish/%d/texture.png' % fish_no
    fish = Node(transform=scale(0.0001, 0.0001, 0.0001))
    model = Model(src, shader)
    control_node = ControlNode(KEY_UP, KEY_DOWN, KEY_LEFT, KEY_RIGHT, 30)
    for m in model.load_phong_textured_skinned(texFile):
        control_node.add(m)

    fish.add(control_node)
    fishes.append(fish)

    for i in range(0, fish_count + 1):
        fish_no = randint(1, 24)
        src = './../assets/models/fish/%d/model.fbx' % fish_no
        texFile = './../assets/models/fish/%d/texture.png' % fish_no
        fish = Node(transform=scale(0.0001, 0.0001, 0.0001))
        model = Model(src, shader)
        for m in model.load_phong_textured_skinned(texFile):
            fish.add(m)
        fishanimation = FishAnimation()
        animated_node = KeyFrameControlNode(fishanimation.get_translate_keys(),
                                            fishanimation.get_rotate_keys(), {
                                                0: 1,
                                                2: 1,
                                                4: 1
                                            },
                                            loop=True)
        animated_node.add(fish)
        fishes.append(animated_node)

    for fish in fishes:
        environment.add(fish)

    scene = Node()
    scene.add(environment)

    viewer.add(scene)

    print(
        "Controls : Use the mouse to change the scene view. Press spacebar to restart the scene animations. Press W to see polygons and ESC or Q to Quit."
    )

    # start rendering loop
    viewer.run()