def load_model(): lm.load_model( 'model_obj', 'wavefrontobj', { 'path': os.path.join(env.scene_path, 'fireplace_room/fireplace_room.obj') })
def bunny_base(scene, scene_path, **kwargs): camera = lm.load_camera( 'camera_main', 'pinhole', { 'position': [-0.191925, 2.961061, 4.171464], 'center': [-0.185709, 2.478091, 3.295850], 'up': [0, 1, 0], 'vfov': 28.841546, 'aspect': 16 / 9 }) scene.add_primitive({'camera': camera.loc()}) model = lm.load_model( 'model_obj', 'wavefrontobj', {'path': os.path.join(scene_path, 'bunny', 'bunny_with_planes.obj')}) mat_diffuse_white = lm.load_material('mat_diffuse_white', 'diffuse', {'Kd': [.8, .8, .8]}) # floor tex = lm.load_texture( 'tex_floor', 'bitmap', {'path': os.path.join(scene_path, 'bunny', 'default.png')}) mat_floor = lm.load_material('mat_floor', 'diffuse', {'mapKd': tex.loc()}) scene.add_primitive({ 'mesh': model.make_loc('mesh_2'), 'material': mat_floor.loc() }) # bunny if 'mat_knob' in kwargs: scene.add_primitive({ 'mesh': model.make_loc('mesh_1'), 'material': kwargs['mat_knob'] })
def cornell_double_huge(scene, scene_path): base_path = os.path.join(scene_path, 'custom') camera = lm.load_camera( 'camera1', 'pinhole', { 'position': [0, 1, 5], 'center': [0, 1, 0], 'up': [0, 1, 0], 'vfov': 43.001194, 'aspect': 16 / 9 }) model = lm.load_model( 'model_obj', 'wavefrontobj', {'path': os.path.join(base_path, 'doublebox_huge2.obj')}) scene.add_primitive(camera=camera) scene.add_primitive(model=model) # Portal mesh portal_mesh = lm.load_mesh('portal', 'wavefrontobj', path=os.path.join(base_path, 'portal_huge2.obj')) return portal_mesh
def cube(scene, scene_path): camera = lm.load_camera('camera_main', 'pinhole', { 'position': [2, 2, 2], 'center': [0, 0, 0], 'up': [0, 1, 0], 'vfov': 30 }) model = lm.load_model('model_obj', 'wavefrontobj', {'path': os.path.join(scene_path, 'cube/cube.obj')}) scene.add_primitive({'camera': camera.loc()}) scene.add_primitive({'model': model.loc()})
def plane_with_hole(scene): camera = lm.load_camera('camera_main', 'pinhole', { 'position': [0, 2, 5], 'center': [0, 0, 0], 'up': [0, 1, 0], 'vfov': 90 }) model = lm.load_model( 'model_obj', 'wavefrontobj', {'path': os.path.join('scene', 'plane_with_hole.obj')}) scene.add_primitive({'camera': camera.loc()}) scene.add_primitive({'model': model.loc()})
def cornell_box_sphere_reflect(scene): camera = lm.load_camera('camera_main', 'pinhole', { 'position': [0, 1, 5], 'center': [0, 1, 0], 'up': [0, 1, 0], 'vfov': 30 }) model = lm.load_model( 'model_obj', 'wavefrontobj', {'path': os.path.join('scene', 'cornell_box/CornellBox-Sphere2.obj')}) scene.add_primitive({'camera': camera.loc()}) scene.add_primitive({'model': model.loc()})
def single_plane_light(scene, scene_path): camera = lm.load_camera('camera_main', 'pinhole', position=[0, 0, 5], center=[0, 0, 0], up=[0, 1, 0], vfov=30, aspect=16 / 9) model = lm.load_model('model_obj', 'wavefrontobj', path=os.path.join(scene_path, 'single_plane_light.obj')) scene.add_primitive(camera=camera.loc()) scene.add_primitive(model=model.loc())
def cornell_box_glossy(scene, scene_path): camera = lm.load_camera('camera_main', 'pinhole', { 'position': [0, 1, 5], 'center': [0, 1, 0], 'up': [0, 1, 0], 'vfov': 30 }) model = lm.load_model( 'model_obj', 'wavefrontobj', { 'path': os.path.join('scene', 'cornell_box/CornellBox-Glossy.obj'), 'skip_specular_mat': True }) scene.add_primitive({'camera': camera.loc()}) scene.add_primitive({'model': model.loc()})
def fireplace_room(scene, scene_path): camera = lm.load_camera( 'camera_main', 'pinhole', { 'position': [5.101118, 1.083746, -2.756308], 'center': [4.167568, 1.078925, -2.397892], 'up': [0, 1, 0], 'vfov': 43.001194 }) model = lm.load_model('model_obj', 'wavefrontobj', { 'path': os.path.join(scene_path, 'fireplace_room/fireplace_room.obj') }) scene.add_primitive({'camera': camera.loc()}) scene.add_primitive({'model': model.loc()})
def cornell_double(scene): camera = lm.load_camera('camera1', 'pinhole', position=[0, 1, 5], center=[0, 1, 0], up=[0, 1, 0], vfov=43.001194, aspect=16 / 9) scene.add_primitive(camera=camera) model = lm.load_model('model', 'wavefrontobj', path=os.path.join('scene', 'custom', 'cornell_double.obj')) scene.add_primitive(model=model)
def cornell_box_empty_white(scene, scene_path): camera = lm.load_camera( 'camera_main', 'pinhole', { 'position': [0, 1, 5], 'center': [0, 1, 0], 'up': [0, 1, 0], 'vfov': 30, 'aspect': 16 / 9 }) model = lm.load_model('model_obj', 'wavefrontobj', { 'path': os.path.join(scene_path, 'cornell_box/CornellBox-Empty-White.obj') }) scene.add_primitive({'camera': camera.loc()}) scene.add_primitive({'model': model.loc()})
def sphere(scene, scene_path): camera = lm.load_camera( 'camera_main', 'pinhole', { 'position': [0, 2, 5], 'center': [0, 1, 0], 'up': [0, 1, 0], 'vfov': 30, 'aspect': 16 / 9 }) scene.add_primitive({'camera': camera.loc()}) model = lm.load_model('model_obj', 'wavefrontobj', {'path': os.path.join(scene_path, 'sphere.obj')}) mat_diffuse_white = lm.load_material('mat_diffuse_white', 'diffuse', {'Kd': [.8, .8, .8]}) # floor tex = lm.load_texture('tex_floor', 'bitmap', {'path': os.path.join(scene_path, 'default.png')}) mat_floor = lm.load_material('mat_floor', 'diffuse', {'mapKd': tex.loc()}) scene.add_primitive({ 'mesh': model.make_loc('mesh_1'), 'material': mat_floor.loc() }) # sphere # mat = lm.load_material('mat_ut', 'glass', { # 'Ni': 2 # }) mat = lm.load_material('mat_ut', 'mirror', {}) # mat = mat_diffuse_white # mat = lm.load_material('mat_ut', 'mask', {}) scene.add_primitive({ 'mesh': model.make_loc('mesh_3'), 'material': mat.loc() }) # Light source Ke = 10 mat_black = lm.load_material('mat_black', 'diffuse', {'Kd': [0, 0, 0]}) light = lm.load_light('light', 'area', { 'Ke': [Ke, Ke, Ke], 'mesh': model.make_loc('mesh_2') }) scene.add_primitive({ 'mesh': model.make_loc('mesh_2'), 'material': mat_black.loc(), 'light': light.loc() })
def single_plane_light_transformed(scene): camera = lm.load_camera( 'camera_main', 'pinhole', { 'position': [0, 0, 5], 'center': [0, 0, 0], 'up': [0, 1, 0], 'vfov': 30, 'aspect': 16 / 9 }) model = lm.load_model( 'model_obj', 'wavefrontobj', {'path': os.path.join('scene', 'single_plane_light.obj')}) scene.add_primitive({'camera': camera.loc()}) scene.add_transformed_primitive( lm.translate(np.array([0.0, 1.0, 0.0])) @ lm.rotate( lm.rad(90), np.array([1.0, 0.0, 0.0])), {'model': model.loc()})
def mitsuba_knob_with_area_light(scene, scene_path, **kwargs): mitsuba_knob_base(scene, scene_path, **kwargs) # Area light Ke = 10 model_light = lm.load_model( 'model_light', 'wavefrontobj', {'path': os.path.join(scene_path, 'mitsuba_knob', 'light.obj')}) mat_black = lm.load_material('mat_black', 'diffuse', {'Kd': [0, 0, 0]}) light = lm.load_light('light', 'area', { 'Ke': [Ke, Ke, Ke], 'mesh': model_light.make_loc('mesh_1') }) scene.add_primitive({ 'mesh': model_light.make_loc('mesh_1'), 'material': mat_black.loc(), 'light': light.loc() })
def cornell_box_sphere(scene, scene_path): """ Cornell box with specular spheres. """ camera = lm.load_camera( 'camera_main', 'pinhole', { 'position': [0, 1, 5], 'center': [0, 1, 0], 'up': [0, 1, 0], 'vfov': 30, 'aspect': 16 / 9 }) model = lm.load_model('model_obj', 'wavefrontobj', { 'path': os.path.join(scene_path, 'cornell_box/CornellBox-Sphere.obj') }) scene.add_primitive({'camera': camera.loc()}) scene.add_primitive({'model': model.loc()})
def portal_cube2(scene, scene_path): base_path = os.path.join(scene_path, 'portal_cube2') camera = lm.load_camera( 'camera_main', 'pinhole', { 'position': [1, 0, 0], 'center': [2, 0, 0], 'up': [0, 1, 0], 'vfov': 30, 'aspect': 16 / 9 }) model = lm.load_model('model_obj', 'wavefrontobj', {'path': os.path.join(base_path, 'portal_cube.obj')}) scene.add_primitive({'camera': camera.loc()}) scene.add_primitive({'model': model.loc()}) # Portal mesh portal_mesh = lm.load_mesh('portal', 'wavefrontobj', path=os.path.join(base_path, 'portal.obj')) return portal_mesh
def mitsuba_knob_base(scene, scene_path, **kwargs): # Camera camera = lm.load_camera( 'camera_main', 'pinhole', { 'position': [0, 4, 5], 'center': [0, 0, -1], 'up': [0, 1, 0], 'vfov': 30, 'aspect': 16 / 9 #'vfov': 100 }) scene.add_primitive({'camera': camera.loc()}) # Model model = lm.load_model( 'model_obj', 'wavefrontobj', {'path': os.path.join(scene_path, 'mitsuba_knob', 'mitsuba.obj')}) mat_diffuse_white = lm.load_material('mat_diffuse_white', 'diffuse', {'Kd': [.8, .8, .8]}) scene.add_primitive({ 'mesh': model.make_loc('mesh_4'), #'material': mat_diffuse_white.loc() 'material': model.make_loc('backdrop') }) if 'mat_knob' in kwargs: scene.add_primitive({ 'mesh': model.make_loc('mesh_5'), 'material': kwargs['mat_inside'] if 'mat_inside' in kwargs else mat_diffuse_white.loc() }) scene.add_primitive({ 'mesh': model.make_loc('mesh_6'), 'material': kwargs['mat_knob'] })
# + # Film for the rendered image film = lm.load_film('film', 'bitmap', w=1920, h=1080) # Pinhole camera camera = lm.load_camera('camera', 'pinhole', position=[5.101118, 1.083746, -2.756308], 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. # -
lm.init() lm.log.init('jupyter') lm.progress.init('jupyter') lm.info() camera = lm.load_camera('camera_main', 'pinhole', { 'position': [5.101118, 1.083746, -2.756308], 'center': [4.167568, 1.078925, -2.397892], 'up': [0,1,0], 'vfov': 43.001194 }) material = lm.load_material('obj_base_mat', 'diffuse', { 'Kd': [.8,.2,.2] }) model = lm.load_model('model_obj', 'wavefrontobj', { 'path': os.path.join(env.scene_path, 'fireplace_room/fireplace_room.obj'), 'base_material': material.loc() }) accel = lm.load_accel('accel', 'sahbvh', {}) scene = lm.load_scene('scene', 'default', { 'accel': accel.loc() }) scene.add_primitive({ 'camera': camera.loc() }) scene.add_primitive({ 'model': model.loc() }) scene.build() film = lm.load_film('film_output', 'bitmap', {'w': 1920, 'h': 1080}) renderer = lm.load_renderer('renderer', 'raycast', {
lm.init() lm.log.init('jupyter') lm.progress.init('jupyter') lm.info() camera = lm.load_camera('camera_main', 'pinhole', position=[5.101118, 1.083746, -2.756308], center=[4.167568, 1.078925, -2.397892], up=[0,1,0], vfov=43.001194, aspect=16/9) material = lm.load_material('obj_base_mat', 'diffuse', Kd=[.8,.2,.2]) model = lm.load_model('model_obj', 'wavefrontobj', path=os.path.join(env.scene_path, 'fireplace_room/fireplace_room.obj'), base_material=material) 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() film = lm.load_film('film_output', 'bitmap', w=1920, h=1080) renderer = lm.load_renderer('renderer', 'raycast', scene=scene, output=film) renderer.render() img = np.copy(film.buffer()) 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')