Exemple #1
0
def portal_box(scene, scene_path, **kwargs):
    mitsuba_knob_base(scene, scene_path, **kwargs)

    base_path = os.path.join(scene_path, 'portal_box')
    g = lm.load_asset_group('portal_box', 'default')

    # Camera
    # camera = g.load_camera('camera_main', 'pinhole',
    #     position=[1,1,1],
    #     #position=[10,10,10],
    #     center=[0,0,0],
    #     up=[0,1,0],
    #     #vfov=30,
    #     vfov=60,
    #     aspect=16/9)
    # scene.add_primitive(camera=camera.loc())

    # Cube
    mat = g.load_material('mat_white', 'diffuse', Kd=[.8, .8, .8])
    cube = g.load_mesh('cube',
                       'wavefrontobj',
                       path=os.path.join(base_path, 'cube.obj'))
    scene.add_primitive(mesh=cube, material=mat)

    # Light
    Le = 50
    light_env = g.load_light('light_env', 'envconst', Le=[Le, Le, Le])
    scene.add_primitive(light=light_env)

    # Portal mesh
    portal_mesh = g.load_mesh('portal',
                              'wavefrontobj',
                              path=os.path.join(base_path, 'portal.obj'))

    return portal_mesh
Exemple #2
0
def salle_de_bain_2(scene, scene_path, no_light=False):
    base_path = os.path.join(scene_path, 'salle_de_bain_0622_2')
    g = lm.load_asset_group('salle_de_bain', 'default')

    camera = g.load_camera('camera_main',
                           'pinhole',
                           position=[16.282997, 14.476411, 52.534241],
                           center=[15.891605, 14.432939, 51.615044],
                           up=[0, 1, 0],
                           vfov=27.278080,
                           aspect=16 / 9)

    model = g.load_model('model_obj',
                         'wavefrontobj',
                         path=os.path.join(base_path, 'salle_de_bain.obj'))
    scene.add_primitive(camera=camera)
    scene.add_primitive(model=model)

    # Light
    if not no_light:
        Le = 50
        light_env = g.load_light('light_env', 'envconst', Le=[Le, Le, Le])
        scene.add_primitive(light=light_env)

    # Portal mesh
    portal_mesh = g.load_mesh('portal',
                              'wavefrontobj',
                              path=os.path.join(base_path, 'portal.obj'))

    return portal_mesh
Exemple #3
0
def breakfast_room(scene, scene_path, no_light=False):
    base_path = os.path.join(scene_path, 'breakfast_room_0625')
    g = lm.load_asset_group('breakfast_room', 'default')

    camera = g.load_camera('camera_main',
                           'pinhole',
                           position=[-0.518201, 2.987403, 9.745724],
                           center=[-0.518201, 2.918664, 8.748089],
                           up=[0, 1, 0],
                           vfov=27.278080,
                           aspect=16 / 9)

    model = g.load_model('model_obj',
                         'wavefrontobj',
                         path=os.path.join(base_path, 'breakfast_room.obj'))
    scene.add_primitive(camera=camera)
    scene.add_primitive(model=model)

    # Light
    if not no_light:
        Le = 50
        light_env = g.load_light('light_env', 'envconst', Le=[Le, Le, Le])
        scene.add_primitive(light=light_env)

    # Portal mesh
    portal_mesh = g.load_mesh('portal',
                              'wavefrontobj',
                              path=os.path.join(base_path, 'portal.obj'))

    return portal_mesh
Exemple #4
0
def portal_box_dragon_2(scene, scene_path, no_light=False, **kwargs):
    base_path = os.path.join(scene_path, 'dragon_in_box')
    g = lm.load_asset_group('dragon', 'default')

    # Load dragon scene
    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)

    # Model
    model = g.load_model('model_obj',
                         'wavefrontobj',
                         path=os.path.join(base_path, 'dragon_with_plane.obj'))

    # Floor
    tex = lm.load_texture('tex_floor',
                          'bitmap',
                          path=os.path.join(base_path, 'default.png'))
    mat_floor = lm.load_material('mat_floor', 'diffuse', mapKd=tex)
    scene.add_primitive(mesh=model.make_loc('mesh_2'), material=mat_floor)

    # Dragon
    mat = lm.load_material('mat_ut', 'glossy', Ks=[.8, .8, .8], ax=0.2, ay=0.2)
    #mat_white = g.load_material('mat_white', 'diffuse', Kd=[.8,.8,.8])
    scene.add_primitive(mesh=model.make_loc('mesh_4'), material=mat)

    # Light
    if not no_light:
        Le = 1000
        light_env = g.load_light('light_env', 'envconst', Le=[Le, Le, Le])
        scene.add_primitive(light=light_env)

    # Cube
    mat = g.load_material('mat_white', 'diffuse', Kd=[.8, .8, .8])
    cube = g.load_mesh('cube',
                       'wavefrontobj',
                       path=os.path.join(base_path, 'cube.obj'))
    scene.add_primitive(mesh=cube, material=mat)

    # Lid
    lid = g.load_mesh('lid',
                      'wavefrontobj',
                      path=os.path.join(base_path, 'lid.obj'))
    scene.add_primitive(mesh=lid, material=mat)

    # Portal meshes
    portal_mesh = g.load_mesh('portal',
                              'wavefrontobj',
                              path=os.path.join(base_path, 'portal.obj'))
    portal_mesh_2 = g.load_mesh('portal2',
                                'wavefrontobj',
                                path=os.path.join(base_path, 'portal2.obj'))

    return [portal_mesh, portal_mesh_2]
Exemple #5
0
def veach_door(scene, scene_path):
    """Veach's door scene."""
    base_path = os.path.join(scene_path, 'veach_door', 'data')
    g = lm.load_asset_group('veach_door', 'default')

    # Camera
    camera = g.load_camera(
        'camera_main',
        'pinhole',
        position=[-71.39, 71.49, 205.3],
        center=[-71.1997, 71.4202, 204.321],
        #center=[-70, 71.4202, 204.321],
        up=[0.013401, 0.99756, -0.0685194],
        #vfov=25,
        vfov=30,
        aspect=16 / 9)
    scene.add_primitive(camera=camera.loc())

    # Materials
    def tex(name):
        return g.load_texture('tex_' + os.path.splitext(name)[0],
                              'bitmap',
                              path=os.path.join(base_path, name))

    mat_copper = g.load_material('mat_copper',
                                 'glossy',
                                 Ks=[.9, .7, .5],
                                 ax=0.8,
                                 ay=0.8)
    mat_wood1 = g.load_material('mat_wood1', 'diffuse', mapKd=tex('72cf.jpg'))
    mat_wood2 = g.load_material('mat_wood2', 'diffuse', mapKd=tex('72rdf.jpg'))
    mat_table_leg = g.load_material('mat_table_leg',
                                    'diffuse',
                                    Kd=[.65, .65, .47])
    mat_teapot1 = g.load_material('mat_teapot1',
                                  'glossy',
                                  Ks=[.8, .8, .8],
                                  ax=0.15,
                                  ay=0.15)
    mat_teapot2 = g.load_material('mat_teapot2',
                                  'diffuse',
                                  mapKd=tex('marble.jpg'))
    mat_glass = g.load_material('mat_glass', 'glass', Ni=1.5)
    mat_door_frame = g.load_material('mat_door_frame',
                                     'diffuse',
                                     Kd=[.3, .2, .1])
    mat_checker = g.load_material('mat_checker',
                                  'diffuse',
                                  mapKd=tex('checker.png'))
    mat_white = g.load_material('mat_white', 'diffuse', Kd=[.73, .73, .73])
    mat_black = g.load_material('mat_black', 'diffuse', Kd=[0, 0, 0])
    mat_picture_frame = g.load_material('mat_picture_frame',
                                        'diffuse',
                                        Kd=[.2, .1, .05])
    mat_picture_image = g.load_material('mat_picture_image',
                                        'diffuse',
                                        mapKd=tex('pic.jpg'))

    # Meshes
    def mesh(name):
        return g.load_mesh(name,
                           'wavefrontobj',
                           path=os.path.join(base_path, name + '.obj'))

    # Transform
    M = np.array([[1, 0, 0, 0], [0, 0, 1, 0], [0, -1, 0, 0],
                  [0, 0, 0, 1]]).astype(np.float)
    # Table
    scene.add_transformed_primitive(M, material=mat_wood2, mesh=mesh('table'))
    scene.add_transformed_primitive(M,
                                    material=mat_table_leg,
                                    mesh=mesh('table_leg1'))
    scene.add_transformed_primitive(M,
                                    material=mat_table_leg,
                                    mesh=mesh('table_leg2'))
    scene.add_transformed_primitive(M,
                                    material=mat_table_leg,
                                    mesh=mesh('table_leg3'))
    scene.add_transformed_primitive(M,
                                    material=mat_table_leg,
                                    mesh=mesh('table_leg4'))
    # Teapot
    scene.add_transformed_primitive(M,
                                    material=mat_teapot1,
                                    mesh=mesh('teapot1'))
    scene.add_transformed_primitive(M,
                                    material=mat_teapot2,
                                    mesh=mesh('teapot2'))
    scene.add_transformed_primitive(M,
                                    material=mat_glass,
                                    mesh=mesh('teapot3'))
    # Door frame
    scene.add_transformed_primitive(M,
                                    material=mat_door_frame,
                                    mesh=mesh('door_frame_left'))
    scene.add_transformed_primitive(M,
                                    material=mat_door_frame,
                                    mesh=mesh('door_frame_right'))
    scene.add_transformed_primitive(M,
                                    material=mat_door_frame,
                                    mesh=mesh('door_frame_top'))
    # Door
    scene.add_transformed_primitive(M, material=mat_wood1, mesh=mesh('door'))
    # Hinge
    scene.add_transformed_primitive(M,
                                    material=mat_copper,
                                    mesh=mesh('door_hinge1'))
    scene.add_transformed_primitive(M,
                                    material=mat_copper,
                                    mesh=mesh('door_hinge2'))
    scene.add_transformed_primitive(M,
                                    material=mat_copper,
                                    mesh=mesh('door_hinge3'))
    # Knob
    scene.add_transformed_primitive(M,
                                    material=mat_copper,
                                    mesh=mesh('door_knob'))
    # Floor
    scene.add_transformed_primitive(M,
                                    material=mat_checker,
                                    mesh=mesh('floor'))
    scene.add_transformed_primitive(M,
                                    material=mat_white,
                                    mesh=mesh('floor01'))
    # Picture
    scene.add_transformed_primitive(M,
                                    material=mat_picture_frame,
                                    mesh=mesh('picture_frame'))
    scene.add_transformed_primitive(M,
                                    material=mat_picture_image,
                                    mesh=mesh('picture_image'))
    # Walls
    scene.add_transformed_primitive(M, material=mat_white, mesh=mesh('walls'))
    # Lamp
    mesh_lamp = mesh('lamp')
    light_lamp = g.load_light('light_lamp',
                              'area',
                              mesh=mesh_lamp,
                              Ke=[1420, 1552, 1642])
    scene.add_transformed_primitive(M,
                                    material=mat_black,
                                    mesh=mesh_lamp,
                                    light=light_lamp)

    # portal_mesh = [
    #     [113.718,-6.07255,-54.6317],
    #     [130.498,-6.07256,-73.566],
    #     [113.718,125.807,-54.6317]
    # ]
    # Portal mesh
    portal_mesh = g.load_mesh('portal',
                              'wavefrontobj',
                              path=os.path.join(scene_path, 'veach_door',
                                                'portal.obj'))

    return portal_mesh
accel = lm.load_accel('accel', 'sahbvh', {})
scene = lm.load_scene('scene', 'default', {
    'accel': accel.loc()
})

lm.print_asset_tree()

# Clear the internal state
lm.reset()
lm.print_asset_tree()

# ### Asset group
#
# *Asset group* is a special type of asset that can hold multiple instance of assets. By means of the asset group, we can hierarchcally manage the assets. Asset group can be created by ``lm.load_asset_group()`` function.

g = lm.load_asset_group('fireplace_room', 'default', {})

# An another asset can be loaded as a child of the asset group by calling ``lm.AssetGroup.load_*()`` member functions. The arguments are same as ``lm.load_*()`` functions. Note that the locator of the asset includes the id of the group.

camera = g.load_camera('camera1', 'pinhole', {
    'position': [5.101118, 1.083746, -2.756308],
    'center': [4.167568, 1.078925, -2.397892],
    'up': [0,1,0],
    'vfov': 43.001194
})
model = g.load_model('model', 'wavefrontobj', {
    'path': os.path.join(env.scene_path, 'fireplace_room/fireplace_room.obj')
})
accel = g.load_accel('accel', 'sahbvh', {})
scene = g.load_scene('scene', 'default', {
    'accel': accel.loc()