def build_and_render(scene): lm.reset() lmscene.load(ft.env.scene_path, scene) lm.build('accel::nanort', {}) lm.asset('film_output', 'film::bitmap', {'w': 1920, 'h': 1080}) lm.render('renderer::raycast', {'output': lm.asset('film_output')}) return np.copy(lm.buffer(lm.asset('film_output')))
def render_and_visualize(): lm.build('accel::nanort', {}) lm.asset('film_output', 'film::bitmap', {'w': 1920, 'h': 1080}) lm.render( 'renderer::raycast', { 'output': lm.asset('film_output'), 'visualize_normal': True, 'bg_color': [1, 1, 1] }) img = np.copy(lm.buffer(lm.asset('film_output'))) f = plt.figure(figsize=(15, 15)) ax = f.add_subplot(111) ax.imshow(np.clip(np.power(img, 1 / 2.2), 0, 1), origin='lower') plt.show()
lm.info() scenes = lmscene.scenes_small() rmse_series = pd.Series(index=scenes) for scene in scenes: print("Testing [scene='{}']".format(scene)) lm.reset() lm.asset('film_output', 'film::bitmap', {'w': 1920, 'h': 1080}) # Load scene and render lmscene.load(ft.env.scene_path, scene) lm.build('accel::sahbvh', {}) lm.render('renderer::raycast', {'output': lm.asset('film_output')}) img_orig = np.copy(lm.buffer(lm.asset('film_output'))) # Serialize, reset, deserialize, and render lm.serialize('lm.serialized') lm.reset() lm.deserialize('lm.serialized') lm.render('renderer::raycast', {'output': lm.asset('film_output')}) img_serial = np.copy(lm.buffer(lm.asset('film_output'))) # Compare two images rmse = ft.rmse(img_orig, img_serial) rmse_series[scene] = rmse rmse_series
def build_and_render(accel): lm.build(accel, {}) lm.asset('film_output', 'film::bitmap', {'w': 1920, 'h': 1080}) lm.render('renderer::raycast', {'output': lm.asset('film_output')}) return np.copy(lm.buffer(lm.asset('film_output')))
# Pinhole camera lm.asset( 'camera1', 'camera::pinhole', { 'position': [5.101118, 1.083746, -2.756308], 'center': [4.167568, 1.078925, -2.397892], 'up': [0, 1, 0], 'vfov': 43.001194 }) # OBJ model lm.asset('obj1', 'model::wavefrontobj', { 'path': os.path.join(ft.env.scene_path, 'fireplace_room/fireplace_room.obj') }) # Camera lm.primitive(lm.identity(), {'camera': lm.asset('camera1')}) # Create primitives from model asset lm.primitive(lm.identity(), {'model': lm.asset('obj1')}) # - lm.build('accel::sahbvh', {}) lm.render('renderer::ao', {'output': lm.asset('film1'), 'spp': 10}) img = np.copy(lm.buffer(lm.asset('film1'))) f = plt.figure(figsize=(15, 15)) ax = f.add_subplot(111) ax.imshow(np.clip(np.power(img, 1 / 2.2), 0, 1), origin='lower') plt.show()
for i in range(w * h): process(i) lm.progress.end() lm.init('user::default', {}) lm.parallel.init('parallel::openmp', {'numThreads': 1}) lm.log.init('logger::jupyter', {}) lm.progress.init('progress::jupyter', {}) lm.info() # Scene lm.asset('film_output', 'film::bitmap', {'w': 640, 'h': 360}) lmscene.load(ft.env.scene_path, 'fireplace_room') lm.build('accel::sahbvh', {}) lm.render('renderer::ao', {'output': lm.asset('film_output'), 'spp': 5}) img = np.flip(np.copy(lm.buffer(lm.asset('film_output'))), axis=0) f = plt.figure(figsize=(15, 15)) ax = f.add_subplot(111) ax.imshow(np.clip(np.power(img, 1 / 2.2), 0, 1)) plt.show()
# ### Master process lm.init() lm.log.init('logger::jupyter', {}) lm.progress.init('progress::jupyter', {}) lm.dist.init('dist::master::default', {'port': 5000}) lm.dist.printWorkerInfo() lmscene.load(ft.env.scene_path, 'fireplace_room') lm.build('accel::sahbvh', {}) lm.asset('film_output', 'film::bitmap', {'w': 1920, 'h': 1080}) lm.renderer('renderer::raycast', {'output': lm.asset('film_output')}) lm.dist.allowWorkerConnection(False) lm.dist.sync() lm.render() lm.dist.gatherFilm(lm.asset('film_output')) lm.dist.allowWorkerConnection(True) img = np.copy(lm.buffer(lm.asset('film_output'))) f = plt.figure(figsize=(15, 15)) ax = f.add_subplot(111) ax.imshow(np.clip(np.power(img, 1 / 2.2), 0, 1), origin='lower') plt.show() # Termination of the worker process is necessary for Windows # because fork() is not supported in Windows. # cf. https://docs.python.org/3/library/multiprocessing.html#contexts-and-start-methods pool.terminate() pool.join()
def update(self, processed): self.ax.clear() img = np.flip(lm.buffer(self.film), axis=0) self.ax.imshow(np.clip(np.power(img, 1 / 2.2), 0, 1)) self.fig.canvas.draw()
'path': os.path.join(ft.env.scene_path, 'fireplace_room/fireplace_room.obj'), 'base_material': lm.asset('obj_base_mat') }) lm.primitive(lm.identity(), { 'camera': lm.asset('camera_main') }) lm.primitive(lm.identity(), { 'model': lm.asset('model_obj') }) lm.build('accel::sahbvh', {}) lm.asset('film_output', 'film::bitmap', {'w': 1920, 'h': 1080}) lm.render('renderer::raycast', { 'output': lm.asset('film_output') }) img = lm.buffer(lm.asset('film_output')) f = plt.figure(figsize=(10,10)) ax = f.add_subplot(111) ax.imshow(np.clip(np.power(img,1/2.2),0,1), origin='lower') ax.set_title('orig') # Replace `obj_base_mat` with different color # Note that this is not trivial, because `model::wavefrontobj` # already holds a reference to the original material. lm.asset('obj_base_mat', 'material::diffuse', { 'Kd': [.2,.8,.2] }) lm.asset('film_output', 'film::bitmap', {'w': 1920, 'h': 1080}) lm.render('renderer::raycast', { 'output': lm.asset('film_output') })