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())
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)
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()
# %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())
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)
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 # -