Shimmer Sheep
An IOTA Shimmer NFT Project
Shimmer Sheep is a PFP NFT project to be released on IOTA's Shimmer network. It uses a novel approach to generate a large number of individual 3D characters.
Here are a few examples of what the algorithm can create:









The average PFP project uses a kind of "brute force" approach to combine a number of pre-drawn elements with each other. This has the disadvantage that many NFT projects look a bit similar and generic, because an element is always static - it shows up with the same color, at the same position.
The Shimmer Sheep algorithm is much more flexible and allows for higher levels of customization by scripting the randomization right within the 3D app.

Full size sheep (1000 x 1000 pixel)
It all starts with a basic decison tree. For example, should a sheep have hair/wool, or wear a shirt? If hair, then should the hair have a simple color or an image? If image, shoud it be a pattern or a logo? If pattern, it will pick a random image from a folder.
In addition, hair parameters like length, curl, and clumping are modified every time, so that each sheep receives its individual "hair style".
In addition, hair parameters like length, curl, and clumping are modified every time, so that each sheep receives its individual "hair style".
As a next step, the algorithm needs to pick one or more "props" - hats, glasses, shoes:


Sheep with few props vs. fully equipped sheep
The probability of a certain prop appearing can be controlled by grouping the objects and arranging them hierarchically within the 3D app.
A random number is mapped via a curve. If the curve is exponential, it makes it more likely for objects higher up in the hierarchy to appear. A curve that flattens in the middle would favor the objects in the middle of the hierarchy. The scene is set up so that more complex objects (full masks or a baby sheep) are much less likely to be picked than the average baseball cap.
A random number is mapped via a curve. If the curve is exponential, it makes it more likely for objects higher up in the hierarchy to appear. A curve that flattens in the middle would favor the objects in the middle of the hierarchy. The scene is set up so that more complex objects (full masks or a baby sheep) are much less likely to be picked than the average baseball cap.
On top of that, each prop can have its own subset of randomized parameters - a shoe can change its color, a cap can sit at a random angle, and so on.

An exponential curve will favor objects with lower numbers…

…while a curve with a flat center will prefer the objects in the middle of the list.
One drawback of this method is the occurrence of collisions. Sometimes the algorithm picks two objects that don't play well with each other, for example a giant pair of eye glasses that will intersect the bill of a cap. These cases need to be taken into account by scripting an exception that hides either one of the objects.
In addition to props appearing, the sheep are further individualized by giving them random facial expression, random head turns, jaw openings, a random body texture and so on. All parameters are completely random but are mapped to fall within a certain range. Again, care must be taken to avoid impossible situations - opening the jaw too wide while wearing a covid mask might lead to strange results.
There will be 10,000 Shimmer Sheep - which is only a tiny fraction of all combinations possible.