Architects and designers have been explored the Image Sampler script for many years in parametric design. This script is simple and effective, and its purpose goes beyond architectural design. In architectural design, this script is often used for creating customised facade panels produced through digital fabrication using CNC machines.
In this example, we reproduce an image composed of circles that could be fabricated as a customised perforated facade panel.
We can make this script in a few steps.
First, we load an image of a сверчок or Sverchok (cricket), which is our adorable mascot. We go to Blender and change the Editor Type
to Image Editor
, then choose the Sverchok image that you can download here.
Then we load the image in Sverchok using the Image
node (Generator -> Image
).
Now we need to define the image size in Sverchok. This image has 550x400 pixels. We need to use a size proportional to the original image. For instance, we can do that by dividing the original size by a given number. We use two Scalar Math
nodes, one for the Xvec
input with the number 550
, and another for the Yvec
input with the number 400
, respectively, image width and height. Then, we use A Number
(Number -> A Number
) as a divisor with the number 6
.
We can use a Viewer Draw
(Viz -> Viewer Draw
) to visualise the points. Also, we use A Number
with the value 0.06
to define Xstep
and Ystep
.
Then, we use Vector Out
(Vector -> Vector Out
) and Vector In
(Vector -> Vector In
) to deconstruct the vertices in the corresponding values, X
, Y
, Z
. Because in the next step, we are going to remap the values for Z
.
We remap the Z
value using Map Range
(Number -> Map Range
) checking the option List Limits
, defining New Min
as 0.01
and New Max
as 0.02
. Then, we use Matrix In
using X
and Y
from Vector In
as the input Location
and Z
output as input Scale
.
We can finalise our image using a Matrix Apply
(Matrix -> Matrix Apply
) node with a Circle
node as input. Then connect the output from Matrix In
into the input Matrix
from Matrix Apply
. To visualise, use another Viewer Draw
. Easy!
Do not forget to make the group.
It is a good idea to create a panel defining its borders. This border makes it possible to fabricate in a Laser Cutter Machine.
First, we create a Plane
(Generator -> Plane
), using the image size from Scalar Math
output for both X
and Y
as input of SizeX
and SizeY
. Then, we use A Viewer Draw
node to visualise it.
To resize the panel, we multiply its size by 0.06
. It is the same number used for the space between vertices.
To make it parametrically, we connect it to the same A Number
node that defines the space between points into the Scalar Math
node with the Multiply
for SizeX
and SizeY
inputs.
Now we need to centralise the plane within the circles. To do that, we use a Scalar Math
node with the operator Negate
from the A Number
output that defines the space between points to make it a negative value. Then, we use a Matrix In
node using the Location
parameter with the Negate
output, connecting it to the Plane
into the Matrix
input.
To finalise the panel, we can regularise the panel borders, adding a value to both X
and Y
plane size from the node Scalar Math (DIV)
. We can use the value 0.3
with an A Number
node.
Finally, we create a group with the panel nodes.
Now, we can save the panel in an SVG file, making it possible to send it to a laser cutter machine, for example.
First, we create a Path SVG
(SVG -> Path SVG
) node with the circles from the Matrix Apply
output. We click on Fill/Stroke
to create a Fill/Stroke
node. Then, we change the Fill
parameter to None
and Stroke
parameter to Flat
, defining the Stroke Width
to 0.01
.
Then, we use the Mesh SVG
(SVG -> Mesh SVG
) node to create the panel lines, connecting the vertices
and edges
from the Plane
output. We click on Fill/Stroke
to create a Fill/Stroke
node. Then, we change the Fill
parameter to None
and Stroke
parameter to Flat
, defining the Stroke Width
to 0.01
.
We create two groups of SVG lines, one for cutting
with the circles and the other with sheet
with the panel. We use SVG Group
(SVG -> SVG Group
) to make it.
We use a List Join
(List -> List Main -> List Join
) node to create a single list with both groups, then SVG Document
to export it to SVG. We define an A4 landscape standard 297x210 with the Scale
parameter as 50
. Then, we save the SVG by clicking on Folder Path
, checking Live Update
, clicking on Open Server
to open the live preview.
We can centralise the SVG by changing the Offset
value from the Group SVG
input. Then, we can click on the Write
option in the SVG Document
node to save it into a file.
Do not forget to make the final group.
Now we can open it in Inkscape. =)
You can download the blend file here.
Have fun.