diff --git a/tutorial/tutorial.html b/tutorial/tutorial.html index 900b8dc7f..9ae5490d9 100644 --- a/tutorial/tutorial.html +++ b/tutorial/tutorial.html @@ -35,15 +35,15 @@ lecture notes links to a cross-platform example application.
We introduce libigl with a series of self-contained examples. The purpose of each example is to showcase a feature of libigl while applying to a practical @@ -150,7 +150,7 @@ concepts of libigl and introduce a simple mesh viewer that allows to visualize a surface mesh and its attributes. All the tutorial examples are cross-platform and can be compiled on MacOSX, Linux and Windows.
-Before getting into the examples, we summarize the main design principles in libigl:
@@ -209,7 +209,7 @@ inside each example folder. solver which has to be downloaded and compiled separately. -libigl uses the Eigen library to encode vector and matrices. We suggest that you keep the @@ -262,7 +262,7 @@ Similarly, a mesh can be written in an OBJ file using:
Example 101 contains a simple mesh converter from OFF to OBJ format.
-Libigl provides an glfw-based OpenGL 3.2 viewer to visualize surfaces, their properties and additional debugging informations.
@@ -303,7 +303,7 @@ mesh." />Keyboard and mouse events triggers callbacks that can be registered in the viewer. The viewer supports the following callbacks:
@@ -356,7 +356,7 @@ control the camera directly in your code. the viewer’s callbacks. See the Viewer_plugin for more details. -Colors and normals can be associated to faces or vertices using the set_colors function:
@@ -394,7 +394,7 @@ color field. types and can be easily reused for many different tasks. Not committing to heavy data structures types favors simplicity, ease of use and reusability. -In addition to plotting the surface, the viewer supports the visualization of points, lines and text labels: these overlays can be very helful while developing geometric processing algorithms to plot debug informations.
@@ -1676,7 +1676,7 @@ ARAP deformation on a detailed shape (left of middle), to ARAP with grouped rotation edge sets (right of middle), to the very fast subpsace method (right). -In computer graphics, we denote as surface parametrization a map from the surface to \(\mathbf{R}^2\). It is usually encoded by a new set of 2D @@ -1702,7 +1702,7 @@ genus. They initially cut the mesh in multiple patches that can be separately pa
Global seamless parametrization: these are global parametrization algorithm that hides the seams, making the parametrization “continuous”, under specific assumptions that we will discuss later.
Harmonic parametrization [16] is a single patch, fixed boundary parametrization algorithm that computes the 2D coordinates of the flattened mesh as two @@ -1746,7 +1746,7 @@ texture" /> mesh with texture, (right) UV parametrization with texture -
Least squares conformal maps parametrization [17] minimizes the
conformal (angular) distortion of the parametrization. Differently from
@@ -1795,7 +1795,7 @@ with texture, (right) UV parametrization" />
As-rigid-as-possible parametrization [19] is a powerful single-patch, non-linear algorithm to compute a parametrization that strives to preserve @@ -1821,7 +1821,7 @@ texture" /> (left) mesh with texture, (right) UV parametrization with texture -
The design of tangent fields is a basic tool used to design guidance fields for uniform quadrilateral and hexahedral remeshing. Libigl contains an @@ -1861,10 +1861,10 @@ N are of different types and they appear in different positions.
504, where the degree of the field can be change pressing the number keys.igl::nrosy implements the algorithm proposed in
[21]. N-RoSy fields can also be interpolated with the algorithm
-proposed in [22], see Section 507 for more details
+proposed in [22], see Section npolyvectorfields for more details
(igl::n_polyvector).
-The previous parametrization methods were focusing on creating parametrizations of surface patches aimed at texture mapping or baking of other surface @@ -1962,7 +1962,7 @@ it contains many overlaps.
libQEx (not included in libigl). The full pipeline is implemented in Example 505. -Anisotropic and non-uniform quad remeshing is important to concentrate the elements in the regions with more details. It is possible to extend the MIQ @@ -2019,7 +2019,7 @@ generate the UV parametrization, but other algorithms could be applied: the only desiderata is that the generated quad mesh should be as isotropic as possible.
-N-RoSy vector fields can be further generalized to represent arbitrary
vector-sets, with arbitrary angles between them and with arbitrary lengths
@@ -2040,7 +2040,7 @@ PolyVector fields. If the constraints are taken from an N-RoSy field,
igl::n_polyvector generates a field that is equivalent, after normalization,
to a globally optimal direction field.
Two tangent vectors lying on a face of a triangle mesh are conjugate if
@@ -2065,7 +2065,7 @@ closest conjugate field (Example 508).A quad mesh can be transformed in a planar quad mesh with Shape-Up [26], a local/global approach that uses the global step to enforce @@ -2082,12 +2082,12 @@ quads." /> igl::palanarize (right). The colors represent the planarity of the quads. -
An additional positive side effect of using matrices as basic types is that it is easy to exchange data between libigl and other softwares and libraries.
-Geometry processing applications often require a considerable amount of computational time and/or manual input. Serializing the state of the application is a simple strategy to greatly increase the development efficiency. It allows to quickly start debugging just @@ -2206,7 +2206,7 @@ common to have to do small changes to figures, and being able to serialize the entire state just before you take screenshots will save you many painful hours before a submission deadline.
-Libigl can be interfaced with Matlab to offload numerically heavy computation to a Matlab script. The major advantage of this approach is that you will be @@ -2330,7 +2330,7 @@ L = sparse(LIJV(:,1),LIJV(:,2),LIJV(:,3));
which is easily copied and pasted into Matlab for debugging, etc.
-It is also possible to call libigl functions from matlab, compiling them as MEX functions. This can be used to offload to C++ code the computationally @@ -2341,7 +2341,7 @@ We plan to provide wrappers for all our functions in the future, if you are interested in this feature (or if you want to help implementing it) please let us know.
-The generation of high-quality triangle and tetrahedral meshes is a very common task in geometry processing. We provide wrappers in libigl to @@ -2365,7 +2365,7 @@ in its interior) is triangulated.
Similarly, the interior of a closed manifold surface can be tetrahedralized
using the function Ambient occlusion is a
rendering technique used to calculate the exposure of each point in a surface
@@ -2414,7 +2414,7 @@ occlusion." />
Picking vertices and faces using the mouse is very common in geometry
processing applications. While this might seem a simple operation, its
@@ -2448,7 +2448,7 @@ vertices are colored in red." />
Extreme deformations or parametrizations with high-distortion might flip
elements. This is undesirable in many applications, and it is possible to
@@ -2465,7 +2465,7 @@ editing plus the anti-flipping constraints (right)." />
Constructive solid geometry (CSG) is a technique to define a complex surface as
the result of a number of set operations on solid regions of space: union,
@@ -2552,14 +2552,14 @@ together coincident vertices, maintaining original triangle orientations.igl::tetrahedralize which wraps the Tetgen library (Example
@@ -2378,7 +2378,7 @@ using the function igl::tetrahedralize which wraps the Tetgen libra
Baking ambient occlusion
+Baking ambient occlusion
Picking
+Picking
Locally Injective Maps
+Locally Injective Maps
Boolean operations on meshes
+Boolean operations on meshes
Libigl contains a wide variety of geometry processing tools and functions for dealing with meshes and the linear algebra related to them: far too many to discuss in this introductory tutorial. We’ve pulled out a couple of the interesting functions in this chapter to highlight.
-Libigl contains various mesh statistics, including face angles, face areas and the detection of singular vertices, which are vertices with more or less than 6 @@ -2594,10 +2594,10 @@ the angles are to 60 degrees the more stable will the optimization be. In this case, it is clear that the mesh is of bad quality and it will probably result in artifacts if used for solving PDEs.
-The problem of tetrahedralizing the interior of closed watertight surface mesh
-is a difficult, but well-posed problem (see our Tetgen wrappers). But
+is a difficult, but well-posed problem (see our Tetgen wrappers). But
black-box tet-meshers like TetGen will refuse input triangle meshes with
self-intersections, open boundaries, non-manifold edges from multiple connected
components.
@@ -2635,20 +2635,20 @@ oriented), then \(w(\mathbf{p})\) tends smoothly towar
more inside (V,F), and toward 0 as \(\mathbf{p}\) is more outside.
-The study of mesh simplification or decimation is nearly as old as meshes themselves. Given a high resolution mesh with too many triangles, find a “well