Example #1
0
def test_scene_auto(device_):
    scene = fresnel.Scene()

    geom1 = fresnel.geometry.Sphere(scene,
                                    position=[[-9, -2, 0], [-5, -1, 0],
                                              [4, 0, 0], [2, 1, 0]],
                                    radius=1.0)
    assert scene.camera == 'auto'

    fresnel.preview(scene)
Example #2
0
def test_scene_default_camera(device_):
    """Test that there is a default camera."""
    scene = fresnel.Scene()

    fresnel.geometry.Sphere(scene,
                            position=[[-9, -2, 0], [-5, -1, 0], [4, 0, 0],
                                      [2, 1, 0]],
                            radius=1.0)

    fresnel.preview(scene, anti_alias=False)
Example #3
0
def test_background_color(device_):
    """Test the background_color property."""
    scene = fresnel.Scene(device=device_)

    scene.background_color = fresnel.color.linear((0.125, 0.75, 0.375))

    numpy.testing.assert_array_equal(
        scene.background_color, fresnel.color.linear((0.125, 0.75, 0.375)))

    scene.background_alpha = 0.5

    assert scene.background_alpha == 0.5

    scene.camera = fresnel.camera.Orthographic(position=(0, 0, 10),
                                               look_at=(0, 0, 0),
                                               up=(0, 1, 0),
                                               height=7)
    buf_proxy = fresnel.preview(scene, w=100, h=100, anti_alias=False)
    buf = buf_proxy[:]

    numpy.testing.assert_array_equal(
        buf[:, :, 3],
        numpy.ones(shape=(100, 100), dtype=buf.dtype) * 128)
    numpy.testing.assert_array_equal(
        buf[:, :, 0:3],
        numpy.ones(shape=(100, 100, 3), dtype=buf.dtype) * (32, 191, 96))
Example #4
0
def test_primitive_color_mix(scene_hex_sphere_, generate=False):
    """Test the primitive_color_mix property."""
    geometry = scene_hex_sphere_.geometry[0]
    geometry.material = fresnel.material.Material(solid=1.0,
                                                  color=fresnel.color.linear(
                                                      [1, 0, 0]),
                                                  primitive_color_mix=1.0)

    geometry.color[0] = fresnel.color.linear([1, 0, 0])
    geometry.color[1] = fresnel.color.linear([0, 1, 0])
    geometry.color[2] = fresnel.color.linear([0, 0, 1])
    geometry.color[3] = fresnel.color.linear([1, 0, 1])
    geometry.color[4] = fresnel.color.linear([0, 1, 1])
    geometry.color[5] = fresnel.color.linear([0, 0, 0])

    buf_proxy = fresnel.preview(scene_hex_sphere_,
                                w=100,
                                h=100,
                                anti_alias=False)

    if generate:
        PIL.Image.fromarray(buf_proxy[:], mode='RGBA').save(
            open('output/test_material.test_primitive_color_mix.png', 'wb'),
            'png')
    else:
        conftest.assert_image_approx_equal(
            buf_proxy[:], dir_path / 'reference' /
            'test_material.test_primitive_color_mix.png')
Example #5
0
def test_camera(scene_hex_sphere_, generate=False):
    """Test the camera property."""
    scene_hex_sphere_.camera = fresnel.camera.Orthographic(position=(1, 0, 10),
                                                           look_at=(1, 0, 0),
                                                           up=(0, 1, 0),
                                                           height=6)

    numpy.testing.assert_array_equal(scene_hex_sphere_.camera.position,
                                     (1, 0, 10))
    numpy.testing.assert_array_equal(scene_hex_sphere_.camera.look_at,
                                     (1, 0, 0))
    numpy.testing.assert_array_equal(scene_hex_sphere_.camera.up, (0, 1, 0))
    assert scene_hex_sphere_.camera.height == 6

    buf_proxy = fresnel.preview(scene_hex_sphere_,
                                w=100,
                                h=100,
                                anti_alias=False)

    if generate:
        PIL.Image.fromarray(buf_proxy[:], mode='RGBA').save(
            open('output/test_scene.test_camera.png', 'wb'), 'png')
    else:
        conftest.assert_image_approx_equal(
            buf_proxy[:],
            dir_path / 'reference' / 'test_scene.test_camera.png')
def test_face_color(scene_eight_polyhedra_, generate=False):
    buf_proxy = fresnel.preview(scene_eight_polyhedra_, w=150, h=100)

    geometry = scene_eight_polyhedra_.geometry[0]
    geometry.color_by_face = 1.0
    geometry.material.primitive_color_mix = 1.0

    buf_proxy = fresnel.preview(scene_eight_polyhedra_, w=150, h=100)

    if generate:
        PIL.Image.fromarray(buf_proxy[:], mode='RGBA').save(
            open('output/test_geometry_convex_polyhedron.test_face_color.png',
                 'wb'), 'png')
    else:
        conftest.assert_image_approx_equal(
            buf_proxy[:],
            'reference/test_geometry_convex_polyhedron.test_face_color.png')
Example #7
0
def test_render(scene_four_spheres_, generate=False):
    buf_proxy = fresnel.preview(scene_four_spheres_, w=150, h=100)

    if generate:
        PIL.Image.fromarray(buf_proxy[:], mode='RGBA').save(
            open('output/test_geometry_sphere.test_render.png', 'wb'), 'png')
    else:
        conftest.assert_image_approx_equal(
            buf_proxy[:], 'reference/test_geometry_sphere.test_render.png')
Example #8
0
def test_multiple(scene_tetrahedra_, generate=False):
    buf_proxy = fresnel.preview(scene_tetrahedra_, w=100, h=100)

    if generate:
        PIL.Image.fromarray(buf_proxy[:], mode='RGBA').save(
            open('output/test_geometry_mesh.test_multiple.png', 'wb'), 'png')
    else:
        conftest.assert_image_approx_equal(
            buf_proxy[:], 'reference/test_geometry_mesh.test_multiple.png')
Example #9
0
def test_multiple_geometries(device_, generate=False):
    scene = fresnel.Scene(lights=conftest.test_lights())
    scene.camera = fresnel.camera.orthographic(position=(0, 0, 10), look_at=(0,0,0), up=(0,1,0), height=7)

    geom1 = fresnel.geometry.Sphere(scene, position = [[-4, 1, 0], [-4, -1, 0], [-2, 1, 0], [-2, -1, 0]], radius=1.0)
    geom1.material = fresnel.material.Material(solid=1.0, color=fresnel.color.linear([0.42,0.267,1]))
    geom1.outline_width = 0.12

    geom2 = fresnel.geometry.Sphere(scene, position = [[4, 1, 0], [4, -1, 0], [2, 1, 0], [2, -1, 0]], radius=1.0)
    geom2.material = fresnel.material.Material(solid=0.0, color=fresnel.color.linear([1,0.874,0.169]))

    buf_proxy = fresnel.preview(scene, w=200, h=100)

    if generate:
        PIL.Image.fromarray(buf_proxy[:], mode='RGBA').save(open('output/test_scene.test_multiple_geometries1.png', 'wb'), 'png');
    else:
        conftest.assert_image_approx_equal(buf_proxy[:], 'reference/test_scene.test_multiple_geometries1.png')

    geom1.disable()

    buf_proxy = fresnel.preview(scene, w=200, h=100)

    if generate:
        PIL.Image.fromarray(buf_proxy[:], mode='RGBA').save(open('output/test_scene.test_multiple_geometries2.png', 'wb'), 'png');
    else:
        conftest.assert_image_approx_equal(buf_proxy[:], 'reference/test_scene.test_multiple_geometries2.png')

    geom1.enable()

    buf_proxy = fresnel.preview(scene, w=200, h=100)

    if generate:
        PIL.Image.fromarray(buf_proxy[:], mode='RGBA').save(open('output/test_scene.test_multiple_geometries3.png', 'wb'), 'png');
    else:
        conftest.assert_image_approx_equal(buf_proxy[:], 'reference/test_scene.test_multiple_geometries3.png')

    geom2.remove()

    buf_proxy = fresnel.preview(scene, w=200, h=100)

    if generate:
        PIL.Image.fromarray(buf_proxy[:], mode='RGBA').save(open('output/test_scene.test_multiple_geometries4.png', 'wb'), 'png');
    else:
        conftest.assert_image_approx_equal(buf_proxy[:], 'reference/test_scene.test_multiple_geometries4.png')
Example #10
0
def test_color(scene_hex_sphere_, generate=False):
    geometry = scene_hex_sphere_.geometry[0]
    geometry.material.color = fresnel.color.linear([0,0,1])
    assert geometry.material.color == tuple(fresnel.color.linear([0,0,1]))

    buf_proxy = fresnel.preview(scene_hex_sphere_, w=100, h=100)

    if generate:
        PIL.Image.fromarray(buf_proxy[:], mode='RGBA').save(open('output/test_material.test_color.png', 'wb'), 'png');
    else:
        conftest.assert_image_approx_equal(buf_proxy[:], 'reference/test_material.test_color.png')
def test_render(scene_box_, generate=False):
    """Test that Box renders properly."""
    buf_proxy = fresnel.preview(scene_box_, w=150, h=100, anti_alias=False)

    if generate:
        PIL.Image.fromarray(buf_proxy[:], mode="RGBA").save(
            open("output/test_geometry_box.test_render.png", "wb"), "png")
    else:
        conftest.assert_image_approx_equal(
            buf_proxy[:],
            dir_path / "reference" / "test_geometry_box.test_render.png")
Example #12
0
def test_metal(scene_hex_sphere_, generate=False):
    geometry = scene_hex_sphere_.geometry[0]
    geometry.material.metal = 1.0
    assert geometry.material.metal == 1.0

    buf_proxy = fresnel.preview(scene_hex_sphere_, w=100, h=100)

    if generate:
        PIL.Image.fromarray(buf_proxy[:], mode='RGBA').save(open('output/test_material.test_metal.png', 'wb'), 'png');
    else:
        conftest.assert_image_approx_equal(buf_proxy[:], 'reference/test_material.test_metal.png')
Example #13
0
def check_preview_render(scene,
                         name,
                         w=150,
                         h=100,
                         tolerance=2,
                         anti_alias=False,
                         generate=False):
    """Preview render the given scene and check the image matches the ref."""
    buf_proxy = fresnel.preview(scene, w=w, h=h, anti_alias=anti_alias)

    _validate_or_generate_image(buf_proxy, name, generate, tolerance)
Example #14
0
def test_light_dir(scene_hex_sphere_, generate=False):
    scene_hex_sphere_.lights[0].direction = (1, 0, 0)
    scene_hex_sphere_.lights[0].color = (0.5, 0.5, 0.5)
    assert scene_hex_sphere_.lights[0].direction == (1, 0, 0)
    assert scene_hex_sphere_.lights[0].color == (0.5, 0.5, 0.5)

    buf_proxy = fresnel.preview(scene_hex_sphere_, w=100, h=100)

    if generate:
        PIL.Image.fromarray(buf_proxy[:], mode='RGBA').save(open('output/test_scene.test_light_dir.png', 'wb'), 'png');
    else:
        conftest.assert_image_approx_equal(buf_proxy[:], 'reference/test_scene.test_light_dir.png')
Example #15
0
def test_outline(scene_one_triangle_, generate=False):
    geometry = scene_one_triangle_.geometry[0]
    geometry.outline_width = 0.1

    buf_proxy = fresnel.preview(scene_one_triangle_, w=100, h=100)

    if generate:
        PIL.Image.fromarray(buf_proxy[:], mode='RGBA').save(
            open('output/test_geometry_mesh.test_outline.png', 'wb'), 'png')
    else:
        conftest.assert_image_approx_equal(
            buf_proxy[:], 'reference/test_geometry_mesh.test_outline.png')
Example #16
0
def test_rounded(scene_rounded_polygons_, generate=False):
    geometry = scene_rounded_polygons_.geometry[0]
    geometry.outline_width = 0.1

    buf_proxy = fresnel.preview(scene_rounded_polygons_, w=150, h=100)

    if generate:
        PIL.Image.fromarray(buf_proxy[:], mode='RGBA').save(
            open('output/test_geometry_polygon.test_rounded.png', 'wb'), 'png')
    else:
        conftest.assert_image_approx_equal(
            buf_proxy[:], 'reference/test_geometry_polygon.test_rounded.png')
Example #17
0
def test_color_interp(scene_one_triangle_, generate=False):
    geometry = scene_one_triangle_.geometry[0]
    geometry.material.primitive_color_mix = 1.0

    buf_proxy = fresnel.preview(scene_one_triangle_, w=100, h=100)

    if generate:
        PIL.Image.fromarray(buf_proxy[:], mode='RGBA').save(
            open('output/test_geometry_mesh.test_color_interp.png', 'wb'),
            'png')
    else:
        conftest.assert_image_approx_equal(
            buf_proxy[:], 'reference/test_geometry_mesh.test_color_interp.png')
Example #18
0
def test_set_material(scene_hex_sphere_, generate=False):
    geometry = scene_hex_sphere_.geometry[0]
    geometry.material = fresnel.material.Material(solid=0.0, color=fresnel.color.linear([1,0,0]), primitive_color_mix=0.0)
    assert geometry.material.solid == 0.0
    assert geometry.material.color == tuple(fresnel.color.linear([1,0,0]))
    assert geometry.material.primitive_color_mix == 0.0

    buf_proxy = fresnel.preview(scene_hex_sphere_, w=100, h=100)

    if generate:
        PIL.Image.fromarray(buf_proxy[:], mode='RGBA').save(open('output/test_material.test_set_material.png', 'wb'), 'png');
    else:
        conftest.assert_image_approx_equal(buf_proxy[:], 'reference/test_material.test_set_material.png')
Example #19
0
def test_camera(scene_hex_sphere_, generate=False):
    scene_hex_sphere_.camera = fresnel.camera.orthographic(position=(1, 0, 10), look_at=(1,0,0), up=(0,1,0), height=6)

    assert scene_hex_sphere_.camera.position == (1,0,10)
    assert scene_hex_sphere_.camera.look_at == (1,0,0)
    assert scene_hex_sphere_.camera.up == (0,1,0)
    assert scene_hex_sphere_.camera.height == 6

    buf_proxy = fresnel.preview(scene_hex_sphere_, w=100, h=100)

    if generate:
        PIL.Image.fromarray(buf_proxy[:], mode='RGBA').save(open('output/test_scene.test_camera.png', 'wb'), 'png');
    else:
        conftest.assert_image_approx_equal(buf_proxy[:], 'reference/test_scene.test_camera.png')
Example #20
0
def test_render(scene_one_triangle_, generate=False):
    """Test that Mesh renders properly."""
    buf_proxy = fresnel.preview(scene_one_triangle_,
                                w=100,
                                h=100,
                                anti_alias=False)

    if generate:
        PIL.Image.fromarray(buf_proxy[:], mode='RGBA').save(
            open('output/test_geometry_mesh.test_render.png', 'wb'), 'png')
    else:
        conftest.assert_image_approx_equal(
            buf_proxy[:],
            dir_path / 'reference' / 'test_geometry_mesh.test_render.png')
Example #21
0
def test_multiple(scene_tetrahedra_, generate=False):
    """Test that Mesh supports multiple instances."""
    buf_proxy = fresnel.preview(scene_tetrahedra_,
                                w=100,
                                h=100,
                                anti_alias=False)

    if generate:
        PIL.Image.fromarray(buf_proxy[:], mode='RGBA').save(
            open('output/test_geometry_mesh.test_multiple.png', 'wb'), 'png')
    else:
        conftest.assert_image_approx_equal(
            buf_proxy[:],
            dir_path / 'reference' / 'test_geometry_mesh.test_multiple.png')
Example #22
0
def test_angle(scene_polygons_, generate=False):
    geometry = scene_polygons_.geometry[0]

    a = numpy.array([-0.8, 0.5], dtype=numpy.float32)
    geometry.angle[:] = a
    numpy.testing.assert_array_equal(a, geometry.angle[:])

    buf_proxy = fresnel.preview(scene_polygons_, w=150, h=100)

    if generate:
        PIL.Image.fromarray(buf_proxy[:], mode='RGBA').save(
            open('output/test_geometry_polygon.test_angle.png', 'wb'), 'png')
    else:
        conftest.assert_image_approx_equal(
            buf_proxy[:], 'reference/test_geometry_polygon.test_angle.png')
Example #23
0
def test_face_color(scene_eight_polyhedra_, generate=False):
    """Test that faces can be colored individually."""
    buf_proxy = fresnel.preview(scene_eight_polyhedra_,
                                w=150,
                                h=100,
                                anti_alias=False)

    geometry = scene_eight_polyhedra_.geometry[0]
    geometry.color_by_face = 1.0
    geometry.material.primitive_color_mix = 1.0

    buf_proxy = fresnel.preview(scene_eight_polyhedra_,
                                w=150,
                                h=100,
                                anti_alias=False)

    if generate:
        PIL.Image.fromarray(buf_proxy[:], mode='RGBA').save(
            open('output/test_geometry_convex_polyhedron.test_face_color.png',
                 'wb'), 'png')
    else:
        conftest.assert_image_approx_equal(
            buf_proxy[:], dir_path / 'reference' /
            'test_geometry_convex_polyhedron.test_face_color.png')
Example #24
0
def test_render(scene_eight_polyhedra_, generate=False):
    """Test that convex polyhedra render properly."""
    buf_proxy = fresnel.preview(scene_eight_polyhedra_,
                                w=150,
                                h=100,
                                anti_alias=False)

    if generate:
        PIL.Image.fromarray(buf_proxy[:], mode='RGBA').save(
            open('output/test_geometry_convex_polyhedron.test_render.png',
                 'wb'), 'png')
    else:
        conftest.assert_image_approx_equal(
            buf_proxy[:], dir_path / 'reference' /
            'test_geometry_convex_polyhedron.test_render.png')
Example #25
0
def test_radius(scene_four_spheres_, generate=False):
    geometry = scene_four_spheres_.geometry[0]

    r = numpy.array([0.5, 0.6, 0.8, 1.0], dtype=numpy.float32)
    geometry.radius[:] = r
    numpy.testing.assert_array_equal(r, geometry.radius[:])

    buf_proxy = fresnel.preview(scene_four_spheres_, w=150, h=100)

    if generate:
        PIL.Image.fromarray(buf_proxy[:], mode='RGBA').save(
            open('output/test_geometry_sphere.test_radius.png', 'wb'), 'png')
    else:
        conftest.assert_image_approx_equal(
            buf_proxy[:], 'reference/test_geometry_sphere.test_radius.png')
Example #26
0
def test_background_color(device_):
    scene = fresnel.Scene(device=device_)

    scene.background_color = fresnel.color.linear((0.125, 0.75, 0.375))

    assert scene.background_color == tuple(fresnel.color.linear((0.125, 0.75, 0.375)))

    scene.background_alpha = 0.5

    assert scene.background_alpha == 0.5

    buf_proxy = fresnel.preview(scene, w=100, h=100)
    buf = buf_proxy[:]

    numpy.testing.assert_array_equal(buf[:,:,3], numpy.ones(shape=(100,100), dtype=buf.dtype)*128)
    numpy.testing.assert_array_equal(buf[:,:,0:3], numpy.ones(shape=(100,100,3), dtype=buf.dtype)*(32,191,96))
Example #27
0
def test_position(scene_four_spheres_, generate=False):
    geometry = scene_four_spheres_.geometry[0]

    p = numpy.array([[1.5, 0, 1], [1.5, 0, -1], [-1.5, 0, 1], [-1.5, 0, -1]],
                    dtype=numpy.float32)
    geometry.position[:] = p
    numpy.testing.assert_array_equal(p, geometry.position[:])

    buf_proxy = fresnel.preview(scene_four_spheres_, w=150, h=100)

    if generate:
        PIL.Image.fromarray(buf_proxy[:], mode='RGBA').save(
            open('output/test_geometry_sphere.test_position.png', 'wb'), 'png')
    else:
        conftest.assert_image_approx_equal(
            buf_proxy[:], 'reference/test_geometry_sphere.test_position.png')
def test_box_radius(scene_box_, generate=False):
    """Test the box_radius property."""
    geometry = scene_box_.geometry[0]

    r = 0.1
    geometry.box_radius = r
    assert r == pytest.approx(geometry.box_radius)

    buf_proxy = fresnel.preview(scene_box_, w=150, h=100, anti_alias=False)

    if generate:
        PIL.Image.fromarray(buf_proxy[:], mode="RGBA").save(
            open("output/test_geometry_box.test_box_radius.png", "wb"), "png")
    else:
        conftest.assert_image_approx_equal(
            buf_proxy[:],
            dir_path / "reference" / "test_geometry_box.test_box_radius.png")
def test_outline(scene_four_spheres_, generate=False):
    """Test that outlines render properly."""
    geometry = scene_four_spheres_.geometry[0]
    geometry.outline_width = 0.1

    buf_proxy = fresnel.preview(scene_four_spheres_,
                                w=150,
                                h=100,
                                anti_alias=False)

    if generate:
        PIL.Image.fromarray(buf_proxy[:], mode='RGBA').save(
            open('output/test_geometry_sphere.test_outline.png', 'wb'), 'png')
    else:
        conftest.assert_image_approx_equal(
            buf_proxy[:],
            dir_path / 'reference' / 'test_geometry_sphere.test_outline.png')
def test_radius(scene_box_, generate=False):
    """Test the radius property."""
    geometry = scene_box_.geometry[0]

    r = numpy.array(0.1, dtype=numpy.float32)
    geometry.radius[:] = r
    numpy.testing.assert_array_equal(r, geometry.radius[:])

    buf_proxy = fresnel.preview(scene_box_, w=150, h=100, anti_alias=False)

    if generate:
        PIL.Image.fromarray(buf_proxy[:], mode="RGBA").save(
            open("output/test_geometry_box.test_radius.png", "wb"), "png")
    else:
        conftest.assert_image_approx_equal(
            buf_proxy[:],
            dir_path / "reference" / "test_geometry_box.test_radius.png")