{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Performance testing of OBJ loader" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import os\n", "import imageio\n", "import pandas as pd\n", "import numpy as np\n", "import timeit\n", "import lmfunctest as ft\n", "import lmscene\n", "import lightmetrica as lm" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "%load_ext lightmetrica_jupyter" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[I|0.000|114@user ] Lightmetrica -- Version 3.0.0 (rev. fe30e7c) Linux x64\n" ] } ], "source": [ "lm.init('user::default', {})\n", "lm.parallel.init('parallel::openmp', {\n", " 'numThreads': -1\n", "})\n", "lm.log.init('logger::jupyter', {})\n", "lm.info()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[I|0.020|179@compon] Loading plugin [name='objloader_tinyobjloader']\n", "[I|0.020|197@compon] Successfully loaded\n" ] }, { "data": { "text/plain": [ "True" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lm.comp.loadPlugin(os.path.join(ft.env.bin_path, 'objloader_tinyobjloader'))" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "objloaders = ['objloader::simple', 'objloader::tinyobjloader']\n", "scenes = lmscene.scenes_small()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[I|0.068|48@assets ] Loading asset [name='camera_main']\n", "[I|0.068|48@assets ] Loading asset [name='model_obj']\n", "[I|0.068|29@objload] Loading OBJ file [path='fireplace_room.obj']\n", "[I|0.068|169@objloa] Loading MTL file [path='fireplace_room.mtl']\n", "[I|0.068|44@texture] Loading texture [path='wood.ppm']\n", "[I|0.174|44@texture] Loading texture [path='leaf.ppm']\n", "[I|0.178|44@texture] Loading texture [path='picture8.ppm']\n", "[I|0.219|44@texture] Loading texture [path='wood5.ppm']\n", "[I|0.660|48@assets ] Loading asset [name='camera_main']\n", "[I|0.661|48@assets ] Loading asset [name='model_obj']\n", "[I|0.922|44@texture] Loading texture [path='wood.ppm']\n", "[I|1.027|44@texture] Loading texture [path='leaf.ppm']\n", "[I|1.030|44@texture] Loading texture [path='picture8.ppm']\n", "[I|1.066|44@texture] Loading texture [path='wood5.ppm']\n", "[I|1.131|48@assets ] Loading asset [name='camera_main']\n", "[I|1.132|48@assets ] Loading asset [name='model_obj']\n", "[I|1.132|29@objload] Loading OBJ file [path='CornellBox-Sphere.obj']\n", "[I|1.132|169@objloa] Loading MTL file [path='CornellBox-Sphere.mtl']\n", "[I|1.135|48@assets ] Loading asset [name='camera_main']\n", "[I|1.135|48@assets ] Loading asset [name='model_obj']\n", "[W|1.138|43@objload] Both `d` and `Tr` parameters defined for \"light\". Use the value of `d` for dissolve (line 76 in .mtl.)\n", "\n", "[I|1.139|48@assets ] Loading asset [name='camera_main']\n", "[I|1.139|48@assets ] Loading asset [name='model_obj']\n", "[I|1.139|29@objload] Loading OBJ file [path='cube.obj']\n", "[I|1.139|169@objloa] Loading MTL file [path='default.mtl']\n", "[I|1.139|44@texture] Loading texture [path='default.png']\n", "[I|1.156|48@assets ] Loading asset [name='camera_main']\n", "[I|1.156|48@assets ] Loading asset [name='model_obj']\n", "[I|1.156|44@texture] Loading texture [path='default.png']\n" ] } ], "source": [ "loading_time_df = pd.DataFrame(columns=objloaders, index=scenes)\n", "for scene in scenes:\n", " # Check consistency with other loaders\n", " for objloader in objloaders:\n", " # Load the scene with selected obj loader\n", " lm.objloader.init(objloader, {})\n", " lm.reset()\n", " def load_scene():\n", " lmscene.load(ft.env.scene_path, scene)\n", " loading_time = timeit.timeit(stmt=load_scene, number=1)\n", " loading_time_df[objloader][scene] = loading_time" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
| \n", " | objloader::simple | \n", "objloader::tinyobjloader | \n", "
|---|---|---|
| fireplace_room | \n", "0.590972 | \n", "0.468631 | \n", "
| cornell_box_sphere | \n", "0.00331342 | \n", "0.00296321 | \n", "
| cube | \n", "0.0166067 | \n", "0.0149226 | \n", "