Sverchok for Blender 2.8x Release Notes - nortikin/sverchok GitHub Wiki

Preface

Ever since the first alphas of Blender 2.80 became available, the work on adapting Sverchok to it has began. The biggest challenge we had was the new API for drawing on top of the viewport (which is used by "Viewer Draw" and similar nodes). There were also a lot of smaller API changes which we had to deal with.

Unlike some other software, Sverchok does not have a regular release cycle; nor do we have a clear state of "release", meaning "everything is ready", ever. Sverchok is a "Rolling-Release" product, which means that you can check out master branch from github any time and it should work (we try hard to keep it working).

Current event is special, since we had a hard year (porting Sverchok to Blender 2.80 took us about a year!), and now we are ready to declare that Sverchok for Blender 2.8x is working. More or less. There are known problems, and there are still things to do, lots of them. This release does not mean "everything is perfect". But you can already check out github master branch, and it will be Sverchok for 2.8x, and it will be working.

Although the main thing about Sverchok for Blender 2.8x is that it exists, there are some new features as well (comparing to 2.79 version).

Compatibility issues

We have to inform all users, that there is no compatibility in terms of possibility to open old blend files or import old json files between Sverchok for 2.79 and one for 2.8x. Such decision was made because of big API changes in Blender's python, as well as because of amount of obsolete code we had to support if we decided to provide such compatibility; and we do not have that amount of man-power yet. So, we decided that it would be better to use this point as an excuse to drop as much of obsolete and unused stuff, as we could; there were things that we could've done better before - but we could not change them without breaking compatibility. Now, as we are breaking compatibility anyway, we can do such things better.

However, the main principles of Sverchok are still exactly the same; so you can use Blender 2.79 with old Sverchok to continue work on your old scenes, and begin to use new Sverchok with new Blender for the new scenes. You can reproduce your old setups in new Sverchok by creating new nodes one-by-one.

Versions support policy

We do not have enough man-power to actively support more than one version of Sverchok. So the policy is:

  • We are still supporting Sverchok for 2.79 in terms of fixing critical bugs;
  • But all new features, as well as usability bugfixes, go to 2.8x branch only.

Major changes

  • A number of nodes that were marked as deprecated, but still supported (so called "old nodes") are now removed.
  • Menu categories were rearranged (this work is still ongoing).
  • Blender's new UI does not support tabs in the left (T) panel anymore; so we have new UI for node toolbar, which can be optionally shown in the T or N panel; in T panel, there is also a search function. Refer to #2553 for more details.
  • There are now icons for (almost) all nodes for use in the toolbar or in the menu.
  • Categories are now supported for user-defined presets.
  • Old menu shortcut (Ctrl+Space) was changed to Alt+Space to do not conflict with Blender's new standard shortcut.
  • Current GitHub's requirements for gist creation are supported (one can not create anonymous gists programmatically anymore) — see the wiki page for details.
  • "Object In" node now has "MaterialIdx" output - an index of assigned material for each face of the mesh; "BMesh Viewer" has "Material_idx" input to assign material index of each face.
  • Several nodes (Adaptive Polygons, Remove Doubles, Bevel etc) now have "FaceData" input and output. It allows you to pass arbitrary per-face information, and it is processed correctly along with faces.
  • There are some movements to make Sverchok able to procedurally generate UV mappings (see New nodes section below). So in some future it will be possible to generate the model in Sverchok from the beginning to texturing (with some restrictions).
  • Set of examples distributed with Sverchok was reconsidered; some of them were removed, some ported to work on 2.80 branch.

New nodes

  • "Sverchok" node, which generates a low-poly cricket model — #2585
  • "List item insert" and "Mask to index" — #2512
  • "Circle Intersection" node — #2629
  • "Conic section" node — #2636
  • "Quadratic spline" node — #2642
  • "Dual Mesh" node — #2653
  • "Triangle" node — #2647
  • "Make monotone polygon 2D" - #2623
  • "Edges to face 2D" - #2623
  • "Merge mesh 2D light" - #2623
  • "Crop mesh 2D" - #2623
  • "Dissolve faces 2D" - #2623
  • "Random points on mesh" - #2716
  • "Chess selection" - #2729
  • "Pentagon Tiler" - #2710
  • "Inset Faces" (similar to "Inset Special" and "Extrude Separate Faces", but faster and with additional options)
  • "Component Analyzer" - #2776
  • "Assign Materials List" and "Set Material Index" nodes - #2462
  • "Wave Painter" node - see #2783
  • "Split Faces" and "Make faces planar" nodes — see #2754
  • "Symmetrize" node — see #2741
  • "Delaunay 2D CDT" node (available since Blender 2.81 only) — similar to "Delaunay 2D", but faster and has some additional options — see #2740
  • "Waveform Output" node — see #2703
  • "Oscillator" node — see #2652
  • "Framework" node for carcass / frame / ferme constructions — see #2706
  • New generic "Number Range" node now deprecates "Int Range" and "Float Range" nodes — see #2682
  • "Dictionary In" and "Dictionary Out" nodes — see #2797
  • "Set custom UV map" node — see #2797
  • "Follow active Quad" node (simple UV unwrapping algorithm) — see #2800

Updated nodes

The following nodes have received a massive functional update:

  • Scalar Math is now Mk4 and can operate in Numpy mode.
  • "Inset special" node does not have two normals calculation modes ("fast" and "accurate") anymore — it uses the accurate one always.
  • "Inset Special" node now has a possibility to create a fan-like structure (similar to Blender's "poke" operator) — you have to set the "Zero inset faces" parameter to "Fan" and set "inset" to zero.
  • "Bevel a curve" node now has twist support (see #2549).
  • NGon node now has a new "divisions" input (see #2552).
  • "Bounding box" node has new features — see #2575.
  • "Select mesh elements by location" node has new "level" parameter — see #2603.
  • "Voronoi 2D" node has bugs fixed and new features added — see #2639, #2801.
  • "Adaptive Polygons" is now Mk2. It received bug fixes and a lot of new features — see #2647 and #2663.
  • "Extrude separate faces" node now has a possibility to provide face transformation by an arbitrary matrix — see #2659.
  • "Intersect edges" sweeping line algorithm of finding edges intersection in 2D mode was added - #2623
  • "Mesh Expression" node now can generate arbitrary per-face and per-vertex data (for example, vertex colors and face materials information).
  • "Extrude edges" node is now Mk2 and allows you to extrude selected edges only.
  • "Extrude Separate Faces" and "Extrude Region" nodes now have Mask output and FaceData sockets support — see #2794.
  • "Mirror" node is now Mk2 and has some new options — see #2741.
  • New options were added to the "Bevel" node, which appeared in the recent Blender versions.
  • 2D mode for "Points inside mesh" node is introduced — see #2796.

Miscellaneous

  • Viewer Nodes that generate/update Objects in the Blender scene now use more shared code, making it easier to maintain.
  • Screen DPI now automatically used for nodes that draw with bgl to the NodeView
  • A new "Turtle API" module (sverchok.utils.turtle) was added, for script nodes to describe complex face selection patterns — see #2760.

Missing nodes

The following nodes, which were present in 2.79, are missing for now (but will be ported some day):

  • "Viewer GP"
  • "Export GCode"
  • "Evaluate Image"
  • "Selection Grabber"

Known issues

You can always check our issue tracker to see what unsolved issues there are. Any help is always appreciated.

Future plans

The nodes that output Blender objects, were creating groups in 2.79. There are no groups in 2.8x, so they are not doing it now. There is an issue discussing the nodes that are converted already, and plans to convert all such nodes to make collections instead.

There are known problems with Monad nodes, but they are not related to 2.8x porting, they existed before. There are plans to fix them in the near future.

See also the list of currently open pull requests to know what development is currently going on.