Rendering all scenesΒΆ

This test checks scene loading and basic rendering for all test scenes.

[1]:
%load_ext autoreload
%autoreload 2
[2]:
import os
import imageio
import pandas as pd
import numpy as np
%matplotlib inline
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable
import lmfunctest as ft
import lmscene
import lightmetrica as lm
[3]:
os.getpid()
[3]:
435
[4]:
%load_ext lightmetrica_jupyter
[5]:
lm.init('user::default', {})
lm.parallel.init('parallel::openmp', {
    'numThreads': -1
})
lm.log.init('logger::jupyter', {})
lm.info()
[I|0.000|114@user  ] Lightmetrica -- Version 3.0.0 (rev. fe30e7c) Linux x64
[6]:
lm.comp.loadPlugin(os.path.join(ft.env.bin_path, 'accel_embree'))
lm.comp.loadPlugin(os.path.join(ft.env.bin_path, 'objloader_tinyobjloader'))
[I|0.019|179@compon] Loading plugin [name='accel_embree']
[I|0.021|197@compon]   Successfully loaded
[I|0.021|179@compon] Loading plugin [name='objloader_tinyobjloader']
[I|0.022|197@compon]   Successfully loaded
[6]:
True
[7]:
lm.objloader.init('objloader::tinyobjloader', {})
[8]:
scenes = lmscene.scenes_small()
[9]:
for scene in scenes:
    lm.reset()

    # Film
    lm.asset('film_output', 'film::bitmap', {
        'w': 1920,
        'h': 1080
    })

    # Render
    lmscene.load(ft.env.scene_path, scene)
    lm.build('accel::embree', {})
    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')
    ax.set_title(scene)
    plt.show()
[I|0.079|48@assets ] Loading asset [name='film_output']
[I|0.165|48@assets ] Loading asset [name='camera_main']
[I|0.166|48@assets ] Loading asset [name='model_obj']
[I|0.439|44@texture]   Loading texture [path='wood.ppm']
[I|0.547|44@texture]   Loading texture [path='leaf.ppm']
[I|0.550|44@texture]   Loading texture [path='picture8.ppm']
[I|0.588|44@texture]   Loading texture [path='wood5.ppm']
[I|0.653|246@scene ] Building acceleration structure [name='accel::embree']
[I|0.655|68@accel_e]   Flattening scene
[I|0.661|102@accel_]   Building
[I|0.719|151@user  ] Starting render [name='renderer::raycast']
[I|1.220|125@progre] Processing [iter=669900/2073600, progress=32.3%, ETA=1.0s]
[I|1.721|125@progre] Processing [iter=1431500/2073600, progress=69.0%, ETA=0.4s]
[I|2.135|132@progre] Processing [completed]
../_images/executed_functest_func_render_all_9_1.png
[I|3.264|48@assets ] Loading asset [name='film_output']
[I|3.352|48@assets ] Loading asset [name='camera_main']
[I|3.352|48@assets ] Loading asset [name='model_obj']
[W|3.354|43@objload]   Both `d` and `Tr` parameters defined for "light". Use the value of `d` for dissolve (line 76 in .mtl.)

[I|3.355|246@scene ] Building acceleration structure [name='accel::embree']
[I|3.355|68@accel_e]   Flattening scene
[I|3.355|102@accel_]   Building
[I|3.356|151@user  ] Starting render [name='renderer::raycast']
[I|3.858|125@progre] Processing [iter=1031700/2073600, progress=49.8%, ETA=0.5s]
[I|4.302|132@progre] Processing [completed]
../_images/executed_functest_func_render_all_9_3.png
[I|5.122|48@assets ] Loading asset [name='film_output']
[I|5.210|48@assets ] Loading asset [name='camera_main']
[I|5.210|48@assets ] Loading asset [name='model_obj']
[I|5.210|44@texture]   Loading texture [path='default.png']
[I|5.224|246@scene ] Building acceleration structure [name='accel::embree']
[I|5.224|68@accel_e]   Flattening scene
[I|5.224|102@accel_]   Building
[I|5.224|151@user  ] Starting render [name='renderer::raycast']
[I|5.726|125@progre] Processing [iter=1068900/2073600, progress=51.5%, ETA=0.5s]
[I|6.197|132@progre] Processing [completed]
../_images/executed_functest_func_render_all_9_5.png