Created by: zeffii
What is this?
This branch aims to get sverchok loading in Blender 2.80. Each node has been modified to account for changes to the new API. Most modifications to existing nodes are superficial, but you will encounter a few new nodes that are complete rewrites. Mostly the behaviour should be the same, our work process hasn't changed.
I'd like to point out that this is experimental, and still changing hourly/daily, and will be for some time to come. If you want stable, use B2.79 and the last Sverchok release ( That's going to be the LTS version ). The hope is to keep this version more forward looking for a while, and not call it stable until Blender 2.80 itself moves to full release status.
There's still much stuff missing, some stuff might not come back, some stuff will be new or implemented in a different way. The branch is also an opportunity to ditch a lot of vestigial code (old nodes directory is empty for the time being)
Missing nodes
Blender 2.80 is still a moving target, this means for sanity's sake it's necessary to hold-off trying to get all nodes working so soon. As a result some nodes are gone at the moment, because it's unclear how to replace their internal workings. Additionally some nodes that use bgl
or interact with Blender Objects
are rewritten. This means layouts that contain these nodes can encounter initial failure.
- old sverchok .blends will not work
- old sverchok
gists / json
will not work correctly (also mostexamples
won't )
eventually those nodes that have approximate replacements will be able to automatically find a replacement.
How to install?
Installation procedures are described in #2326 (closed). This description will remain actual until separate branch for 2.8 would be merged into master.
Bug reporting
That's tricky, i'm only really interested in Bugs encountered while trying to install the software, or if a node goes red then the error message from console is interesting. Or if you get a Blender crash using a specific node (if you can't show the crash with 3 nodes, i'm not interested).
All other issues can be ignored for now. Eventually of course we / i will be more receptive to user experiences.
tracking work done, or to complete
Another attempt at porting sverchok, this time i'll dedicate a few days to it.
-
update sv_update_utils.py
temporarily, maybe just explain how set sv_prefs , so people 'can' update# you could run this in the text editor, then press save preferences in the Preferences # then maybe update will work :) import sverchok from sverchok.utils import sv_prefs sv_prefs.set_vals( dload_archive_path="https://github.com/nortikin/sverchok/archive/", dload_archive_name="b28_prelease_master" )
-
use keyword arguments where appropriate -
some form of nodeview update using updateNode -
update needs to propagate from the start of a tree..sometimes isn't working right.
-
-
ditch unused socket definitions. -
ditch old nodes (all sn, except lite) -
stethoscope -
mesh viewer (implemented but not debugged yet) -
make sure new unique names are new, and unique.
-
-
some nodes -
index viewer -
reimplement text-background
-
-
text viewing features of index viewer implemented as individual node -
viewer draw using newer gl instructions -
introduce object helper class for all Object viewers (but do testing on existing node bmv too) -
add "new nodetree" option in rclick menu when no nodetree is shown or exists. -
convert object viewers to use matrix. -
correct @
usage for matrix multiplication. -
correct references to bpy.data.groups , this doesn't exist anymore -
also object.to_mesh() now requires a reference to depsgraph
. wtf. 1.obj.to_mesh(bpy.context.depsgraph, apply_modifiers=self.modifiers, calc_undeformed=True)
2. this was changed again, https://github.com/nortikin/sverchok/issues/2436 -
object.select
attribute becomesobject.select_set(bool)
function call. if you want to get objects select state you doobject.select_get()
-
nodes that use noise module must be made to accept the string for noise_basis='STRING_NAME'
, it no longer accepts integers. ( this just means removing the noise_dict often.. and directly setting the noise_type from the enum ). noise nodes are different in 2.8 api. http://www.blender.org/documentation/blender_python_api_current/mathutils.noise.html -
floatproperty subtyple ANGLE seems to produce radians, instead of degrees. -
references to scene = bpy.context.scene
may be subject to modification tobpy.context.collection
-
move all socket definitions to sockets.py
-
ensure all socket classes / bl_idnames have an Sv Prefix. -
example jsons will not load because of missing nodes :) srrynew examples are being prepared instead -
monad
is completely untested. I have not even tried it. -
particle nodes await replacement API ( https://github.com/nortikin/sverchok/issues/2355#issuecomment-456481237 )API is end of life -
bmesh.ops
will require keywords and string based enums - see https://docs.blender.org/api/blender2.8/bmesh.ops.html
- bmesh.ops.delete
context ['VERTS', 'EDGES', 'FACES_ONLY', 'EDGES_FACES', 'FACES', 'FACES_KEEP_BOUNDARY', 'TAGGED_ONLY']
- bmesh.ops.beautify_fill
method ['AREA', 'ANGLE'],
- bmesh.ops.triangulate
quad_method ['BEAUTY', 'FIXED', 'ALTERNATE', 'SHORT_EDGE'], default 'BEAUTY') – Undocumented.
ngon_method ['BEAUTY', 'EAR_CLIP'], default 'BEAUTY') – Undocumented.
- bmesh.ops.similar_verts (missing! )
- bmesh.ops.similar_edges (missing! )
- bmesh.ops.similar_faces (missing! )
specific nodes that could be upgraded a bit
-
list zip
(doesn't seem to zip longest, it repeats length of first? ) -
matrix apply
should accept no matrix, and just work -
add input parsing to interpolator nodes (so input = 3 , results in [0, 0.5, 1]
)
stuff i haven't touched yet
Later, The have yet to be modified or need author confirmation
-
node_scripts\SNLite_templates\voronoi_with_radius.py: <--- let author do it -
nodes\generators_extended\generative_art.py: <--- let author do it @=
in place works -
nodes\modifier_change\extrude_multi_alt.py: <--- let author do it -
nodes\modifier_change\objects_along_edge.py: <---some long chains need a closer look -
nodes\modifier_change\offset.py: <---not sure -
nodes\modifier_make\cross_section.py: <---- long chains -
nodes\modifier_make\polygons_adaptative.py: <---- nope, later -
nodes\modifier_make\wafel.py: -
nodes\object_nodes\closest_point_on_mesh2.py: <-- line 71 -
nodes\object_nodes\object_raycast2.py: <--- line 96 wtf -
nodes\transforms\rotation.py: <--- does euler need @ ? -
nodes\transforms\rotation_mk2.py: <--- does euler need @ ? -
nodes\vector\attractor.py: <--- too lazy.