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)
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)