top of page

How to create textured surfaces

Updated: Apr 11, 2022

NOTE: this post was written with the old version of Slice-Up in mind. The new Slice-Up beta condense the different transformation modules in a single module called Transform. All other information contained in this post are still useful and relevant to the new Slice-Up Beta

In previous post we learned about transformation modules and how hey can be applied in order to shape an object.

In this tutorial I will show how transformations can be used in combination with pathCombine module in order to create textured surfaces.


The concept is rather simple: we will create design variations using a transformation module, then we mix it up with the original design using the pathCombine module.

Concretely, the full process happen in three steps:

  1. Define a starting object: for the purpose of this tutorial, I designed a simple pentagonal vase using the vaseShaper module.

  2. Create design variations: for the purpose of this tutorial, three different variations have been designed using the translatePath module.

  3. Mix it up: using the pathCombine module, I mixed up the original design from step 1, together with the design variations defined in step 2.

The original design (red) is mixed up with different design variation in order to generate different textures (grey, white, blue)

Next, let's examine this three steps in detail.

Define a starting object

This step is quite straightforward and we will not go into details. Just remember that in Slice-Up print path can be made using closed lines (e.g. vases) or open lines (e.g. wall or panels). In this tutorial I am using a vase, however the same principles explained here will apply to wall/panels type of print.

Create design variations

First, let's keep in mind that our objective here is that of texturing the surface without changing the overall geometry. For this reason, we generally need to set our parameters to pretty small values. In order to find a suitable value for the transformation parameters you need to take in account your hardware and print setting. Sometimes it can be useful to run a couple print test to see what works.

In this tutorial I choose to generate three different variations by defining three different rules (or parameter configurations) within the translate module. Since on my printer I use a 1.2mm nozzle (which works well with 1.4mm layer width and 0.8 layer height), I figured that I need a translation amplitude of maximum 1mm. This way I am sure that each layer will sit adequately on the top of each other once I mix up the different designs.

Following are the configuration parameters I used for the three different variations:

Variation 1 (white)

Amplitude: 1mm

Direction: 0 to 360 degrees, linear

Variation 2 (grey)

Amplitude: 1mm

Direction: 0 to 360 degrees, cos(x)

Variant 3 (blue)

Amplitude: 0 to 1mm, x^2

Direction: 0 to 360 degrees, linear

Mix it up

The pathCombine module allows you to mix up to three different designs on a layer by layer basis.

In this tutorial, I have been using the same combine logic (0-0-1-1) to combine the original design with each design variation separatly. Each resulting object is then built the following way: two layers of the original design (0-0-1-1), two layers of the design variation (0-0-1-1), two layers of the original design (0-0-1-1), two layers of the design variation (0-0-1-1) , and so on until the top.

A good way to visualize the result in Slice-Up is the following: set a side view, and focus on the seam points.

Combine Design Variation 1

In this example the amplitude of the translation is fixed (1mm), while the direction gradually changes from 0 degrees (base layer) to 360 degrees (top layer). As the translation direction rotates, the surface pattern will have maximum visibility whenever the polygon face is perpendicular to the translation.

The result of combining the original design with design variation 1

Combine Design Variation 2

This variation also uses a fixed amplitude of 1mm, but the direction varies in between 0 and 360 degrees, following the slope of the cosine equation. You can see the sinusoidal wave reflected in the seam points. Translation direction will be the same (equal to 0 or minus 360) every time the sinusoidal waves peaks at -1 or 1, while its equals to 180 every time the sinusoidal wave cross the x axis.

The result of combining the original design with design variation 2

Combine Design Variation3

This variant adds a further layer of complexity. In fact, the direction keeps changing linearly in between 0 and 360 degrees. Simultaneously, the amplitude changes from 0 to 1 mm following a parabolic equation (x^2). This result in the amplitude being 0 at middle layer, while exponentially increase to 1mm at the first and last layer.

The result of combining the original design with design variation 3


The key idea is that, by designing subtle design variations and combining them with the original design, it is possible to create textures along the surface object.

Different design object and different transformation modules open up infinite possibilities on how to control and organize surface textures. In this tutorial, we have seen how varying the direction of a translation can creates textures that vary along with the orientation of a polygon face (example 1 and 2). We have also have seen how varying the amplitude of a translation can gradually make a texture disappear at designed areas (example 3).

Using different modules will lead to different options: for example a rotation could produce a texture just around the corners of a polygon, while a scale operation could produce a symmetric result all around. You could even mix up three different variations for even more complex surface texture.

As always in Slice-Up, possibilities are endless, and our suggestion is that of starting simple and exploring thoughtfully. You can always add a further layer of complexity once you get a grasp of it.

Feel free to ask question as needed in our discourse forum.

171 views0 comments

Recent Posts

See All


bottom of page