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 plane_emitter(scene, scene_path): """ A scene containing only a single area light. The scene is useful to test the most simpelst configuration. """ camera = lm.load_camera( 'camera', 'pinhole', { 'position': [0, 0, 5], 'center': [0, 0, 0], 'up': [0, 1, 0], 'vfov': 30, 'aspect': 16 / 9 }) mesh = lm.load_mesh( 'mesh', 'raw', { 'ps': [-1, -1, -1, 1, -1, -1, 1, 1, -1, -1, 1, -1], 'ns': [0, 0, 1], 'ts': [0, 0, 1, 0, 1, 1, 0, 1], 'fs': { 'p': [0, 1, 2, 0, 2, 3], 'n': [0, 0, 0, 0, 0, 0], 't': [0, 1, 2, 0, 2, 3] } }) material = lm.load_material('mat_black', 'diffuse', {'Kd': [0, 0, 0]}) light = lm.load_light('light', 'area', { 'Ke': [1, 1, 1], 'mesh': mesh.loc() }) scene.add_primitive({'camera': camera.loc()}) scene.add_primitive({ 'mesh': mesh.loc(), 'material': material.loc(), 'light': light.loc() })
def create_lm_raw_mesh(name, ps, fs, n): """Create mesh::raw asset from position and faces.""" return lm.load_mesh( name, 'raw', { 'ps': ps.flatten().tolist(), 'ns': n, 'ts': [0, 0], 'fs': { 'p': fs.flatten().tolist(), 'n': np.zeros(fs.size).tolist(), 't': np.zeros(fs.size).tolist() } })
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
# Pinhole camera camera = lm.load_camera('camera', 'pinhole', position=[0, 0, 5], center=[0, 0, 0], up=[0, 1, 0], vfov=30, aspect=16 / 9) # Load mesh with raw vertex data mesh = lm.load_mesh('mesh', 'raw', ps=[-1, -1, -1, 1, -1, -1, 1, 1, -1, -1, 1, -1], ns=[0, 0, 1], ts=[0, 0, 1, 0, 1, 1, 0, 1], fs={ 'p': [0, 1, 2, 0, 2, 3], 'n': [0, 0, 0, 0, 0, 0], 't': [0, 1, 2, 0, 2, 3] }) # Material material = lm.load_material('material', 'diffuse', Kd=[1, 1, 1]) # + {"raw_mimetype": "text/restructuredtext", "active": ""} # Next we will create a `scene` asset. The scene asset can also be created :cpp:func:`load_scene` function. Here, we will create ``scene::default`` asset. # A scene internally `uses acceleration structure` for ray-scene intersections, which can be specified by ``accel`` parameter. # - accel = lm.load_accel('accel', 'sahbvh') scene = lm.load_scene('scene', 'default', accel=accel)
p11 = i * numPhi + j % numPhi if i > 1: fs[idx, :] = np.array([p10, p01, p00]) idx += 1 if i < numTheta: fs[idx, :] = np.array([p11, p01, p10]) idx += 1 # + {"code_folding": []} accel = lm.load_accel('accel', 'nanort') scene = lm.load_scene('scene', 'default', accel=accel) mesh = lm.load_mesh('mesh_sphere', 'raw', ps=vs.flatten().tolist(), ns=ns.flatten().tolist(), ts=ts.flatten().tolist(), fs={ 'p': fs.flatten().tolist(), 't': fs.flatten().tolist(), 'n': fs.flatten().tolist() }) camera = lm.load_camera('camera_main', 'pinhole', position=[0, 0, 50], center=[0, 0, 0], up=[0, 1, 0], vfov=30, aspect=16 / 9) material = lm.load_material('material_white', 'diffuse', Kd=[1, 1, 1]) film = lm.load_film('film_output', 'bitmap', w=1920, h=1080) renderer = lm.load_renderer('renderer', 'raycast',
# This is correct lm.load_camera('camera1', 'pinhole', { # Parameter type is wrong. position must be an array. 'position': [0,0,5], 'center': [0,0,0], 'up': [0,1,0], 'vfov': 30 }) # ### Missing reference lm.load_mesh('mesh1', 'raw', { 'ps': [-1,-1,-1,1,-1,-1,1,1,-1,-1,1,-1], 'ns': [0,0,1], 'ts': [0,0,1,0,1,1,0,1], 'fs': { 'p': [0,1,2,0,2,3], 'n': [0,0,0,0,0,0], 't': [0,1,2,0,2,3] } }) accel = lm.load_accel('accel', 'sahbvh', {}) scene = lm.load_scene('scene', 'default', { 'accel': accel.loc() }) try: # material1 is undefined scene.add_primitive({ 'mesh': '$.assets.mesh1', 'material': '$.assets.material1'
p10 = i * numPhi + j - 1 p11 = i * numPhi + j % numPhi if i > 1: fs[idx, :] = np.array([p10, p01, p00]) idx += 1 if i < numTheta: fs[idx, :] = np.array([p11, p01, p10]) idx += 1 # + {"code_folding": []} mesh = lm.load_mesh( 'mesh_sphere', 'raw', { 'ps': vs.flatten().tolist(), 'ns': ns.flatten().tolist(), 'ts': ts.flatten().tolist(), 'fs': { 'p': fs.flatten().tolist(), 't': fs.flatten().tolist(), 'n': fs.flatten().tolist() } }) camera = lm.load_camera('camera_main', 'pinhole', { 'position': [0, 0, 50], 'center': [0, 0, 0], 'up': [0, 1, 0], 'vfov': 30 }) material = lm.load_material('material_white', 'diffuse', {'Kd': [1, 1, 1]})