Looking for feedback on Pattern Toolkit package

Hello everyone,

We made a new package called the pattern toolkit, and are looking for some feedback. An alpha has been published to the package manager. (As an alpha, expect the nodes to change, as we develop further and respond to feedback)

The goal of the pattern toolkit is to simplify creation of some common patterns. It also allows driving the pattern using images, and placing the pattern on surfaces. Over time we hope to make it simpler to get started with the pattern toolkit.

There is a sample file in the package. The basic flow is to:

  1. Choose the overall pattern layout (grid, alternating grid, hex grid, spiral, etc.)
  2. Use parameters / images to scale and rotate each element
  3. Optionally map onto a single surface or project across multiple surfaces
  4. Output to curves or other geometry

Here’s an example of it being used with Alias (computation time edited out for brevity):

At a lower level, the pattern toolkit creates a set of PatternPoints on the [0…1],[0…1] UV square, which maps nicely to images and surfaces. Each PatternPoint contains a CoordinateSystem, and geometry is generated in the range [-0.5, 0.5],[-0.5, 0.5] for each CoordinateSystem.

Please let me know what you think, and if there’s anything that’s missing, confusing, or weird. :slight_smile:


There sample files for this package?

Yes please, add some sample files to figure out how it works…

I tried to put some in the extras folder in the package, but I’m not sure if that worked. Either way, here is a demo file.pattern_toolkit_demo_1.dyn (38.9 KB)


Hi tomfinnigan:
I finally got time to test your package, and here is my feed back.
The package seems to be solid and cleverly designed, and it cover almost everything about patterns, but there is few suggestion and possible issues;

number 1: The way determining number of U and V number of the grid, is only “integer” allowed as input. I think it will be better to make it as sequence of number that goes from 0 to 1. That would allow for creating the grid at unequal distances along U or V direction.

number 2: The method used to put the pattern points on the space can cause problems. The center of the grid is not dropped at the origin point, rather its corner is on origin, that would cause problems when rotating the coordinate system, as it will be shifted outside the geometry. (look pic 1)
If the center point of the grid is matching to origin, it would be more practical.

number 3: when using “pattern.point.to.geometry” node and making a solid or 3d surface as “object” to be populated on the grid, it become squashed. I don’t know is that a bug or it just it does not support 3d objects!.

number 4: It is about the concept of “pattern points”, i guess it is just 4 points groups that hypothetically forming the rectangular unit of the grid. I am wondering why don’t you open that concept up to be workable with other dynamo nodes. for example, it would be very handy if i can convert (back and forth) any grid of points listed in 4 pairs and can form a closed rectangle to “pattern points” so i would proceed with your scripts, or i can edit those “pattern points” freely in full compatibility. I think if you remove that constraint, it would be just a powerful move.

Hi Maxy, thanks for the detailed feedback. My comments below.

number 1: I might not be understanding this one completely. I think if you wanted non-integer numbers to overlap the 0…1 range, you could scale the CoordinateSystem going into the pattern generator?

number 2: Yes, this is a good point. In order to rotate the space, you need to rotate around 0.5,0.5. This is a bit weird, but it’s to match surface parameterizations in Dynamo, which all have a domain of [0…1],[0…1]. If we used a different parameterization, then if you wanted to base size off of, say, surface normal, then you’d need to be constantly remapping. It might make sense to make a convenience function to more easily rotate/scale coordinate systems around 0.5,0.5 though.

number 3: This is a bug - it should be able to handle 3d objects, but when we’re mapping to a surface we weren’t paying attention to the z scale. I’ll get this fixed, thanks :slight_smile:

number 4: That’s a good idea. Right now the PatternPoint is just a thin wrapper around CoordinateSystem (I am planning to add a concept of connectivity/topology later on). There are nodes to pull out and/or replace the CoordinateSystem. I think having a convenience method for creating them with 4 points is a good one, I’ll have to see how doable that is. Right now none of the nodes we’ve used produce anything with skew, so I need to check how difficult that is.


Hi tomfinnigan,

This is an awesome tool and I found it as a great way to introduce people to dynamo and get them to create something from the get go. I’ve had great success creating interesting patterns that would be difficult to create otherwise.

One issue I haven’t been able to figure out is that when I map 3d objects to a surface it is ok but as soon as I try to add a rotation in a particular area then it will also scale when I do not want it to. Is there a way around this?

Thank you,


Nice tool.
I find useful but also strange the concept of pattern points as it doesn’t leave me the freedom to integrate it into my scripts.
It would be good to have the possibility to select single points in the pattern.