示例#1
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
示例#2
0
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()
    })
示例#3
0
 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()
             }
         })
示例#4
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
示例#5
0
# 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]})