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
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
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
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]
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()