Ejemplo n.º 1
0
def vokselia_spawn(scene_path):
    lm.asset('camera_main', 'camera::pinhole', {
        'position': [1.525444, 0.983225, 0.731648],
        'center': [0.780862, 0.377208, 0.451751],
        'up': [0,1,0],
        'vfov': 49.857803
    })
    lm.asset('model_obj', 'model::wavefrontobj', {
        'path': os.path.join(scene_path, 'vokselia_spawn/vokselia_spawn.obj')
    })
    lm.primitive(lm.identity(), {
        'camera': lm.asset('camera_main')
    })
    lm.primitive(lm.identity(), {
        'model': lm.asset('model_obj')
    })
Ejemplo n.º 2
0
def breakfast_room(scene_path):
    lm.asset('camera_main', 'camera::pinhole', {
        'position': [0.195303, 2.751188, 7.619322],
        'center': [0.139881, 2.681201, 6.623315],
        'up': [0,1,0],
        'vfov': 39.384486
    })
    lm.asset('model_obj', 'model::wavefrontobj', {
        'path': os.path.join(scene_path, 'breakfast_room/breakfast_room.obj')
    })
    lm.primitive(lm.identity(), {
        'camera': lm.asset('camera_main')
    })
    lm.primitive(lm.identity(), {
        'model': lm.asset('model_obj')
    })
Ejemplo n.º 3
0
def cornell_box_sphere(scene_path):
    lm.asset('camera_main', 'camera::pinhole', {
        'position': [0,1,5],
        'center': [0,1,0],
        'up': [0,1,0],
        'vfov': 30
    })
    lm.asset('model_obj', 'model::wavefrontobj', {
        'path': os.path.join(scene_path, 'cornell_box/CornellBox-Sphere.obj')
    })
    lm.primitive(lm.identity(), {
        'camera': lm.asset('camera_main')
    })
    lm.primitive(lm.identity(), {
        'model': lm.asset('model_obj')
    })
Ejemplo n.º 4
0
def bedroom(scene_path):
    lm.asset('camera_main', 'camera::pinhole', {
        'position': [22.634083, -19.868534, 24.155586],
        'center': [22.027370, -19.116102, 23.899178],
        'up': [0,0,1],
        'vfov': 57.978600
    })
    lm.asset('model_obj', 'model::wavefrontobj', {
        'path': os.path.join(scene_path, 'bedroom/iscv2.obj')
    })
    lm.primitive(lm.identity(), {
        'camera': lm.asset('camera_main')
    })
    lm.primitive(lm.identity(), {
        'model': lm.asset('model_obj')
    })
Ejemplo n.º 5
0
def powerplant(scene_path):
    lm.asset('camera_main', 'camera::pinhole', {
        'position': [-200000, 200000, 200000],
        'center': [0, 0, 0],
        'up': [0,1,0],
        'vfov': 30
    })
    lm.asset('model_obj', 'model::wavefrontobj', {
        'path': os.path.join(scene_path, 'powerplant/powerplant.obj')
    })
    lm.primitive(lm.identity(), {
        'camera': lm.asset('camera_main')
    })
    lm.primitive(lm.identity(), {
        'model': lm.asset('model_obj')
    })
Ejemplo n.º 6
0
def fireplace_room(scene_path):
    lm.asset('camera_main', 'camera::pinhole', {
        'position': [5.101118, 1.083746, -2.756308],
        'center': [4.167568, 1.078925, -2.397892],
        'up': [0,1,0],
        'vfov': 43.001194
    })
    lm.asset('model_obj', 'model::wavefrontobj', {
        'path': os.path.join(scene_path, 'fireplace_room/fireplace_room.obj')
    })
    lm.primitive(lm.identity(), {
        'camera': lm.asset('camera_main')
    })
    lm.primitive(lm.identity(), {
        'model': lm.asset('model_obj')
    })
Ejemplo n.º 7
0
def cube(scene_path):
    lm.asset('camera_main', 'camera::pinhole', {
        'position': [2, 2, 2],
        'center': [0, 0, 0],
        'up': [0,1,0],
        'vfov': 30
    })
    lm.asset('model_obj', 'model::wavefrontobj', {
        'path': os.path.join(scene_path, 'cube/cube.obj')
    })
    lm.primitive(lm.identity(), {
        'camera': lm.asset('camera_main')
    })
    lm.primitive(lm.identity(), {
        'model': lm.asset('model_obj')
    })
Ejemplo n.º 8
0
def conference(scene_path):
    lm.asset('camera_main', 'camera::pinhole', {
        'position': [926.391602, 329.094299, 141.714554],
        'center': [925.628784, 328.858490, 141.112488],
        'up': [0,1,0],
        'vfov': 50.717898
    })
    lm.asset('model_obj', 'model::wavefrontobj', {
        'path': os.path.join(scene_path, 'conference/conference.obj')
    })
    lm.primitive(lm.identity(), {
        'camera': lm.asset('camera_main')
    })
    lm.primitive(lm.identity(), {
        'model': lm.asset('model_obj')
    })
Ejemplo n.º 9
0
def cloud(scene_path):
    lm.asset('camera_main', 'camera::pinhole', {
        'position': [22.288721, 32.486145, 85.542023],
        'center': [22.218456, 32.084743, 84.628822],
        'up': [0,1,0],
        'vfov': 53.023230
    })
    lm.asset('model_obj', 'model::wavefrontobj', {
        'path': os.path.join(scene_path, 'cloud/altostratus00.obj')
    })
    lm.primitive(lm.identity(), {
        'camera': lm.asset('camera_main')
    })
    lm.primitive(lm.identity(), {
        'model': lm.asset('model_obj')
    })
Ejemplo n.º 10
0
def bunny(scene_path):
    lm.asset('camera_main', 'camera::pinhole', {
        'position': [-0.191925, 2.961061, 4.171464],
        'center': [-0.185709, 2.478091, 3.295850],
        'up': [0,1,0],
        'vfov': 28.841546
    })
    lm.asset('model_obj', 'model::wavefrontobj', {
        'path': os.path.join(scene_path, 'bunny/bunny.obj')
    })
    lm.primitive(lm.identity(), {
        'camera': lm.asset('camera_main')
    })
    lm.primitive(lm.identity(), {
        'model': lm.asset('model_obj')
    })
Ejemplo n.º 11
0
def buddha(scene_path):
    lm.asset('camera_main', 'camera::pinhole', {
        'position': [0.027255, 0.941126, -2.217943],
        'center': [0.001645, 0.631268, -1.267505],
        'up': [0,1,0],
        'vfov': 19.297509
    })
    lm.asset('model_obj', 'model::wavefrontobj', {
        'path': os.path.join(scene_path, 'buddha/buddha.obj')
    })
    lm.primitive(lm.identity(), {
        'camera': lm.asset('camera_main')
    })
    lm.primitive(lm.identity(), {
        'model': lm.asset('model_obj')
    })
def scene_setup():
    lm.reset()
    lm.asset(
        'mesh_sphere', 'mesh::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()
            }
        })
    lm.asset('camera_main', 'camera::pinhole', {
        'position': [0, 0, 50],
        'center': [0, 0, 0],
        'up': [0, 1, 0],
        'vfov': 30
    })
    lm.asset('material_white', 'material::diffuse', {'Kd': [1, 1, 1]})
    lm.primitive(lm.identity(), {'camera': lm.asset('camera_main')})
# Pinhole camera
lm.asset(
    'camera1', 'camera::pinhole', {
        'position': [5.101118, 1.083746, -2.756308],
        'center': [4.167568, 1.078925, -2.397892],
        'up': [0, 1, 0],
        'vfov': 43.001194
    })

# OBJ model
lm.asset('obj1', 'model::wavefrontobj', {
    'path':
    os.path.join(ft.env.scene_path, 'fireplace_room/fireplace_room.obj')
})

# Camera
lm.primitive(lm.identity(), {'camera': lm.asset('camera1')})

# Create primitives from model asset
lm.primitive(lm.identity(), {'model': lm.asset('obj1')})
# -

lm.build('accel::sahbvh', {})
lm.render('renderer::ao', {'output': lm.asset('film1'), 'spp': 10})

img = np.copy(lm.buffer(lm.asset('film1')))
f = plt.figure(figsize=(15, 15))
ax = f.add_subplot(111)
ax.imshow(np.clip(np.power(img, 1 / 2.2), 0, 1), origin='lower')
plt.show()
Ejemplo n.º 14
0
        }
    })

# Material
lm.asset('material1', 'material::diffuse', {'Kd': [1, 1, 1]})

# + {"raw_mimetype": "text/restructuredtext", "active": ""}
# The scene of Lightmetrica is defined by a set of ``primitives``. A primitive specifies an object inside the scene by associating geometries and materials with transformation. We can define a primitive by :cpp:func:`lm::primitive` function where we specifies transformation matrix and associating assets as arguments.
# In this example we define two pritimives; one for camera and the other for quad mesh with diffuse material. Transformation is given by 4x4 matrix. Here we specified identify matrix meaning no transformation.
#
# .. note::
#     Specifically, the scene is represented by a *scene graph*, a directed acyclic graph representing spatial structure and attributes of the scene. Each node of the scene graph describes either a primitive or a pritmive group. We provide a set of APIs to manipulate the structure of scene graph for advanced usage like instancing. For detail, please refer to TODO.

# +
# Camera
lm.primitive(lm.identity(), {'camera': lm.asset('camera1')})

# Mesh
lm.primitive(lm.identity(), {
    'mesh': lm.asset('mesh1'),
    'material': lm.asset('material1')
})

# + {"raw_mimetype": "text/restructuredtext", "active": ""}
# This example used ``renderer::raycast`` for rendering.
# This renderer internally uses acceleration structure for ray-scene intersections.
# The acceleration structure can be given by :cpp:func:`lm::build` function. In this example we used ``accel::sahbvh``.
# -

lm.build('accel::sahbvh', {})
lm.render('renderer::raycast', {
# Scene
lm.asset(
    'camera_main', 'camera::pinhole', {
        'position': [5.101118, 1.083746, -2.756308],
        'center': [4.167568, 1.078925, -2.397892],
        'up': [0, 1, 0],
        'vfov': 43.001194
    })
lm.asset(
    'model_obj', 'model::wavefrontobj', {
        'path':
        os.path.join(ft.env.scene_path, 'fireplace_room/fireplace_room.obj'),
        'base_material':
        lm.asset('mat_vis_normal')
    })
lm.primitive(lm.identity(), {'camera': lm.asset('camera_main')})
lm.primitive(lm.identity(), {'model': lm.asset('model_obj')})
# -

lm.build('accel::sahbvh', {})

# +
# Render
lm.asset('film_output', 'film::bitmap', {'w': 640, 'h': 360})
lm.render('renderer::raycast', {'output': lm.asset('film_output')})
img = np.copy(lm.buffer(lm.asset('film_output')))

# Visualize
f = plt.figure(figsize=(15, 15))
ax = f.add_subplot(111)
ax.imshow(np.clip(np.power(img, 1 / 2.2), 0, 1), origin='lower')