diff --git a/module2/exo4/exercice.ipynb b/module2/exo4/exercice.ipynb index 0bbbe371b01e359e381e43239412d77bf53fb1fb..b329111340ca29e01233133c849ac1aad968b50a 100644 --- a/module2/exo4/exercice.ipynb +++ b/module2/exo4/exercice.ipynb @@ -1,6 +1,464 @@ { - "cells": [], + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Exploration of 3D Indoor Scenes Datasets" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Install panda3d and ursina engines that may be useful for exploration then." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "hideCode": true, + "hideOutput": true, + "hidePrompt": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.\n", + "Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.\n", + "To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: panda3d in /opt/conda/lib/python3.6/site-packages (1.10.6.post2)\n", + "Requirement already satisfied: ursina in /opt/conda/lib/python3.6/site-packages (3.0.0)\n", + "Requirement already satisfied: panda3d in /opt/conda/lib/python3.6/site-packages (from ursina) (1.10.6.post2)\n", + "Requirement already satisfied: pillow in /opt/conda/lib/python3.6/site-packages (from ursina) (7.0.0)\n", + "Requirement already satisfied: screeninfo in /opt/conda/lib/python3.6/site-packages (from ursina) (0.6.5)\n", + "Requirement already satisfied: dataclasses in /opt/conda/lib/python3.6/site-packages (from screeninfo->ursina) (0.7)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.\n", + "Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.\n", + "To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: ipyvolume in /opt/conda/lib/python3.6/site-packages (0.5.2)\n", + "Requirement already satisfied: traittypes in /opt/conda/lib/python3.6/site-packages (from ipyvolume) (0.2.1)\n", + "Requirement already satisfied: Pillow in /opt/conda/lib/python3.6/site-packages (from ipyvolume) (7.0.0)\n", + "Requirement already satisfied: traitlets in /opt/conda/lib/python3.6/site-packages (from ipyvolume) (4.3.3)\n", + "Requirement already satisfied: pythreejs>=1.0.0 in /opt/conda/lib/python3.6/site-packages (from ipyvolume) (2.2.0)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.\n", + "Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.\n", + "To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: ipywebrtc in /opt/conda/lib/python3.6/site-packages (from ipyvolume) (0.5.0)\n", + "Requirement already satisfied: requests in /opt/conda/lib/python3.6/site-packages (from ipyvolume) (2.23.0)\n", + "Requirement already satisfied: numpy in /opt/conda/lib/python3.6/site-packages (from ipyvolume) (1.15.2)\n", + "Requirement already satisfied: ipywidgets>=7.5 in /opt/conda/lib/python3.6/site-packages (from ipyvolume) (7.5.1)\n", + "Requirement already satisfied: ipython-genutils in /opt/conda/lib/python3.6/site-packages (from traitlets->ipyvolume) (0.2.0)\n", + "Requirement already satisfied: decorator in /opt/conda/lib/python3.6/site-packages (from traitlets->ipyvolume) (4.4.1)\n", + "Requirement already satisfied: six in /opt/conda/lib/python3.6/site-packages (from traitlets->ipyvolume) (1.14.0)\n", + "Requirement already satisfied: ipydatawidgets>=1.1.1 in /opt/conda/lib/python3.6/site-packages (from pythreejs>=1.0.0->ipyvolume) (4.0.1)\n", + "Requirement already satisfied: idna<3,>=2.5 in /opt/conda/lib/python3.6/site-packages (from requests->ipyvolume) (2.9)\n", + "Requirement already satisfied: chardet<4,>=3.0.2 in /opt/conda/lib/python3.6/site-packages (from requests->ipyvolume) (3.0.4)\n", + "Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /opt/conda/lib/python3.6/site-packages (from requests->ipyvolume) (1.25.7)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /opt/conda/lib/python3.6/site-packages (from requests->ipyvolume) (2020.4.5.1)\n", + "Requirement already satisfied: ipython>=4.0.0; python_version >= \"3.3\" in /opt/conda/lib/python3.6/site-packages (from ipywidgets>=7.5->ipyvolume) (7.12.0)\n", + "Requirement already satisfied: widgetsnbextension~=3.5.0 in /opt/conda/lib/python3.6/site-packages (from ipywidgets>=7.5->ipyvolume) (3.5.1)\n", + "Requirement already satisfied: nbformat>=4.2.0 in /opt/conda/lib/python3.6/site-packages (from ipywidgets>=7.5->ipyvolume) (5.0.4)\n", + "Requirement already satisfied: ipykernel>=4.5.1 in /opt/conda/lib/python3.6/site-packages (from ipywidgets>=7.5->ipyvolume) (5.1.4)\n", + "Requirement already satisfied: backcall in /opt/conda/lib/python3.6/site-packages (from ipython>=4.0.0; python_version >= \"3.3\"->ipywidgets>=7.5->ipyvolume) (0.1.0)\n", + "Requirement already satisfied: pexpect; sys_platform != \"win32\" in /opt/conda/lib/python3.6/site-packages (from ipython>=4.0.0; python_version >= \"3.3\"->ipywidgets>=7.5->ipyvolume) (4.8.0)\n", + "Requirement already satisfied: setuptools>=18.5 in /opt/conda/lib/python3.6/site-packages (from ipython>=4.0.0; python_version >= \"3.3\"->ipywidgets>=7.5->ipyvolume) (45.2.0.post20200209)\n", + "Requirement already satisfied: jedi>=0.10 in /opt/conda/lib/python3.6/site-packages (from ipython>=4.0.0; python_version >= \"3.3\"->ipywidgets>=7.5->ipyvolume) (0.16.0)\n", + "Requirement already satisfied: pygments in /opt/conda/lib/python3.6/site-packages (from ipython>=4.0.0; python_version >= \"3.3\"->ipywidgets>=7.5->ipyvolume) (2.5.2)\n", + "Requirement already satisfied: pickleshare in /opt/conda/lib/python3.6/site-packages (from ipython>=4.0.0; python_version >= \"3.3\"->ipywidgets>=7.5->ipyvolume) (0.7.5)\n", + "Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in /opt/conda/lib/python3.6/site-packages (from ipython>=4.0.0; python_version >= \"3.3\"->ipywidgets>=7.5->ipyvolume) (3.0.3)\n", + "Requirement already satisfied: notebook>=4.4.1 in /opt/conda/lib/python3.6/site-packages (from widgetsnbextension~=3.5.0->ipywidgets>=7.5->ipyvolume) (6.0.3)\n", + "Requirement already satisfied: jsonschema!=2.5.0,>=2.4 in /opt/conda/lib/python3.6/site-packages (from nbformat>=4.2.0->ipywidgets>=7.5->ipyvolume) (3.0.2)\n", + "Requirement already satisfied: jupyter-core in /opt/conda/lib/python3.6/site-packages (from nbformat>=4.2.0->ipywidgets>=7.5->ipyvolume) (4.6.3)\n", + "Requirement already satisfied: jupyter-client in /opt/conda/lib/python3.6/site-packages (from ipykernel>=4.5.1->ipywidgets>=7.5->ipyvolume) (6.0.0)\n", + "Requirement already satisfied: tornado>=4.2 in /opt/conda/lib/python3.6/site-packages (from ipykernel>=4.5.1->ipywidgets>=7.5->ipyvolume) (6.0.3)\n", + "Requirement already satisfied: ptyprocess>=0.5 in /opt/conda/lib/python3.6/site-packages (from pexpect; sys_platform != \"win32\"->ipython>=4.0.0; python_version >= \"3.3\"->ipywidgets>=7.5->ipyvolume) (0.6.0)\n", + "Requirement already satisfied: parso>=0.5.2 in /opt/conda/lib/python3.6/site-packages (from jedi>=0.10->ipython>=4.0.0; python_version >= \"3.3\"->ipywidgets>=7.5->ipyvolume) (0.6.0)\n", + "Requirement already satisfied: wcwidth in /opt/conda/lib/python3.6/site-packages (from prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0->ipython>=4.0.0; python_version >= \"3.3\"->ipywidgets>=7.5->ipyvolume) (0.1.8)\n", + "Requirement already satisfied: nbconvert in /opt/conda/lib/python3.6/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets>=7.5->ipyvolume) (5.6.1)\n", + "Requirement already satisfied: terminado>=0.8.1 in /opt/conda/lib/python3.6/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets>=7.5->ipyvolume) (0.8.3)\n", + "Requirement already satisfied: Send2Trash in /opt/conda/lib/python3.6/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets>=7.5->ipyvolume) (1.5.0)\n", + "Requirement already satisfied: prometheus-client in /opt/conda/lib/python3.6/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets>=7.5->ipyvolume) (0.7.1)\n", + "Requirement already satisfied: jinja2 in /opt/conda/lib/python3.6/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets>=7.5->ipyvolume) (2.11.0)\n", + "Requirement already satisfied: pyzmq>=17 in /opt/conda/lib/python3.6/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets>=7.5->ipyvolume) (17.1.2)\n", + "Requirement already satisfied: pyrsistent>=0.14.0 in /opt/conda/lib/python3.6/site-packages (from jsonschema!=2.5.0,>=2.4->nbformat>=4.2.0->ipywidgets>=7.5->ipyvolume) (0.15.7)\n", + "Requirement already satisfied: attrs>=17.4.0 in /opt/conda/lib/python3.6/site-packages (from jsonschema!=2.5.0,>=2.4->nbformat>=4.2.0->ipywidgets>=7.5->ipyvolume) (19.3.0)\n", + "Requirement already satisfied: python-dateutil>=2.1 in /opt/conda/lib/python3.6/site-packages (from jupyter-client->ipykernel>=4.5.1->ipywidgets>=7.5->ipyvolume) (2.8.1)\n", + "Requirement already satisfied: bleach in /opt/conda/lib/python3.6/site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets>=7.5->ipyvolume) (3.1.0)\n", + "Requirement already satisfied: pandocfilters>=1.4.1 in /opt/conda/lib/python3.6/site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets>=7.5->ipyvolume) (1.4.2)\n", + "Requirement already satisfied: testpath in /opt/conda/lib/python3.6/site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets>=7.5->ipyvolume) (0.4.4)\n", + "Requirement already satisfied: entrypoints>=0.2.2 in /opt/conda/lib/python3.6/site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets>=7.5->ipyvolume) (0.3)\n", + "Requirement already satisfied: mistune<2,>=0.8.1 in /opt/conda/lib/python3.6/site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets>=7.5->ipyvolume) (0.8.4)\n", + "Requirement already satisfied: defusedxml in /opt/conda/lib/python3.6/site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets>=7.5->ipyvolume) (0.6.0)\n", + "Requirement already satisfied: MarkupSafe>=0.23 in /opt/conda/lib/python3.6/site-packages (from jinja2->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets>=7.5->ipyvolume) (1.1.1)\n", + "Requirement already satisfied: webencodings in /opt/conda/lib/python3.6/site-packages (from bleach->nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets>=7.5->ipyvolume) (0.5.1)\n" + ] + } + ], + "source": [ + "import pip\n", + "\n", + "def install(package):\n", + " if hasattr(pip, 'main'):\n", + " pip.main(['install', package])\n", + " else:\n", + " pip._internal.main(['install', package])\n", + "\n", + "# Example\n", + "if __name__ == '__main__':\n", + " install('panda3d')\n", + " install('ursina')\n", + " install('ipyvolume')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Explore SceneNN scene" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copy minimalist scene data as string \"sample_scene_data\"" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "hideCode": true, + "hideOutput": true, + "hidePrompt": false + }, + "outputs": [], + "source": [ + "sample_scene_data = \"\"\"\n", + "\n", + "\n", + "\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Load scene data as xml tree element" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "from xml.etree import ElementTree\n", + "scene_root = ElementTree.fromstring(sample_scene_data)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "from mpl_toolkits.mplot3d import Axes3D, axes3d\n", + "fig = plt.figure()\n", + "ax = fig.add_subplot(111, projection='3d')\n", + "X, Y, Z = axes3d.get_test_data(1.)\n", + "ax.plot_wireframe(X, Y, Z) #, rstride=10, cstride=10)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], "metadata": { + "celltoolbar": "Hide code", "kernelspec": { "display_name": "Python 3", "language": "python", @@ -16,10 +474,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.3" + "version": "3.6.4" } }, "nbformat": 4, "nbformat_minor": 2 } -