How to create parametric panels with Blender and Sverchok by modulating and superimposing waves and formulas.
In this tutorial we will see how we can use Sverchok to produce interesting parametric panels by superimposing different waves with a variety of techniques. The principle is similar to the one that we have seen in the raster voronoi tutorial: for each vertex in a subdivided plane we will calculate a new z value.
Start by creating a plane and plugging it to a Viewer BMesh. Add a Subdivision surface modifier to the newly created mesh.
We want to modify the Z values of the plane, for this we will use s Vector out / Vector in combination.
Now we can take the X and Y values and use them to assign a new height to the vertices. Here is a simple example with a sine wave:
We can group the last nodes and create a Monad:
Now we can start to have fun by adding different waves on top of each other. To achieve this with few nodes you can follow this approach, using an Exec Node Mode and paying attention to pack the values before and after. In general, in Sverchok, when you get an error in a node it is a good idea to inspect the values that you have passed with a Viewer Text and verify that they are in the expected format.
Now you can expand this system and create new monads to plug with the others. Here is a rotation matrix monad for example:
Try yourself now, create something that you can plug with the other monads to get better and better results with your parametric panels. How about a Frequency Modulation and an Amplitude Modulation monad for example? Or adding a triangle or sawtooth wave to you kit?
Hi, thank you this is great. Can you explain the exec node mode a little more. I am new to this and do not understand how that works
Hi dale, thank you! The exec node mode is a node that you find under the “Number” category and that lets you execute some python code. It takes up two three lists (see https://www.w3schools.com/python/python_lists.asp) -‘V1’, ‘V2′,’V3’ – and it outputs another list named ‘out’. Those lists can contain any object and then it’s up to you to manipulate them as you want. To use the node you should have a minimum knowledge of python though. If you want me to go in the details of what I actually wrote inside the exec node mod in this tutorial let me know and I will do it. Bests.
Thank you for the reply. I am very new with python and don’t have a very good understanding. If you could explain what you did for that one it would be very helpful.
Ok in ‘List Join’ I provide two lists of numbers (the Z values) in this form (note that they have the same number of elements, four):
and I get as a result one list with the two previous lists as elements:
Now I want to get a new list with the sum of the individual elements of the single lists:
In the tutorial, in the ‘Exec_node_mod’, I obtained this by “manually” looping though each element of each list and adding their sum to the ‘total_z_vertex’ variable and appending then this result to the ‘out.’ list. The ‘Exec_node_mod’ produced [4,4,9,7], so I had to pass it though another ‘List join’ node to get [[4,4,9,7]]. You should look at the Python documentation to fully understand the syntax and the functions (for…in, range(), append() ecc.)
However I found out that what I wrote in the tutorial is not efficient and that I can get the same with less code. In fact, I only have to write this in the ‘Exec_node_mod’:
out.append([sum(i) for i in zip(*V1)])
without the need to go to the second ‘List join’ node. See this for the explanation (the first answer) https://stackoverflow.com/questions/13783315/sum-of-list-of-lists-returns-sum-list
Hope this helped!