{ "cells": [ { "cell_type": "markdown", "id": "36095417-3681-4329-9c25-b71583a3e3f6", "metadata": { "id": "36095417-3681-4329-9c25-b71583a3e3f6" }, "source": [ "# Implicit representation for mesh reconstruction with Point Clouds" ] }, { "cell_type": "markdown", "id": "a5d63547-7405-43ad-8997-b28f05ece806", "metadata": { "id": "a5d63547-7405-43ad-8997-b28f05ece806" }, "source": [ "In this lab work we will reconstruct shapes from point sets with and without their normal information.\n", "Each network/method will output the distance or signed distance and one can extract the surface with Marching\n", "cubes, following these steps :\n", "- Use the trained network to compute the values of the signed distance on a grid\n", "- Extract the 0 levelset (marching_cubes method of the mcubes library)\n", "- Save/visualize the mesh (export_obj method of the mcubes library)" ] }, { "cell_type": "code", "execution_count": null, "id": "JVRLjO_fVErO", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "JVRLjO_fVErO", "outputId": "0b3fe686-8d46-42cf-f455-6045587bcf09" }, "outputs": [], "source": [ "!pip install potpourri3d\n", "!pip install git+https://github.com/skoch9/meshplot.git\n", "!pip install pythreejs\n", "!pip install pymcubes" ] }, { "cell_type": "code", "execution_count": null, "id": "MLP07KHSWRb4", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "MLP07KHSWRb4", "outputId": "94f19940-0cee-495a-e4a4-717469d3a23b" }, "outputs": [], "source": [ "!wget https://www.lix.polytechnique.fr/~pierson/cours/tp_sdf_material.zip" ] }, { "cell_type": "code", "execution_count": null, "id": "KWAxPUK2VLj0", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "KWAxPUK2VLj0", "outputId": "602d9c89-77dd-43c3-c4cd-238fabd8e771" }, "outputs": [], "source": [ "!unzip -o tp_sdf_material.zip\n", "!ls" ] }, { "cell_type": "code", "execution_count": null, "id": "e0c895ab-6aac-49b9-bf78-026b2c1b4740", "metadata": { "id": "e0c895ab-6aac-49b9-bf78-026b2c1b4740" }, "outputs": [], "source": [ "from google.colab import output\n", "output.enable_custom_widget_manager()\n", "\n", "import numpy as np\n", "import mcubes\n", "import plot_utils as plu\n", "from mesh_utils.mesh import TriMesh\n", "import torch\n", "import torch.nn as nn\n", "import torch.nn.functional as F\n", "from tqdm.auto import tqdm\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "id": "adb369d0", "metadata": { "id": "adb369d0" }, "source": [ "# Traditional reconstruction approach\n", "This method is a \"historical\" method (link) for reconstructing a surface from a set of points. It consists in taking an oriented point cloud $(x_i , n_i )$, and estimating for any arbitrary point $x$ in the ambient space a signed distance function as : $u(x) = ± min_i ∥x_i − x∥$\n", "\n", "The sign is given by the sign of the scalar product $\\langle x - x_i, n_i \\rangle$.\n", "\n", "The original method starts with unoriented point clouds and devises a clever way to estimate the normal direction and their orientation. Here, for simplicity, we start with oriented points." ] }, { "cell_type": "code", "execution_count": null, "id": "545ae05c-32fb-4d95-9053-28472362e908", "metadata": { "id": "545ae05c-32fb-4d95-9053-28472362e908" }, "outputs": [], "source": [ "def get_pc(path):\n", " ## Load the oriented point set. You can use the function np.loadtxt\n", " return point_cloud, normals" ] }, { "cell_type": "code", "execution_count": null, "id": "96a97e2b-5b8b-4b42-b1cb-69d46aa13a46", "metadata": { "id": "96a97e2b-5b8b-4b42-b1cb-69d46aa13a46" }, "outputs": [], "source": [ "pc, normals = get_pc(\"armadillo_sub.xyz\")" ] }, { "cell_type": "code", "execution_count": null, "id": "c69237d8-6698-4181-8ca8-bd59348dbd93", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 978, "referenced_widgets": [ "a0d23a848b0149c7a86c7241181fee9b", "21cd72c937be45ffa1aa1ecd66565055", "85b7741de559492ea0b0ee731b808ee8", "e18fcaef8e8f439f829be72913b09838", "a40304a01ddc452e89133e17c21c09ab", "ba57353533c047878b8d58e10d940aa3", "fb0e1201299146d0907726ba0a1671b8", "bc4b6d21503f492c9f8d785886144744", "7c6c112f72ad4c05b603165b08978430", "049c3d700d6e44a58fa1fb5198eb475b", "1c81f0a67a3c42ada4b4f7ba51004c20", "bf4c052432734190aaafdf37332d6075", "32fcb6d5aae14d708c9257951e5b6b57" ] }, "id": "c69237d8-6698-4181-8ca8-bd59348dbd93", "outputId": "2f4d5da9-2211-4ac7-bf53-172e5d3efa3a" }, "outputs": [], "source": [ "plu.plot_pc(pc, point_size=2) #You can put cmap = normals to see normals orientation as color" ] }, { "cell_type": "markdown", "id": "1d672be2-d96c-4a6f-a3f6-ea4d8d0ddfba", "metadata": { "id": "1d672be2-d96c-4a6f-a3f6-ea4d8d0ddfba" }, "source": [ "The second step is to compute the sdf based on the set of points. You will first need to build a grid of points (using e.g. np.meshgrid), and then to compute the sdf to the set of points. Don't forget to adapt the limits of the grid to the size of the point cloud! For the distance, use an efficient way to compute the distance (look at solutions of previous labs to get an idea)." ] }, { "cell_type": "code", "execution_count": null, "id": "7b34c02e-3384-4b88-beb6-4a05fc42b369", "metadata": { "id": "7b34c02e-3384-4b88-beb6-4a05fc42b369" }, "outputs": [], "source": [ "from scipy import spatial\n", "\n", "def compute_sdf(point_cloud, normals, points_query):\n", " ## Compute SDF on points_query from the shape defined by point_cloud and normals\n", " return sdf\n", "\n", "def compute_sdf_grid(point_cloud, normals, grid_size=40):\n", " ## Compute SDF on a XYZ grid. First generate the grid (it has to enclose the point cloud)\n", " ## Then compute the sdf\n", " #compute the enclosing grid\n", " \n", "\n", " \n", " return sdf # shape (grid_size, grid_size, grid_size)" ] }, { "cell_type": "code", "execution_count": null, "id": "7501d31d-6301-4f66-a8ae-645208384e4c", "metadata": { "id": "7501d31d-6301-4f66-a8ae-645208384e4c" }, "outputs": [], "source": [ "sdf = compute_sdf_grid(pc, normals)" ] }, { "cell_type": "code", "execution_count": null, "id": "31442fcb-2a9a-42ab-a1d9-41e29ce462b6", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 978, "referenced_widgets": [ "391b74dbf597484d894f4849f0cc0373", "73da99c3a634410489b3217005de4267", "09afb5addb254c8eaa57ba17c4a17f6c", "58878c7d0deb48ffa0ed8ffa8c7efb76", "dbd12d44ada7410581f4f9a0532556ae", "2eb48b41ecb94ef18aba4c9dce9fc3cd", "260d4b9064bf4e7f8940f6fdb2db7e60", "8884a15509704f418e3baf747c978f21", "af00878bc86e4811880053a056956e85", "7291c1b7d2ca4391958376561a2e8d51", "c2b1122c8cd640fcb0e9c4ca80674e8f", "4d0f56e67ff14eba9aad0fc176f4e719", "f6ddac9617d14a3995ef687f28439061", "6bc9b2fd29294397bfaa45ef111de96f" ] }, "id": "31442fcb-2a9a-42ab-a1d9-41e29ce462b6", "outputId": "a32839a4-e5a1-4c3d-8bc6-4a94be4afdad" }, "outputs": [], "source": [ "vertices, triangles = mcubes.marching_cubes(sdf,0)\n", "mesh = TriMesh(vertices, triangles)\n", "mcubes.export_obj(vertices, triangles, 'result_hoppe.obj')\n", "plu.plot(mesh)" ] }, { "cell_type": "markdown", "id": "4af67d5b-d9fa-4685-ad42-ab15d01086e2", "metadata": { "id": "4af67d5b-d9fa-4685-ad42-ab15d01086e2" }, "source": [ "You can try different grid sizes, but do not increase too much its size to avoid memory issues" ] }, { "cell_type": "markdown", "id": "b497b547-ce5b-4fdf-bff6-11765cba573a", "metadata": { "id": "b497b547-ce5b-4fdf-bff6-11765cba573a" }, "source": [ "# DeepSDF\n", "\n", "This method (see link) consists of representing the SDF as a function (x, y, z) -> sdf, parameterized by a neural network.\n", "\n", "We first build the network according to the following figure\n", "\n", "![title](img/TD5_sdf.png)\n", "\n", "The activations are ReLUs, except for the last one, defined as $\\phi(a) = \\text{tanh}(a)$.\n", "\n", "Moreover, the networks have specific initialization (**except the last one**): the weights of size $n \\times n$ are initialized according to the following $\\mathcal{N}\\left(0, \\sqrt{\\frac{2}{n}}\\right)$ law, and the bias are initalized to 0 (except for the last linear layer). You can access to a Linear layer weight, and bias via layer..weight.data, and layer.bias.data, or use nn.init on layer.weight, layer.bias" ] }, { "cell_type": "code", "execution_count": null, "id": "ed7c8a12-cdc3-4220-9491-71600785abcc", "metadata": { "id": "ed7c8a12-cdc3-4220-9491-71600785abcc" }, "outputs": [], "source": [ "class SDFNet(nn.Module):\n", " def __init__(self, ninputchannels, dropout=0.2, gamma=0, sal_init=False, eik=False):\n", " super(SDFNet, self).__init__()\n", " ## Prepare the layers\n", " ## Don't forget to initialize your weights correctly.\n", "\n", " ## gamma, sal_init, eik are for later\n", " self.gamma=gamma\n", " self.eik = eik\n", " \n", "\n", "\n", " #custom weights init\n", "\n", " def forward(self,x):\n", " ## Logic of the neural network\n", " ## You can add dropout if you want\n", " return x" ] }, { "cell_type": "markdown", "id": "b0b32746-6a2c-4c25-93b1-24fbac4f7690", "metadata": { "id": "b0b32746-6a2c-4c25-93b1-24fbac4f7690" }, "source": [ "### Loss function\n", "\n", "The loss is computed by sampling random points in the ambient space (set X), computing their ground truth SDF (using part one), and computing the distance between computed and ground truth sdf:\n", "\n", "$$\n", "\\mathcal{L}(\\theta) = \\mathbb{E}_{x \\sim X} [|\\text{clamp}(u_\\theta(x), \\delta) - \\text{clamp}(\\text{SDF}_{\\text{gt}}(x), \\delta)|]\n", "$$\n", "\n", "where $\\text{clamp}(x, \\delta) := \\min(\\delta, \\max(−\\delta, x))$ (you can use torch.clamp). To understand the signification of parameter $\\delta$, read carefully paragraph 3 of the paper." ] }, { "cell_type": "code", "execution_count": null, "id": "ebda59ec-e59e-4b50-a2a3-bda8a3d8221a", "metadata": { "id": "ebda59ec-e59e-4b50-a2a3-bda8a3d8221a" }, "outputs": [], "source": [ "def evaluate_loss(net, pts_gt, sdf_gt, device, lpc, batch_size=2000, delta = 0.1):\n", " ## For this function, you need to sample batch_size number of points\n", " ## From pts_gt. Evaluate the sdf at those points and compute the loss\n", " ## compared to sdf_gt (be careful to select the same points between pts_gt and sdf_gt)\n", "\n", " # Select points\n", " \n", "\n", " # compute and store the losses\n", " loss = \n", "\n", " # append all the losses\n", " lpc.append(float(loss.item()))\n", "\n", " return loss" ] }, { "cell_type": "markdown", "id": "db4de69e-a85d-4e32-b3e4-993e45ce6263", "metadata": { "id": "db4de69e-a85d-4e32-b3e4-993e45ce6263" }, "source": [ "### Training the SDF" ] }, { "cell_type": "code", "execution_count": null, "id": "50183176-a41a-43a8-94fb-71f058cad8c8", "metadata": { "id": "50183176-a41a-43a8-94fb-71f058cad8c8" }, "outputs": [], "source": [ "device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n", "\n", "def get_normalized_pointcloud(point_cloud, margin=0.05):\n", " ## Return the same point cloud, scaled such that \n", " ## x,y,z values are between -1+margin and 1-margin\n", " #compute the enclosing grid\n", "\n", " #normalize the points\n", " return pc_normed\n", "\n", "def compute_gt_sdf(point_cloud, normals, n_points=1000000):\n", " ## Sample a n_points points in with XYZ coordinates between -1 and 1\n", " ## Then use compute_sdf to get sdf_gt\n", "\n", " p_norm = get_normalized_pointcloud(point_cloud, margin=0.00001)\n", " #preparing gt points:\n", "\n", " gtp = \n", " sdf_gt = compute_sdf(p_norm, normals, gtp)\n", " return sdf_gt, gtp" ] }, { "cell_type": "code", "execution_count": null, "id": "8bdd38cf-77d9-473b-9411-b221b81351b7", "metadata": { "id": "8bdd38cf-77d9-473b-9411-b221b81351b7" }, "outputs": [], "source": [ "n_points = 100000\n", "sdf_gt, gtp = compute_gt_sdf(pc, normals, n_points)" ] }, { "cell_type": "code", "execution_count": null, "id": "105ecb10-da59-4719-947f-67e6088d4cee", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "105ecb10-da59-4719-947f-67e6088d4cee", "outputId": "fd0d150a-a54f-404c-d1d1-94c40bb2fa83" }, "outputs": [], "source": [ "print(device)\n", "print(sdf_gt.shape, gtp.shape) ## Should be same shape\n", "print(np.isclose(gtp.max(), 1, 1e-3), np.isclose(gtp.min(), -1, 1e-3)) ## Should be equal to one" ] }, { "cell_type": "code", "execution_count": null, "id": "5d388ce8-3c03-4923-bd97-ebb2e6325a6a", "metadata": { "id": "5d388ce8-3c03-4923-bd97-ebb2e6325a6a" }, "outputs": [], "source": [ "def training_sdf(sdf_gt, gtp):\n", " geomnet = SDFNet(3)\n", " geomnet.to(device)\n", " gtpoints = torch.from_numpy(gtp).float().to(device)\n", " gtsdf = torch.from_numpy(sdf_gt).float().to(device)\n", "\n", " lpc = []\n", "\n", " optim = torch.optim.Adam(params = geomnet.parameters(), lr=1e-5)\n", "\n", " nepochs=10000\n", " pbar = tqdm(total=nepochs,\n", " desc=\"Training\")\n", "\n", " for epoch in range(nepochs):\n", " loss = evaluate_loss(geomnet, gtpoints, gtsdf, device, lpc, delta = 0.1, batch_size=2500)\n", " optim.zero_grad()\n", " loss.backward()\n", " optim.step()\n", " if epoch % 100 == 0:\n", " # print(f\"Epoch {epoch}/{nepochs} - loss : {loss.item()}\")\n", " pbar.set_postfix({'loss': loss.item()})\n", " pbar.update(1)\n", " return lpc, geomnet\n" ] }, { "cell_type": "code", "execution_count": null, "id": "2b3d25b5-98f2-431d-b865-4d26b179537e", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 49, "referenced_widgets": [ "8ce06bf5a67840f79c0d6bde734f2ed4", "c4b4dfc8c710402bbcdbb44e506f7823", "29255944e05e486e97462a0f2df09fd1", "3038d1154fae492e8627438f9688abec", "aa3d93019f41449a96ca8b627bba409f", "94f637204a8847d5aa63c6cbba1d9584", "c83dae32f44448d187d3f27406846808", "5b63cd9c94534986a87d072788c6a3f5", "43661a3d263e48b0a10aab2c375fbb50", "99f4e4ad068e4cb3b50a11aa6de8318a", "122eff20624a459a9878a4d05b198504" ] }, "id": "2b3d25b5-98f2-431d-b865-4d26b179537e", "outputId": "8c359775-45b3-489b-f631-ca82c000930b" }, "outputs": [], "source": [ "loss_, net_sdf = training_sdf(sdf_gt, gtp)\n", "## If the training is slow (hours), change you execution environment to GPU!" ] }, { "cell_type": "code", "execution_count": null, "id": "befa5482-c1c5-40f3-80ea-2986cea7b1c7", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 388 }, "id": "befa5482-c1c5-40f3-80ea-2986cea7b1c7", "outputId": "4dc96f82-ae31-43f4-80fa-1cb899830f95" }, "outputs": [], "source": [ "# Check that the network learned something\n", "plt.figure(figsize=(6,4))\n", "plt.yscale('log')\n", "plt.plot(loss_, label = 'Point cloud loss ({:.2f})'.format(loss_[-1]))\n", "plt.xlabel(\"Epochs\")\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "9631c5ff", "metadata": {}, "source": [ "## Reconstruct the shape\n", "Code the function compute_deepsdf that compute sdf on a grid using a trained sdf network" ] }, { "cell_type": "code", "execution_count": null, "id": "e1f1f2ff-9737-42bc-8a1d-f247acea17e1", "metadata": { "id": "e1f1f2ff-9737-42bc-8a1d-f247acea17e1" }, "outputs": [], "source": [ "def compute_deepsdf(net, grid_size=40):\n", " net.eval()\n", " \n", "\n", " v = # point cloud definition (more than one_line, reshape it to (something, 3))\n", " queries = torch.from_numpy(v).float().to(device)\n", " with torch.no_grad():\n", " distance = net(queries).detach().cpu().numpy()\n", " u = np.reshape(distance,(grid_size,grid_size,grid_size))\n", " return u" ] }, { "cell_type": "code", "execution_count": null, "id": "79cec4a2-2347-4368-869d-a4797a63a8fb", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 978, "referenced_widgets": [ "e78d9c9c6024421d8ebf899dfe9ed253", "fd86e89f2ae34840930e97b98257ee2d", "00eb5a564a8142fd8aaa5a1bfe279867", "2cf64c8ba4f446b38cc2b1f92922cb60", "c6340c75041b460c8440f20699d7b6cb", "334daf4803474cf6a3d88c5c2fefdb49", "07b60692e5db42c4b77a5bc9e5696c6b", "6aa4f2df540342328a880e5761a52850", "c6be0df512eb4da7af5e218b862fd1ae", "6b8801d6968a4dc8a599e286bad8e156", "815fe0bfb3334b5ca394a067456dcc23", "9e390bb2a45045a0bea292300d4422b5", "8a8db73d67154ce5bd44bbeb846d7359", "927def9a13a14f00a008e7765fb9dd78" ] }, "id": "79cec4a2-2347-4368-869d-a4797a63a8fb", "outputId": "2ae3cbf6-56c9-48f1-8c68-ddaa909076cd" }, "outputs": [], "source": [ "u = compute_deepsdf(net_sdf, 40)\n", "vertices, triangles = mcubes.marching_cubes(u,0)\n", "mesh = TriMesh(vertices, triangles)\n", "mcubes.export_obj(vertices, triangles, 'result_deepsdf.obj')\n", "plu.plot(mesh)" ] }, { "cell_type": "markdown", "id": "d9be6066-adbf-4ef8-9cec-103a933d58de", "metadata": { "id": "d9be6066-adbf-4ef8-9cec-103a933d58de" }, "source": [ "# Unsigned Distance Function\n", "\n", "In this case (paper link), the objective is to learn directly on raw point clouds, without pre-processing to predicts normals/orientation of the shape. To reach this objective, the authors notice the following:\n", "- Using the usigned distance function (absolute value of the predicted SDF) is then necessary\n", "- Carefully choosing the points where to predict the distance is crucial\n", "- Weights initialization is to be changed\n", "\n", "The modification to SDF is simple : the loss is now computed by sampling points around each data point $x_i$ , following a centered Gaussian distribution of variance $\\sigma²$:\n", "\n", "$$\n", "\\mathcal{L}(\\theta) = \\sum_i \\mathbb{E}_{x \\sim \\mathcal{N}(x_i, \\sigma^2)}[(|u_{\\theta}(x)| - |\\text{SDF}_{\\text{GT}}](x)|)^2)]\n", "$$\n", "\n", "where $\\sigma$ is a parameter that you can play with, and $\\text{SDF}_{\\text{GT}}(x)$ is simply $\\text{dist}(x_i, x)$.\n", "\n", "The last linear layer is now initialized too, with weights following $\\mathcal{N}\\left(0, 2\\sqrt{\\pi}\\right)$ law and bias initialized to -1. The last layer activation is now $\\phi(a) = \\text{tanh}(a) + \\gamma a$. Gamma parameter now equals to 0.5." ] }, { "cell_type": "markdown", "id": "re66I8b9bSVG", "metadata": { "id": "re66I8b9bSVG" }, "source": [ "## Neural network\n", "- Modify SDFNet with sal_init, such that when sal_init=True, the last layer is initialized properly\n", "- Take in account gamma parameter in the network logic" ] }, { "cell_type": "markdown", "id": "4df7cc7d", "metadata": {}, "source": [ "## Loss function \n", "Implement the SAL loss function" ] }, { "cell_type": "code", "execution_count": null, "id": "ef5cedb8-b629-434b-8180-d7d713bb79fe", "metadata": { "id": "ef5cedb8-b629-434b-8180-d7d713bb79fe" }, "outputs": [], "source": [ " def evaluate_loss_sal(net, p, sigma, device, losses,batch_size=5000):\n", " ## Sample batch_size points, and then sample a random point around each point\n", "\n", " #sample points around each of the samples\n", "\n", " \n", "\n", " # evaluate distances and compute the loss\n", " # compute and store the losses\n", " loss = \n", " losses.append(loss.item())\n", "\n", " return loss" ] }, { "cell_type": "code", "execution_count": null, "id": "8a0cec68-0e84-4bdb-99bd-3b031fee9af1", "metadata": { "id": "8a0cec68-0e84-4bdb-99bd-3b031fee9af1" }, "outputs": [], "source": [ "def training_sal(point_cloud, loss_function, sigma=0.02):\n", " geomnet = SDFNet(3, gamma=0.5, sal_init=True)\n", " geomnet.to(device)\n", "\n", " pc_norm = get_normalized_pointcloud(point_cloud)\n", " points_torch = torch.from_numpy(pc_norm).float().to(device)\n", "\n", " lpc = []\n", "\n", " optim = torch.optim.Adam(params = geomnet.parameters(), lr=1e-4)\n", "\n", " nepochs=5000\n", " pbar = tqdm(total=nepochs,\n", " desc=\"Training\")\n", "\n", " for epoch in range(nepochs):\n", " loss = loss_function(geomnet, points_torch, sigma, device, lpc, batch_size=5000)\n", " optim.zero_grad()\n", " loss.backward()\n", " optim.step()\n", " if epoch % 100 == 0:\n", " # print(f\"Epoch {epoch}/{nepochs} - loss : {loss.item()}\")\n", " pbar.set_postfix({'loss': loss.item()})\n", " pbar.update(1)\n", "\n", "\n", " return lpc, geomnet" ] }, { "cell_type": "code", "execution_count": null, "id": "85f7c7ba-6728-43e8-a800-4189075c512d", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 66, "referenced_widgets": [ "7595d1d2d56640ad8a2b028d0af270f9", "ef4250deb7be4c5db17a28dc05566477", "580bfdbf3d91487593d7075061a2dd85", "de9fe104a3bf4d968e0b2a14fec64d3f", "4a39316fe18743639eae95ae2512c320", "1c626e98e1a0446e8d70b53d74e0958f", "d71b0598ce5f4be1bf75021d13826ff1", "c6afaf3678374b0fb25ff3dfd9b9b9f5", "5adb54f552ee4641bc9a8005dcc6331b", "1533304550944d8d95be6c339fc5f52c", "26658e529d884939a63a46946fb3b6ed" ] }, "id": "85f7c7ba-6728-43e8-a800-4189075c512d", "outputId": "935b7880-663c-4988-d9c2-fe091a8a9d4e" }, "outputs": [], "source": [ "# If you get an error: did you modify SDFNet according to the instructions?\n", "loss_sal, net_sal = training_sal(pc, evaluate_loss_sal, sigma=0.02)" ] }, { "cell_type": "code", "execution_count": null, "id": "1cfb9856-af01-407e-b387-2ad404d4fbe6", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 391 }, "id": "1cfb9856-af01-407e-b387-2ad404d4fbe6", "outputId": "b3bd12ed-a60f-4615-af5b-403521714259" }, "outputs": [], "source": [ "# Check that the network learned something\n", "plt.figure(figsize=(6,4))\n", "plt.yscale('log')\n", "plt.plot(loss_sal, label = 'Point cloud loss ({:.2f})'.format(loss_[-1]))\n", "plt.xlabel(\"Epochs\")\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "id": "a178da71-9471-4bff-b4ad-879a79a6ec8c", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 978, "referenced_widgets": [ "816c6ca394f945e99612d29c4504b9d6", "44ac3e738dd14856b0c4ebac02c4a6d8", "2488a84fc9504a1aa25132ae8f0da227", "c399d60303c341e8bb6325c860ab4959", "21d7ca720cbd4564a2a5570807da4f53", "d33f6725b97c40b594d90b8470126b85", "e341313ad08d4122b0165faec7573670", "4b9f628316c9498fb32a6fc5adaa4def", "cbd0be1818c14d56b3653a1ead09fcf5", "28e2959b55e843a6888ef9b6237fb6c0", "b5c05ae02b624062839e62062271caba", "474056ac15dd4b3687dfd435a52ceca7", "48a99ce4d6e84123a293a091d5dc9bce", "0bd798a3dd084cb585a969b1fd106644" ] }, "id": "a178da71-9471-4bff-b4ad-879a79a6ec8c", "outputId": "43685019-2aa5-4a72-ddfe-897f8a3385fc" }, "outputs": [], "source": [ "u = compute_deepsdf(net_sal, 40)\n", "vertices, triangles = mcubes.marching_cubes(u,0)\n", "mesh = TriMesh(vertices, triangles)\n", "plu.plot(mesh)" ] }, { "cell_type": "markdown", "id": "a09fe661-0a7e-49d7-91c8-e1bf752f0ac6", "metadata": { "id": "a09fe661-0a7e-49d7-91c8-e1bf752f0ac6" }, "source": [ "The produced signed distances using the proposed are too smooth and can't overfit a single shape. Therefore, the authors propose to learn the $L_0$ unsigned distance, by minimizing:\n", "\n", "$$\n", "\\mathcal{L}(\\theta) = \\sum_i \\mathbb{E}_{x \\sim \\mathcal{N}(x_i, \\sigma^2)}[||u_{\\theta}(x)| - 1|] + \\mathbb{E}_{x \\in \\mathcal{X}}[|u_{\\theta}(x)|],\n", "$$\n", "\n", "i.e. we want the distance to be $1$ outside of the surface, and $0$ on the surface.\n", "\n", "Write the function evaluate_loss_sal_l0 below accordingly, and launch a new training to see the effects on the results." ] }, { "cell_type": "code", "execution_count": null, "id": "e1f1f3a3-f102-4bb8-942e-cd15145e7357", "metadata": { "id": "e1f1f3a3-f102-4bb8-942e-cd15145e7357" }, "outputs": [], "source": [ "def evaluate_loss_sal_l0(net, p, sigma, device, losses,batch_size=5000):\n", " ## Do the sampling and evaluations\n", "\n", " # compute and store the losses\n", " loss = \n", "\n", " losses.append(loss.item())\n", "\n", " return loss" ] }, { "cell_type": "code", "execution_count": null, "id": "fc552b1e-10b9-47ff-a4e3-2a17443e5886", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 49, "referenced_widgets": [ "72d26aede05b4fe4bea5f10ff85dc31f", "8c004aa288324b8c8617fbc423480388", "e6c32731ffd94a6f995b0ed0b6b1ffd0", "1c090379b8b444bc939ad461faae49d6", "1c434f0793934a709b4d5233440a170b", "529ddc48de0941bbbfff3d70615ff8d3", "6bc487dc19884862a2d7412d87d04e54", "95271048ab31446b9402bf0aeda5b24d", "492ff3d421e346a08c14ffcfe5936ed4", "1f878730ef9b47ae8928f4e0263ce5d2", "b5ab6562d2a74fecac72001b39875c2e" ] }, "id": "fc552b1e-10b9-47ff-a4e3-2a17443e5886", "outputId": "703136c7-8583-4dbb-8726-3f31581a4f30" }, "outputs": [], "source": [ "loss_sal_0, net_sal_0 = training_sal(pc, evaluate_loss_sal_l0, sigma=0.02)" ] }, { "cell_type": "code", "execution_count": null, "id": "8906da72-95e6-496f-a613-3280125d0727", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 388 }, "id": "8906da72-95e6-496f-a613-3280125d0727", "outputId": "38c37046-af55-4896-9b42-20768871cc7b" }, "outputs": [], "source": [ "# Check that the network learned something\n", "plt.figure(figsize=(6,4))\n", "plt.yscale('log')\n", "plt.plot(loss_sal_0, label = 'Point cloud loss ({:.2f})'.format(loss_sal_0[-1]))\n", "plt.xlabel(\"Epochs\")\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "id": "be1e41ee-1efd-4f15-a209-89820e62334b", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 978, "referenced_widgets": [ "32dc21c1ea6e460597628818270577d0", "f96246e78f1241d4a3bd704c5bce4122", "d20d3179ed2146b5896cff8e44d6a8e8", "e7411a12b6e74aa38b8993650bb01f9a", "15da18c8b43446e6858cb894cf0f9bca", "1ad24d722d9e4bee94b8f27d3db788c8", "49da82c6bb59404ab91092e0d87c12d7", "0ef5fa1fc9d94389bf544de1d184ffcb", "e5b98d80b35c4ea4afc5a349a33dd33d", "5cf9d8a7f8244396b95182325f948b20", "96642999f3d84e48b06360efda7b7d53", "31793eea58c6499a9cf5c2e546b99100", "e214829b89954685acf6c145ed2f2ca0", "096cb49fc65448e7bef6e949e98071a3" ] }, "id": "be1e41ee-1efd-4f15-a209-89820e62334b", "outputId": "f68ae747-8fb1-46b9-d19a-dde027b24d1f" }, "outputs": [], "source": [ "u = compute_deepsdf(net_sal_0, 40)\n", "vertices, triangles = mcubes.marching_cubes(u,0)\n", "mesh = TriMesh(vertices, triangles)\n", "plu.plot(mesh)" ] }, { "cell_type": "markdown", "id": "1675226e-0287-4d89-9c43-372190fdcfc4", "metadata": { "id": "1675226e-0287-4d89-9c43-372190fdcfc4" }, "source": [ "You can play with the sigma parameter to improve the results (see the paper to choose it wisely)." ] } ], "metadata": { "accelerator": "GPU", "colab": { "gpuType": "T4", "provenance": [] }, "kernelspec": { "display_name": "Python 3", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.18" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "00eb5a564a8142fd8aaa5a1bfe279867": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "OrbitControlsModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "OrbitControlsModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "autoRotate": false, "autoRotateSpeed": 2, "controlling": "IPY_MODEL_fd86e89f2ae34840930e97b98257ee2d", "dampingFactor": 0.25, "enableDamping": false, "enableKeys": true, "enablePan": true, "enableRotate": true, "enableZoom": true, "enabled": true, "keyPanSpeed": 7, "maxAzimuthAngle": "inf", "maxDistance": "inf", "maxPolarAngle": 3.141592653589793, "maxZoom": "inf", "minAzimuthAngle": "-inf", "minDistance": 0, "minPolarAngle": 0, "minZoom": 0, "panSpeed": 1, "rotateSpeed": 1, "screenSpacePanning": true, "target": [ 19.5, 16.319141387939453, 14.710677802562714 ], "zoomSpeed": 1 } }, "049c3d700d6e44a58fa1fb5198eb475b": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "BufferGeometryModel", "state": { "MaxIndex": 65535, "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "BufferGeometryModel", "_ref_geometry": null, "_store_ref": false, "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "attributes": { "position": "IPY_MODEL_bf4c052432734190aaafdf37332d6075" }, "index": null, "morphAttributes": {}, "name": "", "type": "BufferGeometry", "userData": {} } }, "07b60692e5db42c4b77a5bc9e5696c6b": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "DirectionalLightModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "DirectionalLightModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "castShadow": false, "children": [], "color": "white", "frustumCulled": true, "intensity": 0.6, "matrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixAutoUpdate": true, "matrixWorld": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixWorldNeedsUpdate": true, "modelViewMatrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "name": "", "normalMatrix": [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ], "position": [ 19.5, 16.319141387939453, 100.80268201371474 ], "quaternion": [ 0, 0, 0, 1 ], "receiveShadow": false, "renderOrder": 0, "rotation": [ 0, 0, 0, "XYZ" ], "scale": [ 1, 1, 1 ], "shadow": "IPY_MODEL_33ac8473-d25e-49e1-b7ce-482a57ef1fd3", "target": "IPY_MODEL_1bf05949-6eec-4f5b-9855-68c66bcd9e11", "type": "DirectionalLight", "up": [ 0, 1, 0 ], "visible": true } }, "096cb49fc65448e7bef6e949e98071a3": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "BufferAttributeModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "BufferAttributeModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "array": { "dtype": "float32", "shape": [ 3177, 3 ] }, "dynamic": false, "needsUpdate": false, "normalized": false, "version": 1 } }, "09afb5addb254c8eaa57ba17c4a17f6c": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "OrbitControlsModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "OrbitControlsModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "autoRotate": false, "autoRotateSpeed": 2, "controlling": "IPY_MODEL_73da99c3a634410489b3217005de4267", "dampingFactor": 0.25, "enableDamping": false, "enableKeys": true, "enablePan": true, "enableRotate": true, "enableZoom": true, "enabled": true, "keyPanSpeed": 7, "maxAzimuthAngle": "inf", "maxDistance": "inf", "maxPolarAngle": 3.141592653589793, "maxZoom": "inf", "minAzimuthAngle": "-inf", "minDistance": 0, "minPolarAngle": 0, "minZoom": 0, "panSpeed": 1, "rotateSpeed": 1, "screenSpacePanning": true, "target": [ 19.56626734882593, 19.52610757946968, 18.69771385192871 ], "zoomSpeed": 1 } }, "0bd798a3dd084cb585a969b1fd106644": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "BufferAttributeModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "BufferAttributeModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "array": { "dtype": "float32", "shape": [ 6613, 3 ] }, "dynamic": false, "needsUpdate": false, "normalized": false, "version": 1 } }, "0ef5fa1fc9d94389bf544de1d184ffcb": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "AmbientLightModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "AmbientLightModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "castShadow": false, "children": [], "color": "#ffffff", "frustumCulled": true, "intensity": 0.5, "matrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixAutoUpdate": true, "matrixWorld": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixWorldNeedsUpdate": false, "modelViewMatrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "name": "", "normalMatrix": [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ], "position": [ 0, 0, 0 ], "quaternion": [ 0, 0, 0, 1 ], "receiveShadow": false, "renderOrder": 0, "rotation": [ 0, 0, 0, "XYZ" ], "scale": [ 1, 1, 1 ], "type": "AmbientLight", "up": [ 0, 1, 0 ], "visible": true } }, "122eff20624a459a9878a4d05b198504": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "1533304550944d8d95be6c339fc5f52c": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "15da18c8b43446e6858cb894cf0f9bca": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "SceneModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "SceneModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "autoUpdate": true, "background": "#ffffff", "castShadow": false, "children": [ "IPY_MODEL_f96246e78f1241d4a3bd704c5bce4122", "IPY_MODEL_0ef5fa1fc9d94389bf544de1d184ffcb", "IPY_MODEL_e5b98d80b35c4ea4afc5a349a33dd33d" ], "fog": null, "frustumCulled": true, "matrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixAutoUpdate": true, "matrixWorld": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixWorldNeedsUpdate": false, "modelViewMatrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "name": "", "normalMatrix": [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ], "overrideMaterial": null, "position": [ 0, 0, 0 ], "quaternion": [ 0, 0, 0, 1 ], "receiveShadow": false, "renderOrder": 0, "rotation": [ 0, 0, 0, "XYZ" ], "scale": [ 1, 1, 1 ], "type": "Scene", "up": [ 0, 1, 0 ], "visible": true } }, "1ad24d722d9e4bee94b8f27d3db788c8": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "WebGLShadowMapModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "WebGLShadowMapModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "enabled": false, "type": "PCFShadowMap" } }, "1c090379b8b444bc939ad461faae49d6": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_1f878730ef9b47ae8928f4e0263ce5d2", "placeholder": "​", "style": "IPY_MODEL_b5ab6562d2a74fecac72001b39875c2e", "value": " 5000/5000 [03:28<00:00, 33.07it/s, loss=0.611]" } }, "1c434f0793934a709b4d5233440a170b": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "1c626e98e1a0446e8d70b53d74e0958f": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "1c81f0a67a3c42ada4b4f7ba51004c20": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "PointsMaterialModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "PointsMaterialModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "alphaTest": 0.5, "blendDst": "OneMinusSrcAlphaFactor", "blendDstAlpha": 0, "blendEquation": "AddEquation", "blendEquationAlpha": 0, "blendSrc": "SrcAlphaFactor", "blendSrcAlpha": 0, "blending": "NormalBlending", "clipIntersection": false, "clipShadows": false, "clippingPlanes": [], "color": "red", "colorWrite": true, "defines": null, "depthFunc": "LessEqualDepth", "depthTest": true, "depthWrite": true, "dithering": false, "flatShading": false, "fog": true, "lights": false, "map": "IPY_MODEL_32fcb6d5aae14d708c9257951e5b6b57", "morphTargets": false, "name": "", "opacity": 1, "overdraw": 0, "polygonOffset": false, "polygonOffsetFactor": 0, "polygonOffsetUnits": 0, "precision": null, "premultipliedAlpha": false, "shadowSide": null, "side": "FrontSide", "size": 2, "sizeAttenuation": true, "transparent": false, "type": "PointsMaterial", "vertexColors": "NoColors", "visible": true } }, "1f878730ef9b47ae8928f4e0263ce5d2": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "21cd72c937be45ffa1aa1ecd66565055": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "PerspectiveCameraModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "PerspectiveCameraModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "aspect": 1, "castShadow": false, "children": [ "IPY_MODEL_fb0e1201299146d0907726ba0a1671b8" ], "far": 2000, "focus": 342.99758039957504, "fov": 30, "frustumCulled": true, "matrix": [ 1, 0, 0, 0, 0, 1, -6.214703336382315e-17, 0, 0, 6.214703336382315e-17, 1, 0, 0.021650314331054688, 21.44474792480471, 342.955479493203, 1 ], "matrixAutoUpdate": true, "matrixWorld": [ 1, 0, 0, 0, 0, 1, -6.214703336382315e-17, 0, 0, 6.214703336382315e-17, 1, 0, 0.021650314331054688, 21.44474792480471, 342.955479493203, 1 ], "matrixWorldInverse": [ 1, 0, 0, 0, 0, 1, 6.214703336382315e-17, 0, 0, -6.214703336382315e-17, 1, 0, -0.021650314331054688, -21.444747924804688, -342.955479493203, 1 ], "matrixWorldNeedsUpdate": false, "modelViewMatrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "name": "", "near": 0.1, "normalMatrix": [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ], "position": [ 0.021650314331054688, 21.44474792480471, 342.955479493203 ], "projectionMatrix": [ 3.7320508075688776, 0, 0, 0, 0, 3.7320508075688776, 0, 0, 0, 0, -1.00010000500025, -1, 0, 0, -0.200010000500025, 0 ], "quaternion": [ -3.1073516681911577e-17, 0, 0, 1 ], "receiveShadow": false, "renderOrder": 0, "rotation": [ -6.214703336382315e-17, 0, 0, "XYZ" ], "scale": [ 1, 1, 1 ], "type": "PerspectiveCamera", "up": [ 0, 1, 0 ], "visible": true, "zoom": 1 } }, "21d7ca720cbd4564a2a5570807da4f53": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "SceneModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "SceneModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "autoUpdate": true, "background": "#ffffff", "castShadow": false, "children": [ "IPY_MODEL_44ac3e738dd14856b0c4ebac02c4a6d8", "IPY_MODEL_4b9f628316c9498fb32a6fc5adaa4def", "IPY_MODEL_cbd0be1818c14d56b3653a1ead09fcf5" ], "fog": null, "frustumCulled": true, "matrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixAutoUpdate": true, "matrixWorld": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixWorldNeedsUpdate": false, "modelViewMatrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "name": "", "normalMatrix": [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ], "overrideMaterial": null, "position": [ 0, 0, 0 ], "quaternion": [ 0, 0, 0, 1 ], "receiveShadow": false, "renderOrder": 0, "rotation": [ 0, 0, 0, "XYZ" ], "scale": [ 1, 1, 1 ], "type": "Scene", "up": [ 0, 1, 0 ], "visible": true } }, "2488a84fc9504a1aa25132ae8f0da227": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "OrbitControlsModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "OrbitControlsModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "autoRotate": false, "autoRotateSpeed": 2, "controlling": "IPY_MODEL_44ac3e738dd14856b0c4ebac02c4a6d8", "dampingFactor": 0.25, "enableDamping": false, "enableKeys": true, "enablePan": true, "enableRotate": true, "enableZoom": true, "enabled": true, "keyPanSpeed": 7, "maxAzimuthAngle": "inf", "maxDistance": "inf", "maxPolarAngle": 3.141592653589793, "maxZoom": "inf", "minAzimuthAngle": "-inf", "minDistance": 0, "minPolarAngle": 0, "minZoom": 0, "panSpeed": 1, "rotateSpeed": 1, "screenSpacePanning": true, "target": [ 19.5, 18.427691280841827, 15.430784910917282 ], "zoomSpeed": 1 } }, "260d4b9064bf4e7f8940f6fdb2db7e60": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "DirectionalLightModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "DirectionalLightModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "castShadow": false, "children": [], "color": "white", "frustumCulled": true, "intensity": 0.6, "matrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixAutoUpdate": true, "matrixWorld": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixWorldNeedsUpdate": true, "modelViewMatrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "name": "", "normalMatrix": [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ], "position": [ 19.56626734882593, 19.52610757946968, 118.34056146943013 ], "quaternion": [ 0, 0, 0, 1 ], "receiveShadow": false, "renderOrder": 0, "rotation": [ 0, 0, 0, "XYZ" ], "scale": [ 1, 1, 1 ], "shadow": "IPY_MODEL_f478e2f8-2fca-4eee-ae2f-4734e6e69eef", "target": "IPY_MODEL_5f27645a-777a-4976-bca4-9d56f8fea3d5", "type": "DirectionalLight", "up": [ 0, 1, 0 ], "visible": true } }, "26658e529d884939a63a46946fb3b6ed": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "28e2959b55e843a6888ef9b6237fb6c0": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "BufferGeometryModel", "state": { "MaxIndex": 65535, "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "BufferGeometryModel", "_ref_geometry": null, "_store_ref": false, "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "attributes": { "color": "IPY_MODEL_474056ac15dd4b3687dfd435a52ceca7", "index": "IPY_MODEL_48a99ce4d6e84123a293a091d5dc9bce", "position": "IPY_MODEL_0bd798a3dd084cb585a969b1fd106644" }, "index": null, "morphAttributes": {}, "name": "", "type": "BufferGeometry", "userData": {} } }, "29255944e05e486e97462a0f2df09fd1": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_5b63cd9c94534986a87d072788c6a3f5", "max": 10000, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_43661a3d263e48b0a10aab2c375fbb50", "value": 10000 } }, "2cf64c8ba4f446b38cc2b1f92922cb60": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "2eb48b41ecb94ef18aba4c9dce9fc3cd": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "WebGLShadowMapModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "WebGLShadowMapModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "enabled": false, "type": "PCFShadowMap" } }, "3038d1154fae492e8627438f9688abec": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_99f4e4ad068e4cb3b50a11aa6de8318a", "placeholder": "​", "style": "IPY_MODEL_122eff20624a459a9878a4d05b198504", "value": " 10000/10000 [01:24<00:00, 128.10it/s, loss=0.000689]" } }, "31793eea58c6499a9cf5c2e546b99100": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "BufferAttributeModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "BufferAttributeModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "array": { "dtype": "float32", "shape": [ 3177, 3 ] }, "dynamic": false, "needsUpdate": false, "normalized": true, "version": 1 } }, "32dc21c1ea6e460597628818270577d0": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "RendererModel", "state": { "_alpha": false, "_antialias": true, "_dom_classes": [], "_height": 600, "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "RendererModel", "_pause_autorender": false, "_view_count": null, "_view_module": "jupyter-threejs", "_view_module_version": "^2.4.1", "_view_name": "RendererView", "_webgl_version": 2, "_width": 600, "autoClear": true, "autoClearColor": true, "autoClearDepth": true, "autoClearStencil": true, "background": "black", "background_opacity": 1, "camera": "IPY_MODEL_f96246e78f1241d4a3bd704c5bce4122", "clearColor": "#000000", "clearOpacity": 1, "clippingPlanes": [], "controls": [ "IPY_MODEL_d20d3179ed2146b5896cff8e44d6a8e8" ], "gammaFactor": 2, "gammaInput": false, "gammaOutput": false, "layout": "IPY_MODEL_e7411a12b6e74aa38b8993650bb01f9a", "localClippingEnabled": false, "maxMorphNormals": 4, "maxMorphTargets": 8, "physicallyCorrectLights": false, "scene": "IPY_MODEL_15da18c8b43446e6858cb894cf0f9bca", "shadowMap": "IPY_MODEL_1ad24d722d9e4bee94b8f27d3db788c8", "sortObject": true, "toneMapping": "LinearToneMapping", "toneMappingExposure": 1, "toneMappingWhitePoint": 1 } }, "32fcb6d5aae14d708c9257951e5b6b57": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "DataTextureModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "DataTextureModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "anisotropy": 1, "data": { "dtype": "float32", "shape": [ 16, 16, 4 ] }, "encoding": "LinearEncoding", "flipY": false, "format": "RGBAFormat", "generateMipmaps": false, "magFilter": "NearestFilter", "mapping": "UVMapping", "minFilter": "NearestFilter", "name": "", "offset": [ 0, 0 ], "premultiplyAlpha": false, "repeat": [ 1, 1 ], "rotation": 0, "type": "FloatType", "unpackAlignment": 4, "version": 1, "wrapS": "ClampToEdgeWrapping", "wrapT": "ClampToEdgeWrapping" } }, "334daf4803474cf6a3d88c5c2fefdb49": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "WebGLShadowMapModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "WebGLShadowMapModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "enabled": false, "type": "PCFShadowMap" } }, "391b74dbf597484d894f4849f0cc0373": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "RendererModel", "state": { "_alpha": false, "_antialias": true, "_dom_classes": [], "_height": 600, "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "RendererModel", "_pause_autorender": false, "_view_count": null, "_view_module": "jupyter-threejs", "_view_module_version": "^2.4.1", "_view_name": "RendererView", "_webgl_version": 2, "_width": 600, "autoClear": true, "autoClearColor": true, "autoClearDepth": true, "autoClearStencil": true, "background": "black", "background_opacity": 1, "camera": "IPY_MODEL_73da99c3a634410489b3217005de4267", "clearColor": "#000000", "clearOpacity": 1, "clippingPlanes": [], "controls": [ "IPY_MODEL_09afb5addb254c8eaa57ba17c4a17f6c" ], "gammaFactor": 2, "gammaInput": false, "gammaOutput": false, "layout": "IPY_MODEL_58878c7d0deb48ffa0ed8ffa8c7efb76", "localClippingEnabled": false, "maxMorphNormals": 4, "maxMorphTargets": 8, "physicallyCorrectLights": false, "scene": "IPY_MODEL_dbd12d44ada7410581f4f9a0532556ae", "shadowMap": "IPY_MODEL_2eb48b41ecb94ef18aba4c9dce9fc3cd", "sortObject": true, "toneMapping": "LinearToneMapping", "toneMappingExposure": 1, "toneMappingWhitePoint": 1 } }, "43661a3d263e48b0a10aab2c375fbb50": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "44ac3e738dd14856b0c4ebac02c4a6d8": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "PerspectiveCameraModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "PerspectiveCameraModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "aspect": 1, "castShadow": false, "children": [ "IPY_MODEL_e341313ad08d4122b0165faec7573670" ], "far": 2000, "focus": 89.5249348114381, "fov": 30, "frustumCulled": true, "matrix": [ 1, 0, 0, 0, 0, 1, -7.936813774359969e-17, 0, 0, 7.936813774359969e-17, 1, 0, 19.5, 18.427691280841834, 104.95571972235538, 1 ], "matrixAutoUpdate": true, "matrixWorld": [ 1, 0, 0, 0, 0, 1, -7.936813774359969e-17, 0, 0, 7.936813774359969e-17, 1, 0, 19.5, 18.427691280841834, 104.95571972235538, 1 ], "matrixWorldInverse": [ 1, 0, 0, 0, 0, 1, 7.936813774359969e-17, 0, 0, -7.936813774359969e-17, 1, 0, -19.5, -18.427691280841827, -104.95571972235538, 1 ], "matrixWorldNeedsUpdate": false, "modelViewMatrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "name": "", "near": 0.1, "normalMatrix": [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ], "position": [ 20.382923435347532, -80.76347233687763, 14.883349187568955 ], "projectionMatrix": [ 3.7320508075688776, 0, 0, 0, 0, 3.7320508075688776, 0, 0, 0, 0, -1.00010000500025, -1, 0, 0, -0.200010000500025, 0 ], "quaternion": [ 0.3420855575716154, 0.6210771436875586, -0.6146064426147007, 0.34568710358693355 ], "receiveShadow": false, "renderOrder": 0, "rotation": [ -7.936813774359969e-17, 0, 0, "XYZ" ], "scale": [ 1, 1, 1 ], "type": "PerspectiveCamera", "up": [ 0, 1, 0 ], "visible": true, "zoom": 1 } }, "474056ac15dd4b3687dfd435a52ceca7": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "BufferAttributeModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "BufferAttributeModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "array": { "dtype": "float32", "shape": [ 6613, 3 ] }, "dynamic": false, "needsUpdate": false, "normalized": true, "version": 1 } }, "48a99ce4d6e84123a293a091d5dc9bce": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "BufferAttributeModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "BufferAttributeModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "array": { "dtype": "uint32", "shape": [ 39474 ] }, "dynamic": false, "needsUpdate": false, "normalized": false, "version": 1 } }, "492ff3d421e346a08c14ffcfe5936ed4": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "49da82c6bb59404ab91092e0d87c12d7": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "DirectionalLightModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "DirectionalLightModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "castShadow": false, "children": [], "color": "white", "frustumCulled": true, "intensity": 0.6, "matrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixAutoUpdate": true, "matrixWorld": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixWorldNeedsUpdate": true, "modelViewMatrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "name": "", "normalMatrix": [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ], "position": [ 18.959218978881836, 16.47233337163925, 98.343185685602 ], "quaternion": [ 0, 0, 0, 1 ], "receiveShadow": false, "renderOrder": 0, "rotation": [ 0, 0, 0, "XYZ" ], "scale": [ 1, 1, 1 ], "shadow": "IPY_MODEL_dfc72145-e8bb-41a2-9750-35bac5393df0", "target": "IPY_MODEL_a4212ac4-2852-469f-8fe0-c8ab0e4347b3", "type": "DirectionalLight", "up": [ 0, 1, 0 ], "visible": true } }, "4a39316fe18743639eae95ae2512c320": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "4b9f628316c9498fb32a6fc5adaa4def": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "AmbientLightModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "AmbientLightModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "castShadow": false, "children": [], "color": "#ffffff", "frustumCulled": true, "intensity": 0.5, "matrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixAutoUpdate": true, "matrixWorld": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixWorldNeedsUpdate": false, "modelViewMatrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "name": "", "normalMatrix": [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ], "position": [ 0, 0, 0 ], "quaternion": [ 0, 0, 0, 1 ], "receiveShadow": false, "renderOrder": 0, "rotation": [ 0, 0, 0, "XYZ" ], "scale": [ 1, 1, 1 ], "type": "AmbientLight", "up": [ 0, 1, 0 ], "visible": true } }, "4d0f56e67ff14eba9aad0fc176f4e719": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "BufferAttributeModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "BufferAttributeModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "array": { "dtype": "float32", "shape": [ 4780, 3 ] }, "dynamic": false, "needsUpdate": false, "normalized": true, "version": 1 } }, "529ddc48de0941bbbfff3d70615ff8d3": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "580bfdbf3d91487593d7075061a2dd85": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_c6afaf3678374b0fb25ff3dfd9b9b9f5", "max": 5000, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_5adb54f552ee4641bc9a8005dcc6331b", "value": 5000 } }, "58878c7d0deb48ffa0ed8ffa8c7efb76": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "5adb54f552ee4641bc9a8005dcc6331b": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "5b63cd9c94534986a87d072788c6a3f5": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "5cf9d8a7f8244396b95182325f948b20": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "BufferGeometryModel", "state": { "MaxIndex": 65535, "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "BufferGeometryModel", "_ref_geometry": null, "_store_ref": false, "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "attributes": { "color": "IPY_MODEL_31793eea58c6499a9cf5c2e546b99100", "index": "IPY_MODEL_e214829b89954685acf6c145ed2f2ca0", "position": "IPY_MODEL_096cb49fc65448e7bef6e949e98071a3" }, "index": null, "morphAttributes": {}, "name": "", "type": "BufferGeometry", "userData": {} } }, "6aa4f2df540342328a880e5761a52850": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "AmbientLightModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "AmbientLightModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "castShadow": false, "children": [], "color": "#ffffff", "frustumCulled": true, "intensity": 0.5, "matrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixAutoUpdate": true, "matrixWorld": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixWorldNeedsUpdate": false, "modelViewMatrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "name": "", "normalMatrix": [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ], "position": [ 0, 0, 0 ], "quaternion": [ 0, 0, 0, 1 ], "receiveShadow": false, "renderOrder": 0, "rotation": [ 0, 0, 0, "XYZ" ], "scale": [ 1, 1, 1 ], "type": "AmbientLight", "up": [ 0, 1, 0 ], "visible": true } }, "6b8801d6968a4dc8a599e286bad8e156": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "BufferGeometryModel", "state": { "MaxIndex": 65535, "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "BufferGeometryModel", "_ref_geometry": null, "_store_ref": false, "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "attributes": { "color": "IPY_MODEL_9e390bb2a45045a0bea292300d4422b5", "index": "IPY_MODEL_8a8db73d67154ce5bd44bbeb846d7359", "position": "IPY_MODEL_927def9a13a14f00a008e7765fb9dd78" }, "index": null, "morphAttributes": {}, "name": "", "type": "BufferGeometry", "userData": {} } }, "6bc487dc19884862a2d7412d87d04e54": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "6bc9b2fd29294397bfaa45ef111de96f": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "BufferAttributeModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "BufferAttributeModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "array": { "dtype": "float32", "shape": [ 4780, 3 ] }, "dynamic": false, "needsUpdate": false, "normalized": false, "version": 1 } }, "7291c1b7d2ca4391958376561a2e8d51": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "BufferGeometryModel", "state": { "MaxIndex": 65535, "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "BufferGeometryModel", "_ref_geometry": null, "_store_ref": false, "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "attributes": { "color": "IPY_MODEL_4d0f56e67ff14eba9aad0fc176f4e719", "index": "IPY_MODEL_f6ddac9617d14a3995ef687f28439061", "position": "IPY_MODEL_6bc9b2fd29294397bfaa45ef111de96f" }, "index": null, "morphAttributes": {}, "name": "", "type": "BufferGeometry", "userData": {} } }, "72d26aede05b4fe4bea5f10ff85dc31f": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_8c004aa288324b8c8617fbc423480388", "IPY_MODEL_e6c32731ffd94a6f995b0ed0b6b1ffd0", "IPY_MODEL_1c090379b8b444bc939ad461faae49d6" ], "layout": "IPY_MODEL_1c434f0793934a709b4d5233440a170b" } }, "73da99c3a634410489b3217005de4267": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "PerspectiveCameraModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "PerspectiveCameraModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "aspect": 1, "castShadow": false, "children": [ "IPY_MODEL_260d4b9064bf4e7f8940f6fdb2db7e60" ], "far": 2000, "focus": 99.64284761750142, "fov": 30, "frustumCulled": true, "matrix": [ 1, 0, 0, 0, 0, 1, -7.130895520847192e-17, 0, 0, 7.130895520847192e-17, 1, 0, 19.56626734882593, 19.526107579469688, 118.34056146943013, 1 ], "matrixAutoUpdate": true, "matrixWorld": [ 1, 0, 0, 0, 0, 1, -7.130895520847192e-17, 0, 0, 7.130895520847192e-17, 1, 0, 19.56626734882593, 19.526107579469688, 118.34056146943013, 1 ], "matrixWorldInverse": [ 1, 0, 0, 0, 0, 1, 7.130895520847192e-17, 0, 0, -7.130895520847192e-17, 1, 0, -19.56626734882593, -19.52610757946968, -118.34056146943013, 1 ], "matrixWorldNeedsUpdate": false, "modelViewMatrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "name": "", "near": 0.1, "normalMatrix": [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ], "position": [ 19.56626734882593, 19.526107579469688, 118.34056146943013 ], "projectionMatrix": [ 3.7320508075688776, 0, 0, 0, 0, 3.7320508075688776, 0, 0, 0, 0, -1.00010000500025, -1, 0, 0, -0.200010000500025, 0 ], "quaternion": [ -3.565447760423596e-17, 0, 0, 1 ], "receiveShadow": false, "renderOrder": 0, "rotation": [ -7.130895520847192e-17, 0, 0, "XYZ" ], "scale": [ 1, 1, 1 ], "type": "PerspectiveCamera", "up": [ 0, 1, 0 ], "visible": true, "zoom": 1 } }, "7595d1d2d56640ad8a2b028d0af270f9": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_ef4250deb7be4c5db17a28dc05566477", "IPY_MODEL_580bfdbf3d91487593d7075061a2dd85", "IPY_MODEL_de9fe104a3bf4d968e0b2a14fec64d3f" ], "layout": "IPY_MODEL_4a39316fe18743639eae95ae2512c320" } }, "7c6c112f72ad4c05b603165b08978430": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "PointsModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "PointsModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "castShadow": false, "children": [], "frustumCulled": true, "geometry": "IPY_MODEL_049c3d700d6e44a58fa1fb5198eb475b", "material": "IPY_MODEL_1c81f0a67a3c42ada4b4f7ba51004c20", "matrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixAutoUpdate": true, "matrixWorld": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixWorldNeedsUpdate": false, "modelViewMatrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "name": "", "normalMatrix": [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ], "position": [ 0, 0, 0 ], "quaternion": [ 0, 0, 0, 1 ], "receiveShadow": false, "renderOrder": 0, "rotation": [ 0, 0, 0, "XYZ" ], "scale": [ 1, 1, 1 ], "type": "Points", "up": [ 0, 1, 0 ], "visible": true } }, "815fe0bfb3334b5ca394a067456dcc23": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "MeshStandardMaterialModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "MeshStandardMaterialModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "alphaMap": null, "alphaTest": 0, "aoMap": null, "aoMapIntensity": 1, "blendDst": "OneMinusSrcAlphaFactor", "blendDstAlpha": 0, "blendEquation": "AddEquation", "blendEquationAlpha": 0, "blendSrc": "SrcAlphaFactor", "blendSrcAlpha": 0, "blending": "NormalBlending", "bumpMap": null, "bumpScale": 1, "clipIntersection": false, "clipShadows": false, "clippingPlanes": [], "color": "#ffffff", "colorWrite": true, "defines": { "STANDARD": "" }, "depthFunc": "LessEqualDepth", "depthTest": true, "depthWrite": true, "displacementBias": 0, "displacementMap": null, "displacementScale": 1, "dithering": false, "emissive": "#000000", "emissiveIntensity": 1, "emissiveMap": null, "envMap": null, "envMapIntensity": 1, "flatShading": true, "fog": true, "lightMap": null, "lightMapIntensity": 1, "lights": true, "map": null, "metalness": 0.25, "metalnessMap": null, "morphNormals": false, "morphTargets": false, "name": "", "normalMap": null, "normalScale": [ 1, 1 ], "opacity": 1, "overdraw": 0, "polygonOffset": true, "polygonOffsetFactor": 1, "polygonOffsetUnits": 5, "precision": null, "premultipliedAlpha": false, "refractionRatio": 0.98, "roughness": 0.5, "roughnessMap": null, "shadowSide": null, "side": "DoubleSide", "skinning": false, "transparent": false, "type": "MeshStandardMaterial", "vertexColors": "VertexColors", "visible": true, "wireframe": false, "wireframeLinecap": "round", "wireframeLinejoin": "round", "wireframeLinewidth": 1 } }, "816c6ca394f945e99612d29c4504b9d6": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "RendererModel", "state": { "_alpha": false, "_antialias": true, "_dom_classes": [], "_height": 600, "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "RendererModel", "_pause_autorender": false, "_view_count": null, "_view_module": "jupyter-threejs", "_view_module_version": "^2.4.1", "_view_name": "RendererView", "_webgl_version": 2, "_width": 600, "autoClear": true, "autoClearColor": true, "autoClearDepth": true, "autoClearStencil": true, "background": "black", "background_opacity": 1, "camera": "IPY_MODEL_44ac3e738dd14856b0c4ebac02c4a6d8", "clearColor": "#000000", "clearOpacity": 1, "clippingPlanes": [], "controls": [ "IPY_MODEL_2488a84fc9504a1aa25132ae8f0da227" ], "gammaFactor": 2, "gammaInput": false, "gammaOutput": false, "layout": "IPY_MODEL_c399d60303c341e8bb6325c860ab4959", "localClippingEnabled": false, "maxMorphNormals": 4, "maxMorphTargets": 8, "physicallyCorrectLights": false, "scene": "IPY_MODEL_21d7ca720cbd4564a2a5570807da4f53", "shadowMap": "IPY_MODEL_d33f6725b97c40b594d90b8470126b85", "sortObject": true, "toneMapping": "LinearToneMapping", "toneMappingExposure": 1, "toneMappingWhitePoint": 1 } }, "85b7741de559492ea0b0ee731b808ee8": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "OrbitControlsModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "OrbitControlsModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "autoRotate": false, "autoRotateSpeed": 2, "controlling": "IPY_MODEL_21cd72c937be45ffa1aa1ecd66565055", "dampingFactor": 0.25, "enableDamping": false, "enableKeys": true, "enablePan": true, "enableRotate": true, "enableZoom": true, "enabled": true, "keyPanSpeed": 7, "maxAzimuthAngle": "inf", "maxDistance": "inf", "maxPolarAngle": 3.141592653589793, "maxZoom": "inf", "minAzimuthAngle": "-inf", "minDistance": 0, "minPolarAngle": 0, "minZoom": 0, "panSpeed": 1, "rotateSpeed": 1, "screenSpacePanning": true, "target": [ 0.021650314331054688, 21.444747924804688, -0.04210090637207031 ], "zoomSpeed": 1 } }, "8884a15509704f418e3baf747c978f21": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "AmbientLightModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "AmbientLightModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "castShadow": false, "children": [], "color": "#ffffff", "frustumCulled": true, "intensity": 0.5, "matrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixAutoUpdate": true, "matrixWorld": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixWorldNeedsUpdate": false, "modelViewMatrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "name": "", "normalMatrix": [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ], "position": [ 0, 0, 0 ], "quaternion": [ 0, 0, 0, 1 ], "receiveShadow": false, "renderOrder": 0, "rotation": [ 0, 0, 0, "XYZ" ], "scale": [ 1, 1, 1 ], "type": "AmbientLight", "up": [ 0, 1, 0 ], "visible": true } }, "8a8db73d67154ce5bd44bbeb846d7359": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "BufferAttributeModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "BufferAttributeModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "array": { "dtype": "uint32", "shape": [ 20022 ] }, "dynamic": false, "needsUpdate": false, "normalized": false, "version": 1 } }, "8c004aa288324b8c8617fbc423480388": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_529ddc48de0941bbbfff3d70615ff8d3", "placeholder": "​", "style": "IPY_MODEL_6bc487dc19884862a2d7412d87d04e54", "value": "Training: 100%" } }, "8ce06bf5a67840f79c0d6bde734f2ed4": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_c4b4dfc8c710402bbcdbb44e506f7823", "IPY_MODEL_29255944e05e486e97462a0f2df09fd1", "IPY_MODEL_3038d1154fae492e8627438f9688abec" ], "layout": "IPY_MODEL_aa3d93019f41449a96ca8b627bba409f" } }, "927def9a13a14f00a008e7765fb9dd78": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "BufferAttributeModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "BufferAttributeModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "array": { "dtype": "float32", "shape": [ 3372, 3 ] }, "dynamic": false, "needsUpdate": false, "normalized": false, "version": 1 } }, "94f637204a8847d5aa63c6cbba1d9584": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "95271048ab31446b9402bf0aeda5b24d": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "96642999f3d84e48b06360efda7b7d53": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "MeshStandardMaterialModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "MeshStandardMaterialModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "alphaMap": null, "alphaTest": 0, "aoMap": null, "aoMapIntensity": 1, "blendDst": "OneMinusSrcAlphaFactor", "blendDstAlpha": 0, "blendEquation": "AddEquation", "blendEquationAlpha": 0, "blendSrc": "SrcAlphaFactor", "blendSrcAlpha": 0, "blending": "NormalBlending", "bumpMap": null, "bumpScale": 1, "clipIntersection": false, "clipShadows": false, "clippingPlanes": [], "color": "#ffffff", "colorWrite": true, "defines": { "STANDARD": "" }, "depthFunc": "LessEqualDepth", "depthTest": true, "depthWrite": true, "displacementBias": 0, "displacementMap": null, "displacementScale": 1, "dithering": false, "emissive": "#000000", "emissiveIntensity": 1, "emissiveMap": null, "envMap": null, "envMapIntensity": 1, "flatShading": true, "fog": true, "lightMap": null, "lightMapIntensity": 1, "lights": true, "map": null, "metalness": 0.25, "metalnessMap": null, "morphNormals": false, "morphTargets": false, "name": "", "normalMap": null, "normalScale": [ 1, 1 ], "opacity": 1, "overdraw": 0, "polygonOffset": true, "polygonOffsetFactor": 1, "polygonOffsetUnits": 5, "precision": null, "premultipliedAlpha": false, "refractionRatio": 0.98, "roughness": 0.5, "roughnessMap": null, "shadowSide": null, "side": "DoubleSide", "skinning": false, "transparent": false, "type": "MeshStandardMaterial", "vertexColors": "VertexColors", "visible": true, "wireframe": false, "wireframeLinecap": "round", "wireframeLinejoin": "round", "wireframeLinewidth": 1 } }, "99f4e4ad068e4cb3b50a11aa6de8318a": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "9e390bb2a45045a0bea292300d4422b5": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "BufferAttributeModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "BufferAttributeModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "array": { "dtype": "float32", "shape": [ 3372, 3 ] }, "dynamic": false, "needsUpdate": false, "normalized": true, "version": 1 } }, "a0d23a848b0149c7a86c7241181fee9b": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "RendererModel", "state": { "_alpha": false, "_antialias": true, "_dom_classes": [], "_height": 600, "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "RendererModel", "_pause_autorender": false, "_view_count": null, "_view_module": "jupyter-threejs", "_view_module_version": "^2.4.1", "_view_name": "RendererView", "_webgl_version": 2, "_width": 600, "autoClear": true, "autoClearColor": true, "autoClearDepth": true, "autoClearStencil": true, "background": "black", "background_opacity": 1, "camera": "IPY_MODEL_21cd72c937be45ffa1aa1ecd66565055", "clearColor": "#000000", "clearOpacity": 1, "clippingPlanes": [], "controls": [ "IPY_MODEL_85b7741de559492ea0b0ee731b808ee8" ], "gammaFactor": 2, "gammaInput": false, "gammaOutput": false, "layout": "IPY_MODEL_e18fcaef8e8f439f829be72913b09838", "localClippingEnabled": false, "maxMorphNormals": 4, "maxMorphTargets": 8, "physicallyCorrectLights": false, "scene": "IPY_MODEL_a40304a01ddc452e89133e17c21c09ab", "shadowMap": "IPY_MODEL_ba57353533c047878b8d58e10d940aa3", "sortObject": true, "toneMapping": "LinearToneMapping", "toneMappingExposure": 1, "toneMappingWhitePoint": 1 } }, "a40304a01ddc452e89133e17c21c09ab": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "SceneModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "SceneModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "autoUpdate": true, "background": "#ffffff", "castShadow": false, "children": [ "IPY_MODEL_21cd72c937be45ffa1aa1ecd66565055", "IPY_MODEL_bc4b6d21503f492c9f8d785886144744", "IPY_MODEL_7c6c112f72ad4c05b603165b08978430" ], "fog": null, "frustumCulled": true, "matrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixAutoUpdate": true, "matrixWorld": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixWorldNeedsUpdate": false, "modelViewMatrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "name": "", "normalMatrix": [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ], "overrideMaterial": null, "position": [ 0, 0, 0 ], "quaternion": [ 0, 0, 0, 1 ], "receiveShadow": false, "renderOrder": 0, "rotation": [ 0, 0, 0, "XYZ" ], "scale": [ 1, 1, 1 ], "type": "Scene", "up": [ 0, 1, 0 ], "visible": true } }, "aa3d93019f41449a96ca8b627bba409f": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "af00878bc86e4811880053a056956e85": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "MeshModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "MeshModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "castShadow": false, "children": [], "drawMode": "TrianglesDrawMode", "frustumCulled": true, "geometry": "IPY_MODEL_7291c1b7d2ca4391958376561a2e8d51", "material": "IPY_MODEL_c2b1122c8cd640fcb0e9c4ca80674e8f", "matrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixAutoUpdate": true, "matrixWorld": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixWorldNeedsUpdate": false, "modelViewMatrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "morphTargetInfluences": [], "name": "", "normalMatrix": [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ], "position": [ 0, 0, 0 ], "quaternion": [ 0, 0, 0, 1 ], "receiveShadow": false, "renderOrder": 0, "rotation": [ 0, 0, 0, "XYZ" ], "scale": [ 1, 1, 1 ], "type": "Mesh", "up": [ 0, 1, 0 ], "visible": true } }, "b5ab6562d2a74fecac72001b39875c2e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "b5c05ae02b624062839e62062271caba": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "MeshStandardMaterialModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "MeshStandardMaterialModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "alphaMap": null, "alphaTest": 0, "aoMap": null, "aoMapIntensity": 1, "blendDst": "OneMinusSrcAlphaFactor", "blendDstAlpha": 0, "blendEquation": "AddEquation", "blendEquationAlpha": 0, "blendSrc": "SrcAlphaFactor", "blendSrcAlpha": 0, "blending": "NormalBlending", "bumpMap": null, "bumpScale": 1, "clipIntersection": false, "clipShadows": false, "clippingPlanes": [], "color": "#ffffff", "colorWrite": true, "defines": { "STANDARD": "" }, "depthFunc": "LessEqualDepth", "depthTest": true, "depthWrite": true, "displacementBias": 0, "displacementMap": null, "displacementScale": 1, "dithering": false, "emissive": "#000000", "emissiveIntensity": 1, "emissiveMap": null, "envMap": null, "envMapIntensity": 1, "flatShading": true, "fog": true, "lightMap": null, "lightMapIntensity": 1, "lights": true, "map": null, "metalness": 0.25, "metalnessMap": null, "morphNormals": false, "morphTargets": false, "name": "", "normalMap": null, "normalScale": [ 1, 1 ], "opacity": 1, "overdraw": 0, "polygonOffset": true, "polygonOffsetFactor": 1, "polygonOffsetUnits": 5, "precision": null, "premultipliedAlpha": false, "refractionRatio": 0.98, "roughness": 0.5, "roughnessMap": null, "shadowSide": null, "side": "DoubleSide", "skinning": false, "transparent": false, "type": "MeshStandardMaterial", "vertexColors": "VertexColors", "visible": true, "wireframe": false, "wireframeLinecap": "round", "wireframeLinejoin": "round", "wireframeLinewidth": 1 } }, "ba57353533c047878b8d58e10d940aa3": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "WebGLShadowMapModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "WebGLShadowMapModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "enabled": false, "type": "PCFShadowMap" } }, "bc4b6d21503f492c9f8d785886144744": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "AmbientLightModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "AmbientLightModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "castShadow": false, "children": [], "color": "#ffffff", "frustumCulled": true, "intensity": 0.5, "matrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixAutoUpdate": true, "matrixWorld": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixWorldNeedsUpdate": false, "modelViewMatrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "name": "", "normalMatrix": [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ], "position": [ 0, 0, 0 ], "quaternion": [ 0, 0, 0, 1 ], "receiveShadow": false, "renderOrder": 0, "rotation": [ 0, 0, 0, "XYZ" ], "scale": [ 1, 1, 1 ], "type": "AmbientLight", "up": [ 0, 1, 0 ], "visible": true } }, "bf4c052432734190aaafdf37332d6075": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "BufferAttributeModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "BufferAttributeModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "array": { "dtype": "float32", "shape": [ 208145, 3 ] }, "dynamic": false, "needsUpdate": false, "normalized": false, "version": 1 } }, "c2b1122c8cd640fcb0e9c4ca80674e8f": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "MeshStandardMaterialModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "MeshStandardMaterialModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "alphaMap": null, "alphaTest": 0, "aoMap": null, "aoMapIntensity": 1, "blendDst": "OneMinusSrcAlphaFactor", "blendDstAlpha": 0, "blendEquation": "AddEquation", "blendEquationAlpha": 0, "blendSrc": "SrcAlphaFactor", "blendSrcAlpha": 0, "blending": "NormalBlending", "bumpMap": null, "bumpScale": 1, "clipIntersection": false, "clipShadows": false, "clippingPlanes": [], "color": "#ffffff", "colorWrite": true, "defines": { "STANDARD": "" }, "depthFunc": "LessEqualDepth", "depthTest": true, "depthWrite": true, "displacementBias": 0, "displacementMap": null, "displacementScale": 1, "dithering": false, "emissive": "#000000", "emissiveIntensity": 1, "emissiveMap": null, "envMap": null, "envMapIntensity": 1, "flatShading": true, "fog": true, "lightMap": null, "lightMapIntensity": 1, "lights": true, "map": null, "metalness": 0.25, "metalnessMap": null, "morphNormals": false, "morphTargets": false, "name": "", "normalMap": null, "normalScale": [ 1, 1 ], "opacity": 1, "overdraw": 0, "polygonOffset": true, "polygonOffsetFactor": 1, "polygonOffsetUnits": 5, "precision": null, "premultipliedAlpha": false, "refractionRatio": 0.98, "roughness": 0.5, "roughnessMap": null, "shadowSide": null, "side": "DoubleSide", "skinning": false, "transparent": false, "type": "MeshStandardMaterial", "vertexColors": "VertexColors", "visible": true, "wireframe": false, "wireframeLinecap": "round", "wireframeLinejoin": "round", "wireframeLinewidth": 1 } }, "c399d60303c341e8bb6325c860ab4959": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "c4b4dfc8c710402bbcdbb44e506f7823": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_94f637204a8847d5aa63c6cbba1d9584", "placeholder": "​", "style": "IPY_MODEL_c83dae32f44448d187d3f27406846808", "value": "Training: 100%" } }, "c6340c75041b460c8440f20699d7b6cb": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "SceneModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "SceneModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "autoUpdate": true, "background": "#ffffff", "castShadow": false, "children": [ "IPY_MODEL_fd86e89f2ae34840930e97b98257ee2d", "IPY_MODEL_6aa4f2df540342328a880e5761a52850", "IPY_MODEL_c6be0df512eb4da7af5e218b862fd1ae" ], "fog": null, "frustumCulled": true, "matrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixAutoUpdate": true, "matrixWorld": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixWorldNeedsUpdate": false, "modelViewMatrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "name": "", "normalMatrix": [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ], "overrideMaterial": null, "position": [ 0, 0, 0 ], "quaternion": [ 0, 0, 0, 1 ], "receiveShadow": false, "renderOrder": 0, "rotation": [ 0, 0, 0, "XYZ" ], "scale": [ 1, 1, 1 ], "type": "Scene", "up": [ 0, 1, 0 ], "visible": true } }, "c6afaf3678374b0fb25ff3dfd9b9b9f5": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "c6be0df512eb4da7af5e218b862fd1ae": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "MeshModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "MeshModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "castShadow": false, "children": [], "drawMode": "TrianglesDrawMode", "frustumCulled": true, "geometry": "IPY_MODEL_6b8801d6968a4dc8a599e286bad8e156", "material": "IPY_MODEL_815fe0bfb3334b5ca394a067456dcc23", "matrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixAutoUpdate": true, "matrixWorld": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixWorldNeedsUpdate": false, "modelViewMatrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "morphTargetInfluences": [], "name": "", "normalMatrix": [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ], "position": [ 0, 0, 0 ], "quaternion": [ 0, 0, 0, 1 ], "receiveShadow": false, "renderOrder": 0, "rotation": [ 0, 0, 0, "XYZ" ], "scale": [ 1, 1, 1 ], "type": "Mesh", "up": [ 0, 1, 0 ], "visible": true } }, "c83dae32f44448d187d3f27406846808": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "cbd0be1818c14d56b3653a1ead09fcf5": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "MeshModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "MeshModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "castShadow": false, "children": [], "drawMode": "TrianglesDrawMode", "frustumCulled": true, "geometry": "IPY_MODEL_28e2959b55e843a6888ef9b6237fb6c0", "material": "IPY_MODEL_b5c05ae02b624062839e62062271caba", "matrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixAutoUpdate": true, "matrixWorld": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixWorldNeedsUpdate": false, "modelViewMatrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "morphTargetInfluences": [], "name": "", "normalMatrix": [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ], "position": [ 0, 0, 0 ], "quaternion": [ 0, 0, 0, 1 ], "receiveShadow": false, "renderOrder": 0, "rotation": [ 0, 0, 0, "XYZ" ], "scale": [ 1, 1, 1 ], "type": "Mesh", "up": [ 0, 1, 0 ], "visible": true } }, "d20d3179ed2146b5896cff8e44d6a8e8": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "OrbitControlsModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "OrbitControlsModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "autoRotate": false, "autoRotateSpeed": 2, "controlling": "IPY_MODEL_f96246e78f1241d4a3bd704c5bce4122", "dampingFactor": 0.25, "enableDamping": false, "enableKeys": true, "enablePan": true, "enableRotate": true, "enableZoom": true, "enabled": true, "keyPanSpeed": 7, "maxAzimuthAngle": "inf", "maxDistance": "inf", "maxPolarAngle": 3.141592653589793, "maxZoom": "inf", "minAzimuthAngle": "-inf", "minDistance": 0, "minPolarAngle": 0, "minZoom": 0, "panSpeed": 1, "rotateSpeed": 1, "screenSpacePanning": true, "target": [ 18.959218978881836, 16.47233337163925, 15.032747089862823 ], "zoomSpeed": 1 } }, "d33f6725b97c40b594d90b8470126b85": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "WebGLShadowMapModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "WebGLShadowMapModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "enabled": false, "type": "PCFShadowMap" } }, "d71b0598ce5f4be1bf75021d13826ff1": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "dbd12d44ada7410581f4f9a0532556ae": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "SceneModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "SceneModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "autoUpdate": true, "background": "#ffffff", "castShadow": false, "children": [ "IPY_MODEL_73da99c3a634410489b3217005de4267", "IPY_MODEL_8884a15509704f418e3baf747c978f21", "IPY_MODEL_af00878bc86e4811880053a056956e85" ], "fog": null, "frustumCulled": true, "matrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixAutoUpdate": true, "matrixWorld": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixWorldNeedsUpdate": false, "modelViewMatrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "name": "", "normalMatrix": [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ], "overrideMaterial": null, "position": [ 0, 0, 0 ], "quaternion": [ 0, 0, 0, 1 ], "receiveShadow": false, "renderOrder": 0, "rotation": [ 0, 0, 0, "XYZ" ], "scale": [ 1, 1, 1 ], "type": "Scene", "up": [ 0, 1, 0 ], "visible": true } }, "de9fe104a3bf4d968e0b2a14fec64d3f": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_1533304550944d8d95be6c339fc5f52c", "placeholder": "​", "style": "IPY_MODEL_26658e529d884939a63a46946fb3b6ed", "value": " 5000/5000 [02:08<00:00, 64.48it/s, loss=0.000423]" } }, "e18fcaef8e8f439f829be72913b09838": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "e214829b89954685acf6c145ed2f2ca0": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "BufferAttributeModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "BufferAttributeModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "array": { "dtype": "uint32", "shape": [ 18864 ] }, "dynamic": false, "needsUpdate": false, "normalized": false, "version": 1 } }, "e341313ad08d4122b0165faec7573670": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "DirectionalLightModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "DirectionalLightModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "castShadow": false, "children": [], "color": "white", "frustumCulled": true, "intensity": 0.6, "matrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixAutoUpdate": true, "matrixWorld": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixWorldNeedsUpdate": true, "modelViewMatrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "name": "", "normalMatrix": [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ], "position": [ 19.5, 18.427691280841827, 104.95571972235538 ], "quaternion": [ 0, 0, 0, 1 ], "receiveShadow": false, "renderOrder": 0, "rotation": [ 0, 0, 0, "XYZ" ], "scale": [ 1, 1, 1 ], "shadow": "IPY_MODEL_57412789-c56b-4d0c-b561-33ca19160cd4", "target": "IPY_MODEL_db90d448-a8f1-4067-904d-c535f2b8c0f1", "type": "DirectionalLight", "up": [ 0, 1, 0 ], "visible": true } }, "e5b98d80b35c4ea4afc5a349a33dd33d": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "MeshModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "MeshModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "castShadow": false, "children": [], "drawMode": "TrianglesDrawMode", "frustumCulled": true, "geometry": "IPY_MODEL_5cf9d8a7f8244396b95182325f948b20", "material": "IPY_MODEL_96642999f3d84e48b06360efda7b7d53", "matrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixAutoUpdate": true, "matrixWorld": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixWorldNeedsUpdate": false, "modelViewMatrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "morphTargetInfluences": [], "name": "", "normalMatrix": [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ], "position": [ 0, 0, 0 ], "quaternion": [ 0, 0, 0, 1 ], "receiveShadow": false, "renderOrder": 0, "rotation": [ 0, 0, 0, "XYZ" ], "scale": [ 1, 1, 1 ], "type": "Mesh", "up": [ 0, 1, 0 ], "visible": true } }, "e6c32731ffd94a6f995b0ed0b6b1ffd0": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_95271048ab31446b9402bf0aeda5b24d", "max": 5000, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_492ff3d421e346a08c14ffcfe5936ed4", "value": 5000 } }, "e7411a12b6e74aa38b8993650bb01f9a": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "e78d9c9c6024421d8ebf899dfe9ed253": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "RendererModel", "state": { "_alpha": false, "_antialias": true, "_dom_classes": [], "_height": 600, "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "RendererModel", "_pause_autorender": false, "_view_count": null, "_view_module": "jupyter-threejs", "_view_module_version": "^2.4.1", "_view_name": "RendererView", "_webgl_version": 2, "_width": 600, "autoClear": true, "autoClearColor": true, "autoClearDepth": true, "autoClearStencil": true, "background": "black", "background_opacity": 1, "camera": "IPY_MODEL_fd86e89f2ae34840930e97b98257ee2d", "clearColor": "#000000", "clearOpacity": 1, "clippingPlanes": [], "controls": [ "IPY_MODEL_00eb5a564a8142fd8aaa5a1bfe279867" ], "gammaFactor": 2, "gammaInput": false, "gammaOutput": false, "layout": "IPY_MODEL_2cf64c8ba4f446b38cc2b1f92922cb60", "localClippingEnabled": false, "maxMorphNormals": 4, "maxMorphTargets": 8, "physicallyCorrectLights": false, "scene": "IPY_MODEL_c6340c75041b460c8440f20699d7b6cb", "shadowMap": "IPY_MODEL_334daf4803474cf6a3d88c5c2fefdb49", "sortObject": true, "toneMapping": "LinearToneMapping", "toneMappingExposure": 1, "toneMappingWhitePoint": 1 } }, "ef4250deb7be4c5db17a28dc05566477": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_1c626e98e1a0446e8d70b53d74e0958f", "placeholder": "​", "style": "IPY_MODEL_d71b0598ce5f4be1bf75021d13826ff1", "value": "Training: 100%" } }, "f6ddac9617d14a3995ef687f28439061": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "BufferAttributeModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "BufferAttributeModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "array": { "dtype": "uint32", "shape": [ 28668 ] }, "dynamic": false, "needsUpdate": false, "normalized": false, "version": 1 } }, "f96246e78f1241d4a3bd704c5bce4122": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "PerspectiveCameraModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "PerspectiveCameraModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "aspect": 1, "castShadow": false, "children": [ "IPY_MODEL_49da82c6bb59404ab91092e0d87c12d7" ], "far": 2000, "focus": 83.31043859573917, "fov": 30, "frustumCulled": true, "matrix": [ 1, 0, 0, 0, 0, 1, -4.264428010083962e-17, 0, 0, 4.264428010083962e-17, 1, 0, 18.959218978881836, 16.472333371639255, 98.343185685602, 1 ], "matrixAutoUpdate": true, "matrixWorld": [ 1, 0, 0, 0, 0, 1, -4.264428010083962e-17, 0, 0, 4.264428010083962e-17, 1, 0, 18.959218978881836, 16.472333371639255, 98.343185685602, 1 ], "matrixWorldInverse": [ 1, 0, 0, 0, 0, 1, 4.264428010083962e-17, 0, 0, -4.264428010083962e-17, 1, 0, -18.959218978881836, -16.47233337163925, -98.343185685602, 1 ], "matrixWorldNeedsUpdate": false, "modelViewMatrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "name": "", "near": 0.1, "normalMatrix": [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ], "position": [ 31.831329090400175, -65.0175895768844, 26.622847095258457 ], "projectionMatrix": [ 3.7320508075688776, 0, 0, 0, 0, 3.7320508075688776, 0, 0, 0, 0, -1.00010000500025, -1, 0, 0, -0.200010000500025, 0 ], "quaternion": [ 0.5749131396136554, 0.31609361153197446, -0.2559678212822491, 0.7099578755928138 ], "receiveShadow": false, "renderOrder": 0, "rotation": [ -4.264428010083962e-17, 0, 0, "XYZ" ], "scale": [ 1, 1, 1 ], "type": "PerspectiveCamera", "up": [ 0, 1, 0 ], "visible": true, "zoom": 1 } }, "fb0e1201299146d0907726ba0a1671b8": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "DirectionalLightModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "DirectionalLightModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "castShadow": false, "children": [], "color": "white", "frustumCulled": true, "intensity": 0.6, "matrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixAutoUpdate": true, "matrixWorld": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "matrixWorldNeedsUpdate": true, "modelViewMatrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "name": "", "normalMatrix": [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ], "position": [ 0.021650314331054688, 21.444747924804688, 342.955479493203 ], "quaternion": [ 0, 0, 0, 1 ], "receiveShadow": false, "renderOrder": 0, "rotation": [ 0, 0, 0, "XYZ" ], "scale": [ 1, 1, 1 ], "shadow": "IPY_MODEL_648c0713-3da2-4f66-ac3f-a20cc0f211e6", "target": "IPY_MODEL_0ad486d4-583d-4e67-b11a-fec060310aa0", "type": "DirectionalLight", "up": [ 0, 1, 0 ], "visible": true } }, "fd86e89f2ae34840930e97b98257ee2d": { "model_module": "jupyter-threejs", "model_module_version": "^2.4.1", "model_name": "PerspectiveCameraModel", "state": { "_model_module": "jupyter-threejs", "_model_module_version": "^2.4.1", "_model_name": "PerspectiveCameraModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null, "aspect": 1, "castShadow": false, "children": [ "IPY_MODEL_07b60692e5db42c4b77a5bc9e5696c6b" ], "far": 2000, "focus": 86.09200421115203, "fov": 30, "frustumCulled": true, "matrix": [ 1, 0, 0, 0, 0, 1, -4.126647661828154e-17, 0, 0, 4.126647661828154e-17, 1, 0, 19.5, 16.319141387939457, 100.80268201371474, 1 ], "matrixAutoUpdate": true, "matrixWorld": [ 1, 0, 0, 0, 0, 1, -4.126647661828154e-17, 0, 0, 4.126647661828154e-17, 1, 0, 19.5, 16.319141387939457, 100.80268201371474, 1 ], "matrixWorldInverse": [ 1, 0, 0, 0, 0, 1, 4.126647661828154e-17, 0, 0, -4.126647661828154e-17, 1, 0, -19.5, -16.319141387939453, -100.80268201371474, 1 ], "matrixWorldNeedsUpdate": false, "modelViewMatrix": [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], "name": "", "near": 0.1, "normalMatrix": [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ], "position": [ 21.00455405074875, -127.4623379039908, 14.77373730094787 ], "projectionMatrix": [ 3.7320508075688776, 0, 0, 0, 0, 3.7320508075688776, 0, 0, 0, 0, -1.00010000500025, -1, 0, 0, -0.200010000500025, 0 ], "quaternion": [ 0.5076820646545949, 0.49197524723284136, -0.48684959610807865, 0.5130270442263577 ], "receiveShadow": false, "renderOrder": 0, "rotation": [ -4.126647661828154e-17, 0, 0, "XYZ" ], "scale": [ 1, 1, 1 ], "type": "PerspectiveCamera", "up": [ 0, 1, 0 ], "visible": true, "zoom": 1 } } } } }, "nbformat": 4, "nbformat_minor": 5 }