Ejemplo n.º 1
0
def build_and_render(scene, accel_name):
    accel = lm.load_accel('accel', accel_name)
    scene.set_accel(accel.loc())
    scene.build()
    film = lm.load_film('film_output', 'bitmap', w=1920, h=1080)
    renderer = lm.load_renderer('renderer',
                                'raycast',
                                scene=scene,
                                output=film)
    renderer.render()
    return np.copy(film.buffer())
def build_and_render(scene, accel_name):
    accel = lm.load_accel('accel', accel_name, {})
    scene.set_accel(accel.loc())
    scene.build()
    film = lm.load_film('film_output', 'bitmap', {'w': 1920, 'h': 1080})
    renderer = lm.load_renderer('renderer', 'raycast', {
        'scene': scene.loc(),
        'output': film.loc()
    })
    renderer.render()
    return np.copy(film.buffer())
def build_and_render(scene_name):
    lm.reset()
    accel = lm.load_accel('accel', 'embree', {})
    scene = lm.load_scene('scene', 'default', {'accel': accel.loc()})
    lmscene.load(scene, env.scene_path, scene_name)
    scene.build()
    film = lm.load_film('film_output', 'bitmap', {'w': 1920, 'h': 1080})
    renderer = lm.load_renderer('renderer', 'raycast', {
        'scene': scene.loc(),
        'output': film.loc()
    })
    renderer.render()
    return np.copy(film.buffer())
Ejemplo n.º 4
0
def build_and_render(scene_name):
    lm.reset()
    accel = lm.load_accel('accel', 'embree')
    scene = lm.load_scene('scene', 'default', accel=accel)
    lmscene.load(scene, env.scene_path, scene_name)
    scene.build()
    film = lm.load_film('film_output', 'bitmap', w=1920, h=1080)
    renderer = lm.load_renderer('renderer',
                                'raycast',
                                scene=scene,
                                output=film)
    renderer.render()
    return np.copy(film.buffer())
def execute_experiment(scene_name, base_scene_path, num_verts):
    # Base output directory
    base_dir = os.path.join(temp_dir, scene_name)
    os.makedirs(base_dir, exist_ok=True)

    # Scene
    lm.reset()
    accel = lm.load_accel('accel', 'embree')
    scene = lm.load_scene('scene', 'default', accel=accel)
    scene_create_func = lmscene.scene_create_func(scene_name)
    portal_mesh = scene_create_func(scene, base_scene_path)
    scene.build()

    # Rendering
    # w/ BDPT as reference
    if lm.Release:
        img_bdpt = render(scene,
                          'bdpt',
                          'bdpt',
                          base_dir,
                          num_verts,
                          portal=portal_mesh)
        display_image(img_bdpt)

    # w/ portal BDPT simplified version
    img_portal_bdpt = render(scene,
                             'portal_bdpt',
                             'portal_bdpt_inter',
                             base_dir,
                             num_verts,
                             portal=portal_mesh)
    display_image(img_portal_bdpt)

    # Compute difference
    if lm.Release:
        diff_gauss(img_bdpt, img_portal_bdpt, scale=5)
        #display_error(rrmse_pixelwised(img_bdpt, img_portal_bdpt))

    # Per-strategy images
    for k in range(2, num_verts + 1):
        for s in range(0, k + 1 - 2):
            t = k - s - 2
            f = lm.Film.cast(
                lm.comp.get('$.assets.renderer.film_%d_%d' % (k, s)))
            img = np.copy(f.buffer())
            title = 'Strategy (s,t)=(%d,%d)' % (s, t)
            display_image(img, title=title)
            f.save(os.path.join(base_dir, 'strategy_%d_%d.hdr' % (s, t)))
            if lm.Release:
                diff_gauss(img_bdpt, img, scale=5, title=title)
Ejemplo n.º 6
0
def render_reference(scene_name, base_scene_path, num_verts):
    # Base output directory
    base_dir = os.path.join(temp_dir, scene_name)
    os.makedirs(base_dir, exist_ok=True)

    # Scene
    lm.reset()
    accel = lm.load_accel('accel', 'embree')
    scene = lm.load_scene('scene', 'default', accel=accel)
    scene_create_func = lmscene.scene_create_func(scene_name)
    portal_mesh = scene_create_func(scene, base_scene_path)
    scene.build()

    # Rendering
    img_bdpt = render(scene,
                      'bdpt',
                      'bdpt',
                      base_dir,
                      num_verts,
                      portal=portal_mesh)
    display_image(img_bdpt)
                        center=[4.167568, 1.078925, -2.397892],
                        up=[0, 1, 0],
                        vfov=43.001194,
                        aspect=16 / 9)

# OBJ model
model = lm.load_model('model',
                      'wavefrontobj',
                      path=os.path.join(env.scene_path,
                                        'fireplace_room/fireplace_room.obj'))

# + {"raw_mimetype": "text/restructuredtext", "active": ""}
# We can create primitives from the loaded mode using ``model` parameter for the :cpp:func:`lm::Scene::add_primitive` function.
# -

accel = lm.load_accel('accel', 'sahbvh')
scene = lm.load_scene('scene', 'default', accel=accel)
scene.add_primitive(camera=camera)
scene.add_primitive(model=model)
scene.build()

# + {"raw_mimetype": "text/restructuredtext", "active": ""}
# Executing the renderer will produce the following image.
# -

renderer = lm.load_renderer('renderer',
                            'raycast',
                            scene=scene,
                            output=film,
                            bg_color=[0, 0, 0])
renderer.render()
Ejemplo n.º 8
0
# %load_ext lightmetrica_jupyter
import lmscene

if not lm.Release:
    lm.attach_to_debugger()

lm.init()
if not lm.Release:
    lm.parallel.init('openmp', {'num_threads': 1})
lm.log.init('jupyter')
lm.progress.init('jupyter')
lm.info()

lm.comp.load_plugin(os.path.join(env.bin_path, 'accel_embree'))

accel = lm.load_accel('accel', 'embree', {})
scene = lm.load_scene('scene', 'default', {'accel': accel.loc()})
lmscene.load(scene, env.scene_path, 'fireplace_room')
scene.build()
film = lm.load_film('film_output', 'bitmap', {'w': 1920, 'h': 1080})

shared_renderer_params = {
    'scene': scene.loc(),
    'output': film.loc(),
    'image_sample_mode': 'image',
    'max_length': 20,
}

# ### w/ sample-based scheduler

renderer = lm.load_renderer(
idx = 0
for i in range(1, numTheta + 1):
    for j in range(1, numPhi + 1):
        p00 = (i - 1) * numPhi + j - 1
        p01 = (i - 1) * numPhi + j % numPhi
        p10 = i * numPhi + j - 1
        p11 = i * numPhi + j % numPhi
        if i > 1:
            fs[idx, :] = np.array([p10, p01, p00])
            idx += 1
        if i < numTheta:
            fs[idx, :] = np.array([p11, p01, p10])
            idx += 1

# + {"code_folding": []}
accel = lm.load_accel('accel', 'nanort')
scene = lm.load_scene('scene', 'default', accel=accel)
mesh = lm.load_mesh('mesh_sphere',
                    'raw',
                    ps=vs.flatten().tolist(),
                    ns=ns.flatten().tolist(),
                    ts=ts.flatten().tolist(),
                    fs={
                        'p': fs.flatten().tolist(),
                        't': fs.flatten().tolist(),
                        'n': fs.flatten().tolist()
                    })
camera = lm.load_camera('camera_main',
                        'pinhole',
                        position=[0, 0, 50],
                        center=[0, 0, 0],
def rmse(img1, img2):
    return np.sqrt(np.mean((img1 - img2) ** 2))


rmse_series = pd.Series(index=scene_names)
for scene_name in scene_names:
    print("Testing [scene='{}']".format(scene_name))
    
    # Load scene and render
    print('w/o serialization')
    lm.reset()
    lm.load_film('film_output', 'bitmap', {
        'w': 1920,
        'h': 1080
    })
    lm.load_accel('accel', 'sahbvh', {})
    scene = lm.load_scene('scene', 'default', {
        'accel': '$.assets.accel'
    })
    lmscene.load(scene, env.scene_path, scene_name)
    scene.build()
    lm.load_renderer('renderer', 'raycast', {
        'scene': '$.assets.scene',
        'output': '$.assets.film_output',
    })
    
    renderer = lm.get_renderer('$.assets.renderer')
    renderer.render()
    film = lm.get_film('$.assets.film_output')
    img_orig = np.copy(film.buffer())
    
Ejemplo n.º 11
0
 def load_scene():
     accel = lm.load_accel('accel', 'sahbvh', {})
     scene = lm.load_scene('scene', 'default', {
         'accel': accel.loc()
     })
     lmscene.load(scene, env.scene_path, scene_name)
Ejemplo n.º 12
0
build_time_df = pd.DataFrame(columns=accel_names, index=scene_names)
render_time_df = pd.DataFrame(columns=accel_names, index=scene_names)

film = lm.load_film('film_output', 'bitmap', {'w': 1920, 'h': 1080})

for scene_name in scene_names:
    # Create scene w/o accel
    scene = lm.load_scene('scene', 'default', {})
    lmscene.load(scene, env.scene_path, scene_name)
    renderer = lm.load_renderer('renderer', 'raycast', {
        'scene': scene.loc(),
        'output': film.loc()
    })

    for accel_name in accel_names:
        accel = lm.load_accel('accel', accel_name, {})
        scene.set_accel(accel.loc())

        def build():
            scene.build()

        build_time = timeit.timeit(stmt=build, number=1)
        build_time_df[accel_name][scene_name] = build_time

        def render():
            renderer.render()

        render_time = timeit.timeit(stmt=render, number=1)
        render_time_df[accel_name][scene_name] = render_time
# -