def load_model():
     lm.load_model(
         'model_obj', 'wavefrontobj', {
             'path':
             os.path.join(env.scene_path,
                          'fireplace_room/fireplace_room.obj')
         })
示例#2
0
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']
        })
示例#3
0
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
示例#4
0
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()})
示例#5
0
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()})
示例#6
0
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()})
示例#7
0
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())
示例#8
0
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()})
示例#9
0
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)
示例#11
0
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()})
示例#12
0
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()
    })
示例#13
0
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()})
示例#14
0
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()
    })
示例#15
0
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()})
示例#16
0
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
示例#17
0
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.
# -
示例#19
0
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')