Browsing by Author "Panozzo, Daniele"
Now showing 1 - 6 of 6
Results Per Page
Sort Options
Item Black Box Geometric Computing with Python: From Theory to Practice(The Eurographics Association, 2020) Koch, Sebastian; Schneider, Teseo; Li, Chengchen; Panozzo, Daniele; Fjeld, Morten and Frisvad, Jeppe RevallThe first part of the course is theoretical, and introduces the finite element method trough interactive Jupyter notebooks. It also covers recent advancements toward an integrated pipeline, considering meshing and element design as a single challenge, leading to a black box pipeline that can solve simulations on ten thousand in the wild meshes, without any parameter tuning. In the second part we will move to practice, introducing a set of easy-to-use Python packages for applications in geometric computing. The presentation will have the form of live coding in a Jupyter notebook. We have designed the presented libraries to have a shallow learning curve, while also enabling programmers to easily accomplish a wide variety of complex tasks. Furthermore, these libraries utilize NumPy arrays as a common interface, making them highly composable with each-other as well as existing scientific computing packages. Finally, our libraries are blazing fast, doing most of the heavy computations in C++ with a minimal constant-overhead interface to Python. In the course, we will present a set of real-world examples from geometry processing, physical simulation, and geometric deep learning. Each example is prototypical of a common task in research or industry and is implemented in a few lines of code. By the end of the course, attendees will have exposure to a swiss-army-knife of simple, composable, and high-performance tools for geometric computing.Item EGGS: Sparsity-Specific Code Generation(The Eurographics Association and John Wiley & Sons Ltd., 2020) Tang, Xuan; Schneider, Teseo; Kamil, Shoaib; Panda, Aurojit; Li, Jinyang; Panozzo, Daniele; Jacobson, Alec and Huang, QixingSparse matrix computations are among the most important computational patterns, commonly used in geometry processing, physical simulation, graph algorithms, and other situations where sparse data arises. In many cases, the structure of a sparse matrix is known a priori, but the values may change or depend on inputs to the algorithm. We propose a new methodology for compile-time specialization of algorithms relying on mixing sparse and dense linear algebra operations, using an extension to the widely-used open source Eigen package. In contrast to library approaches optimizing individual building blocks of a computation (such as sparse matrix product), we generate reusable sparsity-specific implementations for a given algorithm, utilizing vector intrinsics and reducing unnecessary scanning through matrix structures. We demonstrate the effectiveness of our technique on a benchmark of artificial expressions to quantitatively evaluate the benefit of our approach over the state-ofthe- art library Intel MKL. To further demonstrate the practical applicability of our technique we show that our technique can improve performance, with minimal code changes, for mesh smoothing, mesh parametrization, volumetric deformation, optical flow, and computation of the Laplace operator.Item EUROGRAPHICS 2020: CGF 39-2 Frontmatter(The Eurographics Association and John Wiley & Sons Ltd., 2020) Assarsson, Ulf; Panozzo, Daniele; Panozzo, Daniele and Assarsson, Ulf-Item Fast and Exact Root Parity for Continuous Collision Detection(The Eurographics Association and John Wiley & Sons Ltd., 2022) Wang, Bolun; Ferguson, Zachary; Jiang, Xin; Attene, Marco; Panozzo, Daniele; Schneider, Teseo; Chaine, Raphaëlle; Kim, Min H.We introduce the first exact root parity counter for continuous collision detection (CCD). That is, our algorithm computes the parity (even or odd) of the number of roots of the cubic polynomial arising from a CCD query. We note that the parity is unable to differentiate between zero (no collisions) and the rare case of two roots (collisions). Our method does not have numerical parameters to tune, has a performance comparable to efficient approximate algorithms, and is exact. We test our approach on a large collection of synthetic tests and real simulations, and we demonstrate that it can be easily integrated into existing simulators.Item Feature Preserving Octree-Based Hexahedral Meshing(The Eurographics Association and John Wiley & Sons Ltd., 2019) Gao, Xifeng; Shen, Hanxiao; Panozzo, Daniele; Bommes, David and Huang, HuiWe propose an octree-based algorithm to tessellate the interior of a closed surface with hexahedral cells. The generated hexahedral mesh (1) explicitly preserves sharp features of the original input, (2) has a maximal, user-controlled distance deviation from the input surface, (3) is composed of elements with only positive scaled jacobians (measured by the eight corners of a hex [SEK*07]), and (4) does not have self-intersections. We attempt to achieve these goals by proposing a novel pipeline to create an initial pure hexahedral mesh from an octree structure, taking advantage of recent developments in the generation of locally injective 3D parametrizations to warp the octree boundary to conform to the input surface. Sharp features in the input are bijectively mapped to poly-lines in the output and preserved by the deformation, which takes advantage of a scaffold mesh to prevent local and global intersections. The robustness of our technique is experimentally validated by batch processing a large collection of organic and CAD models, without any manual cleanup or parameter tuning. All results including mesh data and statistics in the paper are provided in the additional material. The open-source implementation will be made available online to foster further research in this direction.Item libigl: Prototyping Geometry Processing Research in C++(The Eurographics Association, 2019) Panozzo, Daniele; Jacobson, Alec; Jakob, Wenzel and Puppo, EnricoModern geometry processing algorithms depend on an ever-growing toolbox of fundamental sub-routines and data structures. Prototyping from scratch requires much time building basic tools rather than focusing on the novel research idea. Many existing code libraries have unsatisfactory APIs and the time spent implementing sub-routines is often replaced with time spent learning complex, templated object hierarchies or memory layouts. Libigl is a C++ library of geometry processing algorithms designed for and by researchers. Its wide functionality includes construction of common sparse discrete differential geometry operators (such as the cotangent Laplacian), simple facet- and edge-based topology data structures, mesh-viewing utilities for OpenGL and GLSL, and many core functions for matrix manipulation which make Eigen feel a lot more like MATLAB. Libigl places extreme importance on ease of use and experimentation. To this end, algorithms are directly exposed as functions taking simple matrix types as inputs and outputs. Libigl is a "header only" library and compiles on Windows, Mac, and Linux. In this course, we will walk through an introduction of libigl via readymade examples spanning the gamut of geometry processing applications and tasks. Attendees will be able to follow along on their laptops. We will explain the core functionality of libigl, how to piece together complex algorithms from library functions, and how to interface to libigl from Python and MATLAB. We will highlight some of libigl’'s most powerul features: including mesh booleans, quad remeshing, parameterization, and shape deformation. We will conclude with live coding sessions demonstrating libigl's effectiveness and ease-of-use.