示例#1
0
def render(camera, world):
    image = canvas(camera.hsize, camera.vsize)

    start = time.time()
    for y in range(camera.vsize):
        current = time.time()
        elapsed = round(current - start, 2)
        percent = round(y / camera.vsize * 100, 2)
        if y != 0:
            t = round((1 / (y / camera.vsize)) * elapsed - elapsed, 2)
            print(
                "\r"
                + str(percent).rjust(5)
                + "% : "
                + str(t)
                + "s left : "
                + str(elapsed)
                + "s elapsed",
                end=" ",
                flush=True,
            )
        for x in range(camera.hsize):
            ray = ray_for_pixel(camera, x, y)
            color = color_at(world, ray)
            write_pixel(image, x, y, color)
    print()

    return image
示例#2
0
    for y in range(canvas_pixels):

        world_y = half - pixel_size * y

        for x in range(canvas_pixels):

            world_x = -half + pixel_size * x
            pos = point(world_x, world_y, wall_z)

            r = ray(ray_origin, normalize(pos - ray_origin))
            xs = intersect(shape, r)

            if hit(xs) is not None:
                pnt = position(r, xs[0].t)
                normal = normal_at(xs[0].object, pnt)
                eye = -r.direction
                color = lighting(xs[0].object.material, xs[0].object, light,
                                 pnt, eye, normal)
                write_pixel(canvas, x, y, color)

    end = time.time()
    print("Finished render.")
    print(str(round(end - start, 2)) + "s")

    start = time.time()
    print("Start writing file...")
    canvas_to_ppm(canvas).write_file("images/sphere.ppm")
    end = time.time()
    print("Finished writing file.")
    print(str(round(end - start, 2)) + "s")
示例#3
0
def step_impl(context):
    write_pixel(context.c, 4, 2, context.c3)
示例#4
0
def step_impl(context):
    write_pixel(context.c, 2, 1, context.c2)
示例#5
0
def step_impl(context):
    write_pixel(context.c, 0, 0, context.c1)
示例#6
0
def step_impl(context):
    write_pixel(context.c, 2, 3, context.red)
示例#7
0
文件: canvas_steps.py 项目: pcn/trtc
def step_impl(context, x, y):
    canvas.write_pixel(getattr(context, can), w, h, getattr(context, color))