Created by: portnov
After this PR, the only remaining nodes in Sverchok-Extra will be the most questionable (ones that are too slow or too fragile etc). So, Sverchok-Extra can become a sort-of playground for Sverchok: if you are thinking about a node, which is too complex to be a scripted node, but too experimental to be in core Sverchok, put it into Sverchok-Extra.
This PR is supposed to work with "sverchok_move_2" branch of sverchok-extra repo.
Work plan for this PR
-
Move infrastructure -
Move nodes -
Support dummy nodes -
Test that everything works, more or less -
Rename SvEx classes to Sv where it will not break compatibility (which means nodes will remain SvEx). -
Add some code documentation -
Nodes documentation (more or less): -
Curve category -
Surface category -
Field category -
Former Spatial category -
Exchange category -
Ladybug category - will delegate to @vicdoval :)
-
-
Nodes icons (more or less)
Work to be done after this is merged
- Update readmes and wikis and docs of both Sverchok and Sverchok-Extra about the new state of things
- #3385, #3386.
Moved nodes
The following nodes are moved:
-
Curve category:
- RBF (interpolation) Curve (uses SciPy)
- Catenary Curve (uses SciPy)
- NURBS Curve (uses Geomdl library)
- NURBS Interpolation Curve (uses Geomdl library)
- NURBS Approximation Curve (uses Geomdl library)
- Circlify (pack a set of circles into another circle) (uses Circlify library)
- Marching Squares (uses Scikit-Image library)
- Intersect Curve with Plane (uses SciPy)
- Orthogonal Projection onto Curve (uses SciPy)
- Nearest Point on Curve (uses SciPy)
- Approximate Bezier Curve (uses SciPy)
- Curve Extremes (uses SciPy)
- Interpolate Frame on Curve
-
Surface category:
- NURBS Surface (uses Geomdl)
- NURBS Interpolation Surface (uses Geomdl)
- NURBS Approximation Surface (uses Geomdl)
- Quads to NURBS (uses Geomdl)
- Minimal Surface (uses SciPy)
- Minimal Surface from (closed) Curve (uses SciPy)
- Curves to Surface (optionally uses SciPy and/or Geomdl)
- Marching Cubes (optionally uses either PyMCubes or Scikit-Image; has slower implementation in pure Python)
- Nearest Point on Surface (uses SciPy)
- Raycast onto Surface (uses SciPy)
- Raycast onto Implicit Surface (scalar field iso-surface) (uses SciPy)
- Orthogonal Projection onto Surface (uses SciPy)
- Former Spatial category of Sverchok-Extra => Modifier Make category of Sverchok:
- Voronoi 3D (uses SciPy)
- Spherical Voronoi (uses SciPy)
- Delaunay 3D (uses SciPy)
-
Field category (please refer to the wiki page about used concept of the field; most of these nodes do not use external libraries, except for numpy):
- Mesh Nearest Normals Field (optionally uses SciPy)
- RBF Scalar Field (uses SciPy)
- RBF Vector Field (uses SciPy)
- Scalar Field Graph (uses Scikit-Image)
- Surface Extremes (uses SciPy)
-
Exchange category:
- NURBS In (input Blender's NURBS curve or surface objects into Sverchok tree)
- NURBS to JSON (uses Geomdl to represent NURBS surfaces or curves in JSON format which can be converted to Rhino's
3dm
by rw3dm - JSON to NURBS (uses Geomdl to read NURBS surfaces or curves from the same JSON format)
-
Ladybug* category (use Ladybug package):
- Location
- Sun position
Remaining nodes
The following nodes remain in Sverchok-Extra for the time being:
- Intersect Surface with Plane — too young and fragile, usable only for small number of cases
- Surface Curvature Lines — reasons described in #3243
- Implicit Surface Solver: the algorithm itself is questionable. What this node does is takes a starting point and then tries to find a point, which lies on implicit surface (iso-surface of scalar field), by using some sort of Newtonian equation solving algorithm. So in many cases it will find nearest point on the implicit surface to the given point. But there are also cases when the point will not be nearest.
- Smooth Bivariate Spline. Questionable node.
- Vector Field Lines on a Surface (uses SciPy). Questionable node.
Preflight checklist
Put an x letter in each brackets when you're done this item:
-
Code changes complete. -
Code documentation complete. -
Documentation for users complete (or not required, if user never sees these changes). -
Manual testing done. -
Unit-tests implemented. -
Ready for merge.