예제 #1
0
def flyby():
    width = height = 800

    scene = Scene(f=2000, cx=width/2, cy=height/2)
    scene.main_camera.position = Vector3(0, 10, -5)
    scene.main_camera.look_at(Vector3.zero())
    cubes = [
        Cube(color=(0, 1, 0), position=Vector3(x, 0, z))
        for x in range(-10, 10, 2) for z in range(-10, 10, 2)
    ]
    cubes = [Cube(), Cube(position=Vector3(0, 0, 2))]

    renderer = SDLRenderer(width=width, height=height)

    for o in cubes:
        scene.add_object(o)

    t0 = time.time()
    while True:
        t = time.time()
        dt = t - t0
        # scene.main_camera.position = Vector3(50*sin(t/2), 30*tan(t/8), 50*cos(t/2))
        scene.main_camera.look_at(Vector3(0, 0, 0))
        # for o in cubes:
            # o.rotate(Vector3(-.2, 0.5*t, t/10))
        renderer.render(scene, draw_polys=True, draw_edges=True)
예제 #2
0
    target = scene.main_camera.position
    t0 = time.time()
    p0 = scene.main_camera.position

    key = 1
    while True:
        scene.update()
        scene.main_light = DirectionalLight(direction=Vector3(cos(0.2*time.time()), 1, sin(0.43*time.time())).normalize())
        t = time.time() - t0
        # bunny.color = Vector3(1,1,1)
        bunny.color = Vector3(cos(0.2*time.time())/2+0.5, cos(.1*time.time())/2+0.5, sin(.4*time.time())/2+0.5)
        if t > key:

            t0 = time.time()
            t = 0
            pos = math.pi*2*random()
            target = Vector3((d * random()+1)*math.sin(pos), 1 + 2*random(), (d * random()+1) * math.cos(pos))
            # key, target = next(keys)
            key = 20*random()
            p0 = scene.main_camera.position
            # p0 = scene.main_camera.position
        scene.main_camera.position = p0.lerp(target, t/key) # + Vector3(0, 0, .1*cos(time.time()))
        scene.main_camera.look_at(Vector3.zero())
        # for cube in cubes:
        #     cube.rotate(Vector3(t, t, 0))

        renderer.render(scene, draw_edges=False, draw_polys=True, draw_axes=False)
        fps = bench.update(t)
        if fps:
            print(fps)