[WIP] Sverchok, parametric nodes for architects


СВеРЧОК - Система ВЕкторного Рабочего Черчения и Объектного Конструирования.
Sverchok - cricket in russian + Object constructing and working drawing vector system.

Site on github io

Sverchok is node programing of geometry, but in completely virtual way, with ability to bake geometry to blender also in real time, export to different formats and interact witht other node systems. You would work with pure data, as floats, matrixes, lists, formulas, fields etc. but in height interface level.


Node-based tool for parametric design, consists of such node groups:

  1. Generators (+ extended generators)
  2. Curves (and transformation/analysing)
  3. Surfaces (and transforation/analysing)
  4. Fields (and transforation/analysing)
  5. Solids (and transforation/analysing) **
  6. Spatial (all distributed points stuff)
  7. Transform (main transformations)
  8. Analyzers (get all kind of analyze data from objects)
  9. Modifiers (make and change modifiers)
  10. CAD (Some CAD operations)

  1. Number (basic number operations, ranges, math, exec…)
  2. Vector (working with vertices)
  3. Matrix (dealing with matrices)
  4. Quaternion (quaternion operations)
  5. Color (all color manipulating nodes)
  6. Logic (logic + AI neuron + genetic algorythm)
  7. List (Main+Structure sublists, the real power of sverchok)
  8. Dictionary (dictionary operations)

  1. Viz (all kind of OpenGL viz + bmesh and polylines creators)
  2. Text (data displaying, storing, reading adapting for Human)
  3. Scene (get objects and modify objects in current scene)
  4. Exchange(Sverchok-extra needed. export import some)
  5. Layout (routine)
  6. BPYdata (datablocks from blender to deal with)

  1. Script (All script relative nodes evaluating texts) *
  2. Network (deal with network)
  3. Pulga Physics (All pulga physics nodes)
  4. SVG (SVG exporting)
  5. Beta (nodes ready, but have not docs)
  6. Alpha (nodes are row)

  1. Groups (grouping nodes, making monade nodes)
  2. Presets (there are presets as jsons by SVteam and by you. T panel handle presets stuff)

  1. Ladybug (Ladybug toolset) *****
  2. Extra Surface (Sverchok-extra needed) ***
  3. Extra Curves (Sverchok-extra needed) ***
  4. Extra Fields (Sverchok-extra needed) ***
  5. Extra Solids (Extra solids) ***
  6. Extra Spatial (Sverchok-extra needed. Voronoi3D etc.) ***
  7. Data (Sverchok-extra needed.) ***
  8. Topologic (Coming with Topologic extra addon with own dependencies) ****
  9. IFC (IFC nodes for Sverchok) ******
  10. Open3D (Open3D) *******
  11. Mega-Polis (addon to work and analize Urban Data) ********

-* script related nodes has many templates
-** to use solids you need freecad python libs to install
-*** Install Sverchok-extra from github
-**** install topologicpy from github
-***** install ladybug from github
-****** install IFC from here or from github
-******* install Open3D from here
-******** install megapolis from here


Subscribe on channel or playlist.


Github DOCS


With a Check for Updates button, that turns to Upgrade addon button.


Our team consists of:

@ Nikita Gorodetskiy aka @nikitron
@ Alexander Nedovizin aka @Cfyzzz
@ Linus Yng aka @Linusy
@ Augustin Jimenezz aka @Azrael1
@ Dealga McArdle aka zeffii
@ Konstantin Vorobiew akaKosvor
@ Ilya Portnov akaportnov
@ Eleanor Howick akaelfnor
@ Walter Perdan aka kalwalt
@ Marius Giurgi aka DolphinDream
@ Durman aka Durman
@ Ivan Prytov aka THJG
@ Victor Doval aka VicDoval
@ aachman98 aka aachman98
@ Alessandro Zomparelli alessandro-zomparelli
@ Kukan Kogei asahidari
@ Paul Geraskin mifthbeat

Also many thanks to all guys adding code, and helping us and donating for team and artists/architects using Sverchok.
Thank to Paul Kotelevets that contribute much efforts on start.
Thank to Blendersushi blogger, Jimmy Gunnawan who made so many videos and articles so I lost in count. Many stuff made with him.


Some time ago discovered new tool - grasshopper and from end of 2012, i started this project, in August 2013 Alexander joined and work started to go fast, than we made completely new version with viewers and data transfering between sockets in November, 1, it was 0.2.0 version. Later sverchok growing much and team becomes larger.
My idea is to make addon, fully representing Rhinocerros-Grasshopper functionality. I started from mesh modelling. Try to mimic parametrism (parametric style of Zaha Hadid) in python tools. In future aim - to use blender NURBS to generate, to all tha stuff.



architecture and scripting is a new relationship. please, go on with your project. I know this another project of a parametric software using scripting. the developer is an architect, as well. http://code.google.com/p/openshapefactory/


Much thank you.

Very ambitious ! Grasshopper is a very complex plugin for Rhinoceros. It’s been developed over a long period of time by very skilled hands.

I fear that until proper NURBS make their way into Blender it’s pretty useless to do anything. It won’t be on the same level with Grasshopper.

It’s best to just try simple stuff and do that really good than try all the sick shit that’s possible with grasshopper.

Maybe when you have something to show you can create a nice site and ask for donations to keep development alive.

I’m sure a few people will be interested in it, including me.

Best of luck !

Say, isn’t this possible with Skin modifier too? At least the Kilian Roof Example - I can’t imagine that skin modifier would be capable of that? Perhaps the a simple addon then had to do the transformation from given sliders to the vertices/nodes of the curves the skin modifier is used onto?

Anyway it’s good that you investigate that. Probably I didn’t get the purpose and real possibilites properly. Anyway, the name grasshopper is very cool.
(is it a somewhat extension/UI for a more intuitive way to create mathematical objects? excuse my missing understandings of it [I’ve no sound currently so didn’t hear the explanations])

Thanks. Full NURBS tools not possible yet. So i’ll do part, that works with mesh, do simpliest things, make the basics of GH with mesh. I have to make basic bricks to manipulate quickly with classes & defs. Thats all for a moment.

This week was free to me, & I did that scripts on topics top.
Ferthere i’ll spend free time in it, because it my passion, & interface would be.

New script - make edges between two selected objects. make third, connecting vertices 0,1,2,3… not nearest, but it could be done, and would

some modification, convertation to splines:

import bpy
import mathutils
import math

# сам себе выдал задание:
# соединить точки двух объектов

# достаём объекты
obj1 = bpy.context.selected_objects[0]
obj2 = bpy.context.selected_objects[1]
mw1 = obj1.matrix_world
mw2 = obj2.matrix_world
mesh1 = obj1.data
mesh2 = obj2.data
#pol1 = mesh1.polygons
#pol2 = mesh2.polygons
#edg1 = mesh1.edges
#edg2 = mesh2.edges
ver1 = mesh1.vertices
ver2 = mesh2.vertices

def dis(x,y):
    vec = mathutils.Vector((x[0]-y[0], x[1]-y[1], x[2]-y[2]))
    return vec.length

def points(ver1,ver2):
    vert_new = []
    # choosing maximum vertex count in ver1/2, esteblsh vert2 - mincount of vertex
    if len(ver1) > len(ver2):
        inverc = False
        vert1 = ver1
        mworld1 = mw1
        vert2 = ver2
        mworld2 = mw2
        inverc = True
        vert1 = ver2
        mworld1 = mw2
        vert2 = ver1
        mworld2 = mw1
    # append new verts in new obj
    for v in vert2:
        v2 = mworld2 * v.co
        v1 = mworld1 * vert1[v.index].co
        if inverc == True:
            m1 = mworld2.translation
            m2 = mworld2.translation
            m1 = mworld1.translation
            m2 = mworld1.translation
        vert_new.append(v2 - m2)
        vert_new.append(v1 - m1)
    return vert_new

def edges(vert_new):
    edges_new = []
    i = -2
    for v in vert_new:
        # dis(vert_new[i],vert_new[i+1]) < 10 and 
        if i > -1 and i < (len(vert_new)):
            edges_new.append((i,i + 1))
        i += 2
    return edges_new

def name():
    return 'slurm_' + str(obj1.name) + '_' + str(obj2.name)

def mk_me(name):
    me = bpy.data.meshes.new(name+'Mesh')
    return me

def mk_ob(mesh,name):
    loc = mw1.translation.to_tuple()
    ob = bpy.data.objects.new(name, mesh)
    ob.location = loc
    ob.show_name = True
    return ob

def def_me(mesh):
    ver = points(ver1,ver2)
    edg = edges(ver)
    mesh.from_pydata(ver, edg, [])

def main():
    nam = name()
    me = mk_me(nam)
    ob = mk_ob(me,nam)

if __name__ == "__main__":

For 8 march I prepared compliment script. If you have not words to express your delight about some woman, can use this script. Only thing - it is in Russian, but you can change dictionary manually.

# -*- coding: utf-8 -*-
# Copyright 2013 Городецкий
# Генератор комплиментов
# Licensed GPL 3.0
# http://nikitronn.narod.ru/
# Python 3,3

import sys
import codecs
import random

def w(a):
  return random.choice(a)

def main():
  if len(sys.argv) != 1:
    print ('чё за базар? командуй и всё!')
  a1 = ['Ты']
  a2 = ['так', "очень", "офигенски", "просто", 'невероятно', 'супер', 'безумно']
  a3 = ['круто','потрясно','вкусно','улётно','клёво','прелестно','замечательно']
  a4 = ['выглядишь','пахнешь','целуешься','печёшь пирожки','двигаешься','танцуешь','готовишь','поёшь','смеёшься']
  a5 = ['пупсик','дорогая','милая','солнце','зайка','как всегда']
  compliment = (str(w(a1))+' '+ str(w(a2))+ ' '+ str(w(a3))+ ' '+ str(w(a4)) + ','+ ' '+ str(w(a5)) + '!')
  print (compliment)

if __name__ == '__main__':

Hi nikitron,
really nice job you did there. Maybe you could make a little tutorial on how to use your script ?
anyway, i wish you all the best and will be following :slight_smile:

Good idea, will make tutor and improve scripts on free time

Some video tutorial about this. but it is somthing wrong with video from 2 minute. I’ll remake it later.
some shit happening in KAZAM, i hate it!!! How can it make so spoiled result?!

Hi there - I am a long time Rhino user and I am delighted to see that you try to bring some grasshopper functionality into Blender. I wish you all good luck with that. On a polygon level I think this could be quite useful. One can still use T-Splines to convert SDS polys to NURBS patches in Rhino.

Sadly Blender NURBS seems to be out of dev time now. I started a donation website 2008 but it looks it was always low on the priority. There to be honest were more important parts like BMesh and Cycles to get attention.

But I would be happy in case Blender NURBS at least would get the same level as Maya Nurbs have. Thats enough for most modelers here and specifically also for applications like Grasshopper.

Looking forward to this to mature more!

Thanks for answer. Yes, NURBS is most dependance I cannot walk though. For now i try to make scheme: emptyes(as dots) - splines - lofted mesh. It is hard. Python very slow!!!
But Rhino with GH is huge construction, if count addones to GH and addones to addones to GH for Rhino!!! I tired to install all this stuff, beside this my Windows run on virtusl mashine in Ubuntu. You can imagin my dissapointment. So, my Napoleon’s plans seems to be limited by NURBs, my time and python.

http://www.ia.arch.ethz.ch/2012-03_parametric-models-with-drivers/There is something based on drivers.
Newertheless i go on.

Here are some renovations, I cooperated with Alexander Nedovizin, he made some useability, but not finished yet. And some fixes of couple bugs. Now it will include nodes!!! It’s amazing, isn’t it?

Look at my new spreading script.

it is animated gif, you can see yourself how it works

Your vid looks very cool! A bit techy but definitely very interesting !

Hi Nikitron,
sounds really interesting, but where can we find the script ?

Little patience, I prepare presentation for blendernation now, in september i’ll share script. We made much work on it.