You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-**MarchingCubes**: multi-threaded triangulation of implicit functions / scalar fields
231
+
-**MarchingCubesPro**: continuation-method approach to marching cubes that explores isosurface from seed points (more efficient but may miss things if seed points are insufficient)
226
232
227
233
228
234
## Mesh Selections
@@ -249,14 +255,32 @@ Several tutorials for using g3Sharp have been posted on the Gradientspace blog:
249
255
-**MeshExtrudeMesh**: extrude all faces of mesh and stitch boundaries w/ triangle strips
250
256
-**MeshICP**: basic iterative-closest-point alignment to target surface
251
257
-**MeshInsertUVPolyCurve**: insert a 2D polyline (optionally closed) into a 2D mesh
258
+
-**MeshInsertPolygon**: insert a 2D polygon-with-holes into a 2D mesh and return set of triangles "inside" polygon
259
+
-**MeshInsertProjectedPolygon**: variant of MeshInsertPolygon that inserts 2D polygon onto 3D mesh surface via projection plane
252
260
-**MeshIterativeSmooth**: standard iterative vertex-laplacian smoothing with uniform, cotan, mean-value weights
253
261
-**MeshLocalParam**: calculate Discrete Exponential Map uv-coords around a point on mesh
254
262
-**MeshLoopClosure**: cap open region of mesh with a plane
255
263
-**MeshLoopSmooth**: smooth an embedded *EdgeLoop* of a mesh
256
264
-**MeshPlaneCut**: cut a mesh with a plane, return new **EdgeLoop**s and **EdgeSpans**, and optionally fill holes
257
265
-**RegionOperator**: support class that makes it easy to extract a submesh and safely re-integrate it back into base mesh. IE like RegionRemesher, but you can do arbitrary changes to the submesh (as long as you preserve boundary).
258
-
-**SimpleHoleFiller**: topological filling of an open boundary edge loop. No attempt to preserve shape whatsoever!
266
+
-**MeshStitchLoops**: Stitch together two edge loops without any constraint that they have the same vertex count
267
+
-**MeshTrimLoop**: trim mesh with 3D polyline curve lying on mesh faces (approximately)
259
268
-**MeshIsoCurve**: compute piecewise-linear iso-curves of a function on a mesh, as a **DGraph3**
269
+
-**MeshTopology**: Extract mesh sharp-edge-path topology based on crease angle
270
+
-**MeshAssembly**: Decompose mesh into submeshes based on connected solids and open patches
271
+
-**MeshSpatialSort**: sorts set of mesh components into "solids" (each solid is outer mesh and contained cavity meshes)
272
+
-**MeshMeshCut**: Cut one mesh with another, and optionally remove contained regions
273
+
-**MeshBoolean**: Apply **MeshMeshCut** to each of a pair of meshes, and then try to resample cut boundaries so they have same vertices. **This is not a robust mesh boolean!**
274
+
-**SimpleHoleFiller**: topological filling of an open boundary edge loop. No attempt to preserve shape whatsoever!
275
+
-**SmoothedHoleFill**: fill hole in mesh smoothly, ie with (approximate) boundary tangent continuity
276
+
-**MinimalHoleFill**: construct "minimal" fill that is often developable (recovers sharp edges well)
277
+
-**PlanarHoleFiller**: fill planar holes in mesh by mapping to 2D, handles nested holes (eg from plane cut through torus)
278
+
-**PlanarSpansFiller**: try to fill disconnected set of planar spans, by chaining them (WIP)
279
+
-**MeshRepairOrientation**: make triangle winding order consistent across mesh connected components (if possible), and then assign global orientation via spatial sorting/nesting
280
+
-**MergeCoincidentEdges**: weld coincident open boundary edges of mesh (more robust than weld vertices!)
281
+
-**RemoveDuplicateTriangles**: remove duplicate triangles of mesh
282
+
-**RemoteOccludedTriangles**: remove triangles that are "occluded" under various definitions
283
+
-**MeshAutoRepair**: apply many of the above algorithms in an attempt to automatically "repair" an input mesh, where "repaired" means the mesh is closed and manifold.
260
284
261
285
262
286
## Spatial Data Structures
@@ -277,6 +301,9 @@ Several tutorials for using g3Sharp have been posted on the Gradientspace blog:
277
301
-**Bitmap3**: 3D dense bitmap
278
302
-**BiGrid3**: two-level DSparseGrid3
279
303
-**MeshSignedDistanceGrid**: 3D fast-marching construction of narrow-band level set / voxel-distance-field for mesh
304
+
-**MeshScalarSamplingGrid**: Samples scalar function on 3D grid. Can sample full grid or narrow band around specific iso-contour
305
+
-**MeshWindingNumberGrid**: MeshScalarSamplingGrid variant specifically for computing narrow-band Mesh Winding Number field on meshes with holes (finds narrow-band in hole regions via flood-fill)
306
+
-**CachingMeshSDF**: variant of MeshSignedDistanceGrid that does lazy evaluation of distances (eg for use with continuation-method MarchingCubesPro)
280
307
-**IProjectionTarget** implementations for DCurve3, DMesh3, Plane3, Circle3d, Cylinder3d, etc, for use w/ reprojection in Remesher and other algorithms
281
308
-**IIntersectionTarget** implementations for DMesh3, transformed DMesh3, Plane3
282
309
@@ -323,6 +350,7 @@ Several tutorials for using g3Sharp have been posted on the Gradientspace blog:
323
350
324
351
-**Cylinder3d**
325
352
-**DenseGridTrilinearImplicit**: trilinear interpolant of 3D grid
353
+
-**CachingDenseGridTrilinearImplicit**: variant of DenseGridTrilinearImplicit that does lazy evaluation of grid values based on an implicit function
0 commit comments